欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談webpack 四個核心概念之Entry

 更新時間:2019年06月12日 08:24:49   作者:印第安老鵪鶉  
這篇文章主要介紹了淺談webpack 四個核心概念之Entry,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

webpack中文文檔

一、module.exports

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

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

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

二、entry

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

entry接受三種類型值

1.單入口寫法 String 例:

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

2.單入口數(shù)組寫法 Array例:

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

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

3.對象語法Object例:

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

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

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

1.分離業(yè)務模塊和公共模塊(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)//獲取生產(chǎn)環(huán)境依賴庫的
  //模塊名稱,返回一個數(shù)組,這里涉及的是單入口數(shù)組寫法將多個依賴合并到一個chunk中
  //在這里vue作為第三方庫會被合并
},
output: {
  path: path.resolve(__dirname,'./dist'),
  filename: '[name].js'
},
plugins: [
  new webpack.optimize.CommonsChunkPlugin({
    name: 'vendor',//指定已經(jīng)存在的chunk這里指向的是vendor,
    公共部分模塊都會合并到這個chunk名對應的文件,不指定默認生成name為commons的chunk。
    filename: '[name].js'//抽離出公共部分的文件名
  }),
]
}

module.exports = config;

2.詳細分離業(yè)務模塊 第三方依賴 公共模塊 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
    }),
  ]

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Js之如何移除Array/數(shù)組中指定元素

    Js之如何移除Array/數(shù)組中指定元素

    這篇文章主要介紹了Js之如何移除Array/數(shù)組中指定元素問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 微信小程序?qū)崿F(xiàn)日歷效果

    微信小程序?qū)崿F(xiàn)日歷效果

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)日歷效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • javascript實現(xiàn)彈幕墻效果

    javascript實現(xiàn)彈幕墻效果

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)彈幕墻效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • JS實現(xiàn)具備延時功能的滑動門菜單效果

    JS實現(xiàn)具備延時功能的滑動門菜單效果

    這篇文章主要介紹了JS實現(xiàn)具備延時功能的滑動門菜單效果,涉及JavaScript基于鼠標事件與時間函數(shù)實現(xiàn)頁面樣式延遲變換功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • JS實現(xiàn)禁止高頻率連續(xù)點擊的方法【基于ES6語法】

    JS實現(xiàn)禁止高頻率連續(xù)點擊的方法【基于ES6語法】

    這篇文章主要介紹了JS實現(xiàn)禁止高頻率連續(xù)點擊的方法,通過事件監(jiān)聽結(jié)合定時器實現(xiàn)針對高頻率點擊的限制操作,該功能基于ES6語法實現(xiàn),需要的朋友可以參考下
    2017-04-04
  • 基于Bootstrap的Metronic框架實現(xiàn)條碼和二維碼的生成及打印處理操作

    基于Bootstrap的Metronic框架實現(xiàn)條碼和二維碼的生成及打印處理操作

    這篇文章主要介紹了基于Bootstrap的Metronic框架實現(xiàn)條碼和二維碼的生成及打印處理操作的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • 淺談函數(shù)調(diào)用的不同方式,以及this的指向

    淺談函數(shù)調(diào)用的不同方式,以及this的指向

    下面小編就為大家?guī)硪黄獪\談函數(shù)調(diào)用的不同方式,以及this的指向。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • JavaScript用JSONP跨域請求數(shù)據(jù)實例詳解

    JavaScript用JSONP跨域請求數(shù)據(jù)實例詳解

    Javascript跨域訪問是web開發(fā)者經(jīng)常遇到的問題,什么是跨域,就是一個域上加載的腳本獲取或操作另一個域上的文檔屬性。下面這篇文章主要介紹了JavaScript用JSONP跨域請求數(shù)據(jù)的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • js canvas實現(xiàn)滑塊驗證

    js canvas實現(xiàn)滑塊驗證

    這篇文章主要為大家詳細介紹了js canvas實現(xiàn)滑塊驗證,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • BootstrapValidator驗證用戶名已存在(ajax)

    BootstrapValidator驗證用戶名已存在(ajax)

    這篇文章主要為大家詳細介紹了BootstrapValidator驗證用戶名已存在,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論