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

資訊專欄INFORMATION COLUMN

學(xué)點(diǎn)Webpack吧

邱勇 / 1894人閱讀

摘要:下的包含很多匹配規(guī)則正則表達(dá)式,每一條代表加載什么類型的資源文件,上面寫的就是加載樣式文件,并使用和加載?,F(xiàn)在問題來了,我想喝瓶茅臺(tái)自動(dòng)添加瀏覽器產(chǎn)商前綴。沒問題,強(qiáng)大的生態(tài)圈給你提供了,一個(gè)更高大上的。

開始 webpack 之旅
npm install webpack --save-dev

這里如果沒有指定 -g全局安裝,那么需要調(diào)用 node_modules 下的 webpack.js 來執(zhí)行,因?yàn)榉侨职惭b沒有添加環(huán)境變量

嘗嘗鮮,做點(diǎn) webpack

必須的第一步:編寫 webpack.config.js

// webpack.config.js
module.exports = {
  // 兩個(gè)必須參數(shù):
  entry: "", // 入口文件,寫路徑即可
  output: {  // 打包后文件,有兩個(gè)參數(shù):
    filename: "",   // 文件名,"[name]"表示使用原名,"[hash]"使用哈希值
    path: "",       // 文件夾路徑,對(duì)著官方敲,path.resolve(__dirname, "文件夾名"),需先導(dǎo)入
    publicPath: "", // 上線地址,例如 http://ningtaostudy.cn
  },
};

現(xiàn)在碗和米飯有了,怎么端起來吃呢

直接在命令行運(yùn)行 webpack,再加點(diǎn)料:

webpack 
    --display-reasons 
    --progress 
    --colors 
    --display-modules 
    --config # webpack 配置文件名(換個(gè)碗吃飯)

在 npm 腳本里寫指令(偷懶讓別人幫你盛飯),接著命令行里運(yùn)行 npm run webpack

{
    "scripts": {
        "webpack": "webapck --progress --colors"
    }
}
飯吃到了,沒有菜(webpack 插件)怎么行呢

打包 html 的插件 html-webpack-plugin。慣例第一步 npm install,接著在 webpack.config.js 里配置插件,有了 entry output 出頭鳥,我們知道該寫一個(gè) plugin 了:

// webpack.config.js
const htmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  plugins: [
    new htmlWebpackPlugin({
      filename: "[name]-[hash].html",
      template: "index.html",
      inject: "head",
      kill: "bill",
    }),
  ],
};
        

讓我們來品品小當(dāng)家的菜:

filename 很好,不就入口文件嗎

template 你不用說,我知道是模板,相對(duì)于配置文件的路徑

inject 我就不遵從開發(fā)最佳實(shí)踐,就要在head里加載js文件,打我呀

kill 殺死比爾,純屬虛構(gòu)。這是自定義的模板,模板里調(diào)用,下面舉個(gè)栗子:



<%= htmlWebpackPlugin.options.kill %><title>

<!-- 轉(zhuǎn)化后 -->
<title>bill

上面代碼一樣一樣的。老夫斗膽說一句,這里模板引擎類似 jsp,但還是 js 語法

去官網(wǎng)看看 小當(dāng)家

來瓶酒(loaders)吧,生活美滋滋

loader 用來加載資源文件,諸如圖片、css之類的,這樣我們就可以在 .js 里導(dǎo)入 css,你沒聽錯(cuò),用起來我也沒有在蒙你

最簡(jiǎn)單常用來加載 css 的兩個(gè) loader:

npm install style-loader css-loader --save-dev
# style-loader 用來插入 style 標(biāo)簽
# css-loader 用來加載 css 代碼,此 loader 居下

話不多說,開車:

// webpack.config.js
module.exports = {
  modules: {
    rules: [
      {
        test: /.css$/,
        use: [
          "style-loader",
          "css-loader",
        ],
      },
    ],
  },
};

看起來嵌套挺多的哈,不過很簡(jiǎn)單。modules 下的 rules 包含很多匹配規(guī)則(正則表達(dá)式),每一條代表加載什么類型的資源文件,上面寫的就是加載 .css 樣式文件,并使用 style-loadercss-loader 加載。

現(xiàn)在問題來了,我想喝瓶茅臺(tái)(自動(dòng)添加瀏覽器產(chǎn)商前綴)。沒問題,強(qiáng)大的 webpack 生態(tài)圈給你提供了 postcss-loader,一個(gè)更高大上的 loader。這個(gè)時(shí)候我們都知道只需要改一下 use 數(shù)組:

[
  "style-loader",
  {
    loader: "css-loader",
    options: {
      importLoaders: 1
    },
  },
  "postcss-loader"
]

數(shù)組的項(xiàng)可以是對(duì)象,這樣我們的 loader 就能帶 options 里的參數(shù),等同于:

use: "style-loader!css-loader?importLoaders=1!postcss-loader"
至于為什么要帶這樣的參數(shù),這是因?yàn)橐粋€(gè) @import 引發(fā)的血案
webpack-dev-server 大廚來也

我是誰,我從哪里來,我又該到哪里去

日益繁重的前端工作下,沒有人能阻擋我們偷懶的步伐。。webpack 只是一個(gè)打包工具,即使我們能帶 --watch 自動(dòng)編譯,但瀏覽器還得手動(dòng)刷新(心中一個(gè)臥槽,尼瑪還有這種操作,曾經(jīng)學(xué)習(xí)的一年里自己起碼動(dòng)手刷新瀏覽器點(diǎn)了 10000 次,忍不住吐槽瀏覽器刷新按鈕就不能做一個(gè)浮動(dòng)的嗎,還得移動(dòng)大半個(gè)屏幕,我鼠標(biāo)少說走了 1000m 了)。很好,在靈長(zhǎng)類動(dòng)物面前都不是問題:

npm install webpack-dev-server -D # 這個(gè)不是重點(diǎn),縮寫而已

接下來配置 webpack,其實(shí)官網(wǎng)很詳細(xì)了,還帶中文的,比個(gè)贊

// webpack.config.js
module.exports = {
  devServer: {
    contentBase: "./dist", // 根目錄,就像 apache 的 www 文件夾
  },
};

然后呢臥槽?沒錯(cuò),好了,輸入吧腫瘤君:

webpack-dev-server --open

偷懶神(package.json)在此:

{
    "scripts": {
        "start": "webpack-dev-server --open --color"
    }
}

再運(yùn)行 npm start,這次連 run 都省了,,,

好了,以上就是初步了解 webpack 了,再總結(jié)一下吧

配置項(xiàng)一覽:

// webpack.config.js
module.exports = {
  entry: "",
  output: {},
  module: {
    rules: [],
  },
  plugins: [],
  devServer: {},
  devtool: "inline-source-map", // 開發(fā)環(huán)境下調(diào)試專用,快速定位錯(cuò)誤文件位置
};

常用 loader:

加載 html:html-webpack-plugin、html-loader

加載 css:style-loader、css-loader、sass/less-loader

加載 es6:babel-loader

加載圖片、json 等文件:file-loader、url-loader(轉(zhuǎn)base64)、image-loader(壓縮)、json-loader

上面的這些 loader 都可以去 npmjs 官網(wǎng) 上查看詳細(xì)的配置

-loader 在 webpack 2+ 不能省略;html 插件和 loader(加載模板)不能混著用

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

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

相關(guān)文章

  • 趁著課余時(shí)間學(xué)點(diǎn)Python(十四)文件操作

    摘要:我是布小禪,一枚自學(xué)萌新,跟著我每天進(jìn)步一點(diǎn)點(diǎn)吧說了這么多暫時(shí)也就夠了,那么就告辭吧 文章目錄 ?? 前言 ??? 作者簡(jiǎn)介 ??文件操作?1??、open函數(shù)...

    abson 評(píng)論0 收藏0
  • 【正經(jīng)的AI on Python入門系列】0.來學(xué)點(diǎn)Python!從一個(gè)斗圖小工具開始

    摘要:因此,本文將會(huì)以一些正經(jīng)的嚴(yán)謹(jǐn)?shù)挠猩疃鹊拇蟾虐傻恼n題,慢慢的接觸人工智能的相關(guān)知識(shí)。 Before The Beginning ????近年,技術(shù)圈炒的最火的兩個(gè)話(ba)題(gua)不外乎就是人工智障智能以及炒幣區(qū)塊鏈了,這個(gè)系列文章我主要以一個(gè)小菜鳥的角度一步一步的對(duì)人工智能的相關(guān)知識(shí)做一點(diǎn)了解,也算是一個(gè)顫顫巍巍追著AI浪潮公交車的社會(huì)主義五好青年,咳咳,扯遠(yuǎn)了...其實(shí)對(duì)于人工...

    趙連江 評(píng)論0 收藏0
  • 前方來報(bào),八月最新資訊--關(guān)于vue2&3的最佳文章推薦

    摘要:哪吒別人的看法都是狗屁,你是誰只有你自己說了才算,這是爹教我的道理。哪吒去他個(gè)鳥命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰和你做朋友太乙真人人是否能夠改變命運(yùn),我不曉得。我只曉得,不認(rèn)命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...

    izhuhaodev 評(píng)論0 收藏0
  • 寫給在迷茫中前行的前端學(xué)習(xí)/工作者

    摘要:我從今年的月份開始在知乎上連續(xù)回答前端開發(fā)相關(guān)的問題,至今已有將近三個(gè)月,回顧寫過的一百多條回答,不少是給迷茫的前端工作者的建議。今天我把我的思考提煉整理成文,希望能給予在迷茫中前行中的前端學(xué)習(xí)工作者一些有用的建議。 本文首發(fā)于知乎專欄——前端指南作者:Mark MFS老師轉(zhuǎn)載請(qǐng)注明來源。 我從今年的2月份開始在知乎上連續(xù)回答前端開發(fā)相關(guān)的問題,至今已有將近三個(gè)月,回顧寫過的一百多條回...

    羅志環(huán) 評(píng)論0 收藏0
  • 為vue3學(xué)點(diǎn)typescript, 解讀高級(jí)類型

    摘要:直達(dá)第一課體驗(yàn)第二課基礎(chǔ)類型和入門高級(jí)類型第三課泛型第四課解讀高級(jí)類型第五課什么是命名空間回顧第二課的時(shí)候?yàn)榱烁玫闹v解基礎(chǔ)類型所以我們講解了一部分高級(jí)類型比如接口聯(lián)合類型交叉類型本節(jié)課我會(huì)把剩余高級(jí)類型都講完知識(shí)點(diǎn)摘要本節(jié)課主要關(guān)鍵詞為自 直達(dá) 第一課, 體驗(yàn)typescript 第二課, 基礎(chǔ)類型和入門高級(jí)類型 第三課, 泛型 第四課, 解讀高級(jí)類型 第五課, 什么是命名空間(na...

    chuyao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<