国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

前端路由&webpack基礎(chǔ)配置詳解

2024-05-06 16:52:00
字體:
供稿:網(wǎng)友

1. SPA

SPA是單頁面應(yīng)用程序(single page application),通俗來講就是在一個(gè)頁面開發(fā)一個(gè)完整網(wǎng)站的功能

優(yōu)點(diǎn):

  • 不需要跳轉(zhuǎn)頁面,局部更新頁面內(nèi)容
  • 前端組件化

缺點(diǎn):

  • 首屏加載慢(第一次訪問慢,按需加載)
  • 開發(fā)復(fù)雜(所有的功能都在一個(gè)頁面完成,可使用webpack模塊化開發(fā))
  • 不利于SEO搜索引擎優(yōu)化(使用服務(wù)端渲染)

2. 前端路由:

  • 根據(jù)不用的URL標(biāo)識符渲染不同的組件(不同的網(wǎng)頁內(nèi)容)
  • 路由實(shí)現(xiàn)原理:
    • hash哈希(錨點(diǎn)) 通過hashchange監(jiān)聽URL標(biāo)識符改變,顯示不同的內(nèi)容
<ul>  <li><a href="#login" rel="external nofollow" >魯班</a></li>  <li><a href="#home" rel="external nofollow" >提莫</a></li>  <li><a href="#list" rel="external nofollow" >劍姬</a></li></ul><div id="app"></div><script>// 監(jiān)聽hash值的不用,讓頁面顯示不同的內(nèi)容window.onhashchange = function() {  let app = document.getElementById('app');  // 獲取hash值  let hash = location.hash.substr(1);  // 根據(jù)標(biāo)識展現(xiàn)不同的內(nèi)容 局部更新  switch(hash) {    case 'login':      app.innerHTML = '托馬斯回旋...';        break;    case 'home':      app.innerHTML = '正在路上...';      break;    case 'list':      app.innerHTML = '華爾茲...';      break;    }  }</script>

3. 前端模塊化

  • CommonJS
    • 模塊導(dǎo)出
      • module.exports
      • exports
    • 模塊導(dǎo)入
      • require()
  • ES6 Module
    • 模塊導(dǎo)出
      • export
    • 模塊導(dǎo)入
      • import

4. webpack基礎(chǔ)配置

初始化項(xiàng)目

npm init -y

安裝依賴包

npm install webpack -Dnpm install webpack-cli -D

通過webpack命令打包文件: 模塊化轉(zhuǎn)換,代碼壓縮合并

webpack.config.js

const path = require('path');// 下包并導(dǎo)入插件 npm i html-webpack-plugin -Dconst HtmlWebpackPlugin = require('html-webpack-plugin');// npm i clean-webpack-plugin -D 清除目錄中的內(nèi)容const { CleanWebpackPlugin } = require('clean-webpack-plugin');module.exports = {// 配置打包選項(xiàng) development開發(fā)環(huán)境mode: 'development', // production 生產(chǎn)環(huán)境// 指定入口文件:要打包的文件entry: './src/js/index.js',// 指定輸出文件:打包之后的文件output: {  path: path.resolve(__dirname, 'dist'),  filename: 'main.min.js'},// 配置資源的加載器 loadermodule: {  rules: [  // 配置js的加載器(把ES6轉(zhuǎn)化為ES3/5代碼)  {    test: //.jsx?$/,    loader: 'babel-loader',    //打包除這個(gè)文件之外的文件    exclude: path.join(__dirname, './node_modules'),    //打包包括的文件    include: path.join(__dirname, './src')  },  // 配置css的加載器  {    // 匹配.css結(jié)尾的文件    test: //.css$/,    // 配置css文件的加載器,處理順序:從右向左    use: ['style-loader', 'css-loader']  },  // 配置less的加載器  {    test: //.less$/,    use: ['style-loader', 'css-loader', 'less-loader']  }  ]},// 配置插件plugins: [  new CleanWebpackPlugin(),  // 動態(tài)生成html  new HtmlWebpackPlugin({  title: '測試標(biāo)題',  template: 'index.html'  })],// 配置實(shí)時(shí)預(yù)覽環(huán)境 devServer: {  contentBase: path.join(__dirname, 'dist'),  port: 5000}}

package.json文件配置

"scripts": {  "dev": "npx webpack-dev-server --open"}

5 .判斷如何配置webpack

  • 指定源文件加入到構(gòu)建流程中被webpack控制, 配置entry
  • 指定輸出文件的位置和名稱,配置output
  • 自定義解析和轉(zhuǎn)換文件,配置module,通常是配置module.rules里的 Loader。(資源加載器)
  • 配置插件通過plugins進(jìn)行配置
  • 尋找依賴模塊時(shí),配置resolve

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗定市| 武平县| 水富县| 尼木县| 沂源县| 凤城市| 井陉县| 辛集市| 蓬溪县| 民勤县| 射洪县| 阳原县| 包头市| 遂宁市| 南阳市| 孝感市| 桃源县| 焉耆| 彭州市| 桂林市| 枣强县| 侯马市| 包头市| 鹤壁市| 额济纳旗| 大英县| 永昌县| 广饶县| 德安县| 武山县| 周至县| 孟津县| 资中县| 赤城县| 云龙县| 平度市| 满城县| 兴业县| 苍溪县| 谷城县| 天水市|