最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談webpack 四個(gè)核心概念之Entry

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

因?yàn)閣ebpack是基于nodejs的一款工具,所以在學(xué)習(xí)過(guò)程中涉及到的nodejs知識(shí)也會(huì)進(jìn)行解釋進(jìn)行發(fā)散性拓展。

webpack中文文檔

一、module.exports

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

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

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

二、entry

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

entry接受三種類(lèi)型值

1.單入口寫(xiě)法 String 例:

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

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

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

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

3.對(duì)象語(yǔ)法Object例:

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

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

分離第三方模塊和webpack運(yùn)行文件等類(lèi)似公共模塊是為了避免加載等問(wèn)價(jià)過(guò)大等待時(shí)間長(zhǎng)的優(yōu)化,當(dāng)你不同的入口文件都依賴(lài)了相同的第三方模塊這時(shí)候需要把他們抽離出來(lái)。這里主要應(yīng)用了entry的對(duì)象語(yǔ)法和CommonsChunkPlugin。實(shí)際應(yīng)用舉例:

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

module.exports = config;

2.詳細(xì)分離業(yè)務(wù)模塊 第三方依賴(lài) 公共模塊 webpack運(yùn)行文件

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript canvas繪制折線圖

    JavaScript canvas繪制折線圖

    這篇文章主要為大家詳細(xì)介紹了JavaScript canvas繪制折線圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • JS實(shí)現(xiàn)的JSON序列化操作簡(jiǎn)單示例

    JS實(shí)現(xiàn)的JSON序列化操作簡(jiǎn)單示例

    這篇文章主要介紹了JS實(shí)現(xiàn)的JSON序列化操作,結(jié)合簡(jiǎn)單實(shí)例形式分析了json序列化操作相關(guān)實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下
    2018-07-07
  • JavaScript防止表單重復(fù)提交的方法

    JavaScript防止表單重復(fù)提交的方法

    在web開(kāi)發(fā)中,防止表單的重復(fù)提交是一個(gè)非常重要的環(huán)節(jié)。重復(fù)提交會(huì)導(dǎo)致數(shù)據(jù)混亂,甚至可能導(dǎo)致系統(tǒng)崩潰,今天我們將帶領(lǐng)大家從小白級(jí)別到大神級(jí)別的程序員,一起來(lái)學(xué)習(xí)如何在實(shí)際項(xiàng)目中避免表單的重復(fù)提交
    2023-04-04
  • js 彈簧效果代碼

    js 彈簧效果代碼

    上次做圖片滑動(dòng)展示效果時(shí)做了減速效果,就想做一個(gè)加速效果。結(jié)合起來(lái)就想到了下面這個(gè)東西,當(dāng)然只是類(lèi)似彈簧,而不是真正的彈簧。
    2008-09-09
  • 基于JS抓取某高校附近共享單車(chē)位置 使用web方式展示位置變化代碼實(shí)例

    基于JS抓取某高校附近共享單車(chē)位置 使用web方式展示位置變化代碼實(shí)例

    這篇文章主要介紹了基于JS抓取某高校附近共享單車(chē)位置 使用web方式展示位置變化代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • JavaScript 字符串操作的幾種常見(jiàn)方法

    JavaScript 字符串操作的幾種常見(jiàn)方法

    JavaScript 操作字符串的幾種常見(jiàn)方法,需要的朋友可以參考下。
    2009-11-11
  • js對(duì)象數(shù)組按屬性快速排序

    js對(duì)象數(shù)組按屬性快速排序

    前一篇《關(guān)于selector性能比賽》中提到,目測(cè)覺(jué)得在$("div,p,a")這樣有逗號(hào)時(shí),sizzle耗時(shí)異常(600多個(gè)元素,花了200ms),說(shuō)是它可能沒(méi)有優(yōu)化ie下的排序。
    2011-01-01
  • 微信小程序下拉菜單效果的實(shí)例代碼

    微信小程序下拉菜單效果的實(shí)例代碼

    這篇文章主要介紹了微信小程序下拉菜單效果的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • js動(dòng)態(tài)切換圖片的方法

    js動(dòng)態(tài)切換圖片的方法

    這篇文章主要介紹了js動(dòng)態(tài)切換圖片的方法,包含完整的css文件與js文件實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-01-01
  • JavaScript中模擬實(shí)現(xiàn)jsonp

    JavaScript中模擬實(shí)現(xiàn)jsonp

    這篇文章主要介紹了JavaScript中模擬實(shí)現(xiàn)jsonp,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
    2015-06-06

最新評(píng)論

重庆市| 永修县| 西峡县| 辽宁省| 榆社县| 平邑县| 上蔡县| 弋阳县| 云安县| 武川县| 克拉玛依市| 万安县| 霍林郭勒市| 黎川县| 漳浦县| 崇礼县| 博客| 天祝| 安化县| 修武县| 恭城| 井研县| 平湖市| 三江| 临海市| 商南县| 明溪县| 三原县| 新密市| 衢州市| 资中县| 萝北县| 绵阳市| 安平县| 涟水县| 日土县| 牙克石市| 宜兰县| 遂川县| 枝江市| 武威市|