成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

webpack學(xué)習(xí)筆記1

legendaryedu / 871人閱讀

摘要:頭部資源終將占據(jù)統(tǒng)治地位,成為前端項(xiàng)目構(gòu)建工具的頭部資源。模塊化編程模塊的概念是將程序拆解為離散的功能塊,通常稱這些功能塊為模塊。模塊相對于程序而言,具有更小的體積,單個(gè)模塊具有清晰的目的,方便進(jìn)行開發(fā)測試維護(hù)等工作。

webpack作用

webpack可以將前端工程中所有的靜態(tài)資源打包成為一個(gè)或者多個(gè)js,靜態(tài)資源包括css、圖片等。

為什么要使用webpack,沒有打包工具之前,頁面之中使用ES6、SCSS、TypeScript等瀏覽器不支持的前端新語法的時(shí)候都非常困難,有了webpack就可以非常方便的在項(xiàng)目之中使用這些新的語法,從而提升前端項(xiàng)目開發(fā)的速度和質(zhì)量。另外在webpack之中項(xiàng)目中所有的資源都是模塊,包括js,還包括css、圖片等等。只要有合適的loader去處理這些靜態(tài)資源就可以了。webpack還提供了插件的功能,豐富了webpack的功能。以上的這些讓webpack成為前端項(xiàng)目構(gòu)建工具的主流和首選,gulp和grunt可能成為了歷史。頭部資源終將占據(jù)統(tǒng)治地位,webpack成為前端項(xiàng)目構(gòu)建工具的頭部資源。

模塊化編程

模塊的概念是將程序拆解為離散的功能塊,通常稱這些功能塊為模塊。模塊相對于程序而言,具有更小的體積,單個(gè)模塊具有清晰的目的,方便進(jìn)行開發(fā)、測試、維護(hù)等工作。模塊的功能經(jīng)過了抽象,提高了代碼的復(fù)用能力。

模塊的打開姿勢

webpack支持常見的模塊依賴,如es5的import,commonjs的require,css文件的@import,樣式中的url。webpack能夠支持的模塊有webpack常見的loader

webpack核心概念 entry 入口文件

webpack是通過遞歸的方式來找出所有依賴之間的關(guān)系,并構(gòu)建依賴圖。需要在配置文件中指定使用哪個(gè)模塊作為依賴圖的起始,進(jìn)入起始依賴后就可以根據(jù)起始模塊中指定的依賴來將其他依賴將入進(jìn)來。多個(gè)入口匹配單一輸出:entry:"./src/script/main.js",在main.js之中可以使用require或者其他方法例如import來導(dǎo)入其他的文件。
module.export = {entry:"./index.js"}

當(dāng)存在多個(gè)入口的時(shí)候呢,可以使用entry:[]的形式。
多個(gè)入口文件匹配多個(gè)輸出結(jié)果:entry必須采用對象的方式,這樣可以使用對象的key作為出口文件的文件名。并在不同的文件中使用這些不同的輸出。示例:entry:{page1:"a.js",page2:"b.js"},output:{path:"輸出結(jié)果的絕對路徑",filename:[name].js}這里必須使用占位符來達(dá)到生成不同文件的效果,為了顯示多次輸出的不同版本號可以使用[hash]占位符。
hash值采用md5算法,即根據(jù)文件中內(nèi)容來改變。

output 輸出文件

output指定了最終要將打包好的js放在什么路徑下,默認(rèn)是dist。路徑指定的是絕對路徑,需要通過nodejs的path模塊來獲取當(dāng)前的文件路徑。
const path = require("path")
module.export = {output:{path:path.resolve(__dirname,"dist"),filename:"bundle.js"}}

loader 加載器(中間件)

loader讓webpack有能力去處理費(fèi)JavaScript文件,webpack本身只能理解JavaScript。豐富loader(官方的和第三方)可以將所有類型的文件都轉(zhuǎn)化為webpack可以理解的JavaScript,webpack發(fā)揮的作用是將JavaScript和轉(zhuǎn)化為JavaScript的資源按照相互依賴的關(guān)系打包。
并且這些loader之間可以靈活的組裝,開發(fā)者可以根據(jù)自己的需求靈活的定義loader的構(gòu)成。loader的配置方法為
module.export = {

module:{
    rules:[
        {
            test:.js$,
            loader:"babel-loader"
        },
        {
            test:.css$,
            loader:"style-loader!css-loader"
        }
    ]
}

}
配置文件告訴webpack當(dāng)遇到符合test對應(yīng)正則表達(dá)式的文件時(shí),先使用對應(yīng)的loader轉(zhuǎn)化一下。

babel-loader的使用方法

安裝babel loader來處理es6的語法,安裝npm較多,包括babel-loaderbabel-core
babel-loader可以通過參數(shù)presets(預(yù)設(shè))來指定es6的版本,可選的參數(shù)有:"es2015","es2016","es2017","latest"。在使用preset的時(shí)候不僅需要通過config.js來指定使用何種preset,還需要安裝相關(guān)的preset的npm包。例如安裝preset為latest的的npm包,命令是:npm install babel-preset-latest --save-dev

plugin 插件

還有一部分工作是loader不能完成,例如壓縮、打包優(yōu)化、重新定義環(huán)境中的變量等等??梢哉fplugin的能力是loader的父集。使用plugin的方式是先引入插件模塊,通過require。然后在配置對象的plugin中創(chuàng)建插件的實(shí)例。
const htmlWebpackPlugin = require("html-webpack-plugin")
module.export = {

plugin:[
    new htmlWebpackPlugin({template:"./index.html"})
]

}

plugin接受一個(gè)數(shù)組作為其value,數(shù)組中是各個(gè)插件的構(gòu)造函數(shù),可以在這些構(gòu)造函數(shù)傳入相關(guān)的參數(shù)來達(dá)到目的。例如通過使用html-webpack-plugin來實(shí)現(xiàn)自動引入打包的內(nèi)容,不再使用手動的方式來實(shí)現(xiàn)。還可以加入[hash]來保證引入文件的命名的唯一性,從而可以保證上線時(shí)候引用的是最新的版本。

html-webpack-plugin的參數(shù)有:
{filename:"生成的文件名",
title:"文件中的title",
template:"以什么文件作為其模板",
chunks:["使用什么chunk"],
excludeChunks:["排除什么chunk"]
inject:["chunk的引用放在什么地方"]
}

webpack命令行的一些參數(shù)

1.指定特定文件的loader: --module-bind "css=style-loader!css-loader"

2.顯示打包進(jìn)程: --progress

3.顯示所有打包模塊: --display-modules

4.顯示打包原因: --display-reasons

5.指定打包配置文件: --config

6.自定義命令行腳本:在package.json之中來定義

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/99527.html

相關(guān)文章

  • webpack 學(xué)習(xí)筆記(一)

    摘要:引言最近在學(xué)習(xí),發(fā)現(xiàn)好多知識點(diǎn),之前一點(diǎn)都沒有接觸過,如等等。使用本地安裝,會存于文件夾內(nèi)與屬性內(nèi),更方便項(xiàng)目文件遷移以及協(xié)同開發(fā)等情況。 引言 最近在學(xué)習(xí)webpack,發(fā)現(xiàn)好多知識點(diǎn),之前一點(diǎn)都沒有接觸過,如babel、core-js、browserslist等等。以前習(xí)慣了使用cli構(gòu)建項(xiàng)目,很多東西不用考慮,拿來就用,這樣的碼農(nóng)是不會有能力提升的,必須了解更多的知識點(diǎn),才能成為...

    zhangwang 評論0 收藏0
  • React學(xué)習(xí)筆記1:環(huán)境搭建

    摘要:新搭建的個(gè)人博客,本文地址學(xué)習(xí)筆記環(huán)境搭建本文的書寫環(huán)境為,之后會補(bǔ)充下的差異創(chuàng)建學(xué)習(xí)目錄初始化項(xiàng)目根據(jù)相關(guān)提示完善信息,入口文件安裝相關(guān)包,并且使用也就是支持,需要包,因?yàn)槲抑白鰝€(gè)一些相關(guān)項(xiàng)目,所以部分包已經(jīng)全局安裝,比如等等,大家 新搭建的個(gè)人博客,本文地址:React學(xué)習(xí)筆記1:環(huán)境搭建 本文的書寫環(huán)境為mac,之后會補(bǔ)充windows下的差異 1、創(chuàng)建學(xué)習(xí)目錄 mkdir l...

    Sourcelink 評論0 收藏0
  • 我的webpack學(xué)習(xí)筆記(一)

    摘要:前言在上一篇文章中我介紹了學(xué)習(xí)前的準(zhǔn)備工作,下面開始的學(xué)習(xí)。目標(biāo)一般我們接觸到的關(guān)于的文章,都是以解讀官方文檔為主,而且是針對單頁面項(xiàng)目的應(yīng)用。我先在假設(shè)要做一個(gè)多頁面應(yīng)用,該如何去通過打包。 前言 在上一篇文章中我介紹了學(xué)習(xí)webpack前的準(zhǔn)備工作,下面開始webpack的學(xué)習(xí)。 *創(chuàng)建webpack-demo文件夾 $ mkdir webpack-demo $ cd webpac...

    wh469012917 評論0 收藏0
  • 我的webpack學(xué)習(xí)筆記(一)

    摘要:前言在上一篇文章中我介紹了學(xué)習(xí)前的準(zhǔn)備工作,下面開始的學(xué)習(xí)。目標(biāo)一般我們接觸到的關(guān)于的文章,都是以解讀官方文檔為主,而且是針對單頁面項(xiàng)目的應(yīng)用。我先在假設(shè)要做一個(gè)多頁面應(yīng)用,該如何去通過打包。 前言 在上一篇文章中我介紹了學(xué)習(xí)webpack前的準(zhǔn)備工作,下面開始webpack的學(xué)習(xí)。 *創(chuàng)建webpack-demo文件夾 $ mkdir webpack-demo $ cd webpac...

    CrazyCodes 評論0 收藏0
  • webpack學(xué)習(xí)筆記

    摘要:運(yùn)行該語句會執(zhí)行如下步驟使用進(jìn)行文件壓縮。設(shè)置環(huán)境變量,觸發(fā)某些包,以不同的方式進(jìn)行編譯。在原始的源碼中執(zhí)行查找和替換操作。等同于表示任何出現(xiàn)的地方都會被替換為。提供函數(shù)用來合并配置對象當(dāng)文件小于限制,會返回。 選項(xiàng) 1.devtool:通過在瀏覽器調(diào)試工具(browser devtools)中添加元信息(meta info)增強(qiáng)調(diào)試。 2.resolve.alias:創(chuàng)建 impor...

    Soarkey 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<