亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

淺談webpack 四個核心概念之Entry

2024-05-06 16:52:03
字體:
來源:轉載
供稿:網友

因為webpack是基于nodejs的一款工具,所以在學習過程中涉及到的nodejs知識也會進行解釋進行發散性拓展。

webpack中文文檔

一、module.exports

module.exports = {     entry: './path/to/my/entry/file.js'  };

exports 變量是在模塊的文件級作用域內可用的,且在模塊執行之前賦值給 module.exports在nodejs中,提供了exports 和 require 兩個對象,其中 exports 是模塊公開的接口,require 用于從外部獲取一個模塊的接口,即所獲取模塊的 exports 對象。而在exports拋出的接口中,如果你希望你的模塊就想為一個特別的對象類型,請使用module.exports;如果希望模塊成為一個傳統的模塊實例,請使用exports.xx方法;module.exports才是真正的接口,exports只不過是它的一個輔助工具。最終返回給調用的是module.exports而不是exports。這里引用nodejs官網的一個 例子

function require(/* ... */) {     const module = { exports: {} };     ((module, exports) => {`請輸入代碼`     // 模塊代碼在這。在這個例子中,定義了一個函數。      function someFunc() {}      exports = someFunc;//也就是說你單獨給exports賦值時候exports不屬于module了是一個單獨的變量    // 此時,exports 不再是一個 module.exports 的快捷方式,    // 且這個模塊依然導出一個空的默認對象。      module.exports = someFunc;//這里導出的函數是掛在module里的所以會被導入    // 此時,該模塊導出 someFunc,而不是默認對象。   })(module, module.exports);   return module.exports;//這里是這句話的解釋 (最終返回給調用的是module.exports而不是exports)  }

二、entry

entry入口起點,entry所配置的文件路徑所指向的文件為項目的入口文件也就是內部依賴的開始會根據入口文件去逐層加載依賴。Chunk 和打包時入口文件配置有關如果 entry 是一個 string 或 array ,就只會生成一個 Chunk,這時 Chunk 的名稱是 main,如果 entry 是一個 object ,就可能會出現多個 Chunk,這時 Chunk 的名稱是 object 鍵值對里鍵的名稱。

entry接受三種類型值

1.單入口寫法 String 例:

  entry: './app/to/my/entry/file.js'  entry:{ main:"'./app/to/my/entry/file.js'"}

2.單入口數組寫法 Array例:

  entry:['./app/entry1', './app/entry2']

 在你想要多個依賴文件一起注入,并且將它們的依賴導向(graph)到一個“chunk”時,傳入數組的方式就很有用。也就是說合并了多個文件的依賴模塊。

3.對象語法Object例:

entry:{ a: './app/entry-a', b: ['./app/entry-b1', './app/entry-b2']}

分離第三方模塊和公共模塊

分離第三方模塊和webpack運行文件等類似公共模塊是為了避免加載等問價過大等待時間長的優化,當你不同的入口文件都依賴了相同的第三方模塊這時候需要把他們抽離出來。這里主要應用了entry的對象語法和CommonsChunkPlugin。實際應用舉例:

1.分離業務模塊和公共模塊(webpack文件,第三方模塊,自定義公共模塊)

const path = require("path");const webpack = require("webpack");const packagejson = require("./package.json");const config = {entry: {  first: './src/first.js',//引入了common.j和vue.js  second: './src/second.js',//引入了common.j和vue.js  vendor: Object.keys(packagejson.dependencies)//獲取生產環境依賴庫的  //模塊名稱,返回一個數組,這里涉及的是單入口數組寫法將多個依賴合并到一個chunk中  //在這里vue作為第三方庫會被合并},output: {  path: path.resolve(__dirname,'./dist'),  filename: '[name].js'},plugins: [  new webpack.optimize.CommonsChunkPlugin({    name: 'vendor',//指定已經存在的chunk這里指向的是vendor,    公共部分模塊都會合并到這個chunk名對應的文件,不指定默認生成name為commons的chunk。    filename: '[name].js'//抽離出公共部分的文件名  }),]}module.exports = config;

2.詳細分離業務模塊 第三方依賴 公共模塊 webpack運行文件

plugins: [//這一步把webpack運行文件抽離出來    new webpack.optimize.CommonsChunkPlugin({//先抽離所用的公共模塊      name: 'vendor',      filename: '[name].js'    }),    new webpack.optimize.CommonsChunkPlugin({//再指定vendor從中抽離webpack運行文件      name: 'runtime',      filename: '[name].js',      chunks: ['vendor']    }),     new webpack.optimize.CommonsChunkPlugin({    name: ['vendor','runtime'],    filename: '[name].js',    minChunks: Infinity//只有當入口文件(entry chunks) >= 3 才生效,    //用來在第三方庫中分離自定義的公共模塊    }),    new webpack.optimize.CommonsChunkPlugin({    name: 'common',    filename: '[name].js',    minChunks:2,//默認為2,意思是模塊被多少個chunk引用才被抽離    //由于common被 first 和second 引用 所以會被抽離    chunks: ['first','second']//從first.js和second.js中抽取commons chunk    }),  ]

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品 欧美在线| 亚洲色图35p| 亚洲欧洲偷拍精品| 日韩欧美黄色动漫| 在线电影av不卡网址| 欧美精品18videos性欧美| 丁香五六月婷婷久久激情| 久久久伊人欧美| 国产精品av网站| 中文字幕久久精品| 一区二区三区视频免费在线观看| 欧美野外猛男的大粗鳮| 亚洲综合精品一区二区| 久久精品国产亚洲| 韩国国内大量揄拍精品视频| 中文字幕亚洲无线码a| 欧美精品激情在线| 欧美日韩中文字幕在线| 亚洲第一视频网| 欧美电影免费观看高清完整| 欧美三级欧美成人高清www| 日韩中文字幕国产| 国产精品精品国产| 91最新国产视频| 欧美性猛交xxxx久久久| 国产精品99久久久久久www| 中文字幕最新精品| 欧美老妇交乱视频| 亚洲精品中文字| 国产精品老牛影院在线观看| 久久国产精品首页| 永久555www成人免费| 超碰91人人草人人干| 日韩在线观看免费全集电视剧网站| 92裸体在线视频网站| 7777kkkk成人观看| 久久精品91久久香蕉加勒比| 国产欧美在线视频| 国产一区二区在线免费视频| 91av在线精品| 66m—66摸成人免费视频| 亚洲女人天堂色在线7777| 亚洲午夜av电影| 日韩电影在线观看永久视频免费网站| 国产综合在线观看视频| 久久最新资源网| 狠狠色噜噜狠狠狠狠97| 国产日韩精品综合网站| 亚洲精品av在线| 日本成人激情视频| 欧美国产精品va在线观看| 色偷偷91综合久久噜噜| 5278欧美一区二区三区| 欧美主播福利视频| 亚洲91精品在线观看| 亚洲精品久久久久| 在线播放日韩欧美| 国产精品电影久久久久电影网| 日韩在线视频线视频免费网站| 日本三级韩国三级久久| 欧美午夜激情视频| 日韩精品高清在线观看| 91天堂在线观看| 亚洲香蕉成视频在线观看| 三级精品视频久久久久| 91精品国产高清久久久久久久久| 久久久精品网站| 自拍偷拍亚洲精品| 日韩美女在线观看| 亚洲一区二区免费| 国内精品小视频在线观看| 欧美在线性视频| 亚洲欧美综合区自拍另类| 亚洲精品网址在线观看| 国产成人福利网站| 国内精品久久久久影院 日本资源| 国产成人精品综合| 欧美午夜激情在线| 欧美裸体男粗大视频在线观看| 国产精品欧美一区二区三区奶水| 亚洲一区二区三区香蕉| 亚洲人成77777在线观看网| 欧美孕妇孕交黑巨大网站| 久久久久在线观看| 一区二区三区在线播放欧美| 69av在线视频| 成人欧美一区二区三区在线| 国产精品午夜国产小视频| 日韩av一区在线观看| 国产精品精品视频| 久久亚洲国产精品| 国产精品第一第二| 国内成人精品一区| 欧美与黑人午夜性猛交久久久| 欧美性xxxx极品hd满灌| 亚洲精品国产综合区久久久久久久| 欧美视频一二三| 久久中文精品视频| 国产日产久久高清欧美一区| 欧美激情a∨在线视频播放| 国产成+人+综合+亚洲欧洲| 蜜臀久久99精品久久久久久宅男| 欧美性理论片在线观看片免费| 日韩三级影视基地| 欧美寡妇偷汉性猛交| 久久网福利资源网站| 日韩欧美在线视频观看| 91探花福利精品国产自产在线| 97香蕉超级碰碰久久免费软件| 国产精品成av人在线视午夜片| 日韩理论片久久| 最近中文字幕2019免费| 国产精品久久久久久久久久三级| 久久久久久久久亚洲| 日韩福利视频在线观看| 欧美劲爆第一页| 久久久国产成人精品| 欧美精品手机在线| 九九精品视频在线观看| 亚洲精品美女久久久久| 亚洲人成网7777777国产| 久久在线精品视频| 少妇高潮久久77777| 欧美日韩福利在线观看| 欧美日韩免费区域视频在线观看| 中日韩美女免费视频网站在线观看| 亚洲精品xxxx| 成人两性免费视频| 国产精品一区二区三| 青青a在线精品免费观看| 亚洲偷熟乱区亚洲香蕉av| 51午夜精品视频| 欧美日韩国产成人在线| 国产日韩综合一区二区性色av| 久久网福利资源网站| 91美女高潮出水| 91精品国产高清自在线看超| 69影院欧美专区视频| 欧美大尺度激情区在线播放| 国产精品美女主播| 亚洲激情视频网| 曰本色欧美视频在线| 欧美疯狂xxxx大交乱88av| 欧美区二区三区| 日本中文字幕成人| 久久99热精品这里久久精品| 欧美乱大交做爰xxxⅹ性3| 欧美人与性动交| 91久久精品国产| 国产精品久久久久久久美男| 亚洲国产精品免费| 中文字幕亚洲欧美在线| 国产精品流白浆视频| 日韩成人在线电影网| 狠狠躁夜夜躁久久躁别揉| 亚洲女同精品视频| 日韩av有码在线| 亚洲97在线观看| 国产精品日韩在线一区| 日韩h在线观看| 亚洲欧美精品suv| 精品日韩中文字幕| 成年无码av片在线| 欧美成年人视频网站|