webpack系統(tǒng)學習

      網(wǎng)友投稿 689 2022-05-29

      本質(zhì)上,webpack?是一個現(xiàn)代 JavaScript 應用程序的靜態(tài)模塊打包器(module bundler)。當 webpack 處理應用程序時,它會遞歸地構(gòu)建一個依賴關(guān)系圖(dependency graph),其中包含應用程序需要的每個模塊,然后將所有這些模塊打包成一個或多個?bundle。

      webpack 4.0 的四個核心概念

      入口(entry)

      輸出(output)

      loader

      插件(plugins)

      入口(entry)

      是指webpack開始分析文件的起點,可以配置多個,以適配多頁面

      // 單頁面配置

      module.exports = {

      entry: './path/to/my/entry/file.js'

      };

      // 多頁面配置

      moudle.exports = {

      entry: {

      app: './src/app.js'

      vendors: './src/verdors.js'

      }

      }

      在多頁面應用中,每當頁面跳轉(zhuǎn)時服務器會為你獲取一個新的html,頁面重新加載新文檔,并且資源被重新下載,然而,這給我們特殊的機會去做更多的事情

      使用CommonsChunkPlugin 為每個頁面間的應用程序共享代碼創(chuàng)建bundle,由于入口起點增多,多頁應用能夠復用入口起點之前的大量代碼/模塊,從而可以極大地從這些技術(shù)中收益

      出口 (output)

      webpack中使用output屬性來控制如何向硬盤寫入編譯文件,即使多個入口,但最后的輸出配置只能有一個

      output的屬性最簡單的是

      filename 用于輸出文件的文件名

      目標輸出目錄path的絕對路徑

      const config = {

      output:{

      filename: 'bundle.js',

      path: '/home/proj/public/assets'

      }

      }

      module.exports = config

      此配置是將單獨的bundle.js 文件輸出到/home/proj/public/asstes/ 目錄中

      多個入口起點 使用占位符如下面的?[name]

      webpack系統(tǒng)學習

      {

      entry: {

      app:'./src/app.js',

      search: './src/search.js'

      },

      output: {

      filename: '[name].js',

      path: __dirname + '/dist'

      }

      }

      使用cdn和資源hash的復雜示例

      output: {

      path: "/home/proj/cdn/assets/[hash]",

      publicPath: "http://cdn.example.com/assets/[hash]/"

      }

      loader

      loader 用于對模塊的源代碼進行轉(zhuǎn)換。?loader 可以使你在?import?或"加載"模塊時預處理文件

      loader運行你自定義擴展項目中的文件,使用對應的loade編譯成js, css, html

      loader配置在rules數(shù)組數(shù)組中

      其中每一條記錄,test表示正則匹配的文件范圍

      loader表示loader的名稱

      loader的配置有三種

      配置: 在webpack.config.js 文件中制定loader

      內(nèi)聯(lián): 在每個import語句中顯式指定loader

      CLI:在shell命令中指定它們

      配置的案例

      module:{

      rules: [

      {

      test: /\.css$/,

      use: [

      {loader: 'style-loader'},

      {loader: 'css-loader',

      {

      options: {modules:true}

      }

      }

      ]

      }

      ]

      }

      內(nèi)聯(lián)

      import Styles from 'style-loader!css-loader?modules!./styles.css';

      CLI

      webpack --module-bind jade-loader --module-bind 'css=style-loader!css-loader'

      loader 特性

      loader支持鏈式傳遞, 一個文件可能會被多個loader處理,前一個loader返回值給下一個loader,在最后一個loader

      ,返回webpack所預期的JavaScript

      loader可以是異步的,也可以是同步的

      loader運行在Node.js中,并且能夠執(zhí)行任何可能的操作

      loader接受查詢參數(shù),用于對loader傳遞配置

      loader也能夠使用options對象進行配置

      webpack

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:RISELab 分布式應用框架Ray項目介紹
      下一篇:ModelArts問題索引_old
      相關(guān)文章
      亚洲国产精品无码成人片久久| 亚洲精品午夜国产VA久久成人| 日本亚洲免费无线码 | 亚洲人成在线精品| 国产成人99久久亚洲综合精品| 亚洲码一区二区三区| 国产偷国产偷亚洲清高动态图 | 亚洲人成网男女大片在线播放| 亚洲一区无码中文字幕| 亚洲国产精品ⅴa在线观看| 久久久亚洲精品无码| 亚洲乱码在线播放| 亚洲AV色吊丝无码| 亚洲无mate20pro麻豆| 67194在线午夜亚洲| 亚洲综合欧美色五月俺也去| 亚洲电影中文字幕| 国产亚洲精品美女久久久久| 亚洲五月综合缴情婷婷| 亚洲无吗在线视频| 亚洲精品亚洲人成在线播放| 亚洲乱码一二三四区乱码| 亚洲国产日韩视频观看| 亚洲欧洲专线一区| 亚洲另类小说图片| 337p日本欧洲亚洲大胆裸体艺术| 亚洲精品第一国产综合境外资源 | 亚洲成年人在线观看| 亚洲精品无码不卡| 亚洲性无码av在线| 亚洲AV无码专区亚洲AV伊甸园| 国产av无码专区亚洲av果冻传媒 | 亚洲精品123区在线观看| 亚洲精品又粗又大又爽A片| 国产精品亚洲综合天堂夜夜| 亚洲人午夜射精精品日韩| 亚洲6080yy久久无码产自国产 | 亚洲国产精品日韩在线| 亚洲综合精品成人| 国产综合成人亚洲区| 中文字幕亚洲乱码熟女一区二区 |