主頁(yè) > 知識(shí)庫(kù) > Webpack基礎(chǔ)教程之名詞解釋

Webpack基礎(chǔ)教程之名詞解釋

熱門(mén)標(biāo)簽:襄陽(yáng)外呼增值業(yè)務(wù)線路解決方案 合肥阿里辦理400電話號(hào) 北京外呼系統(tǒng)咨詢(xún)電話 高德地圖標(biāo)注公司位置需要錢(qián)嗎 海南人工外呼系統(tǒng)哪家好 怎么去掉地圖標(biāo)注文字 廊坊地圖標(biāo)注申請(qǐng)入口 地圖標(biāo)注資源分享注冊(cè) 慶陽(yáng)外呼系統(tǒng)定制開(kāi)發(fā)

一、概念介紹

本質(zhì)上,webpack 是一個(gè)現(xiàn)代JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。當(dāng) webpack 處理應(yīng)用程序時(shí),它會(huì)遞歸地構(gòu)建一個(gè)依賴(lài)關(guān)系圖(dependency graph),其中包含應(yīng)用程序需要的每個(gè)模塊,然后將所有這些模塊打包成一個(gè)或多個(gè) bundle。

它是高度可配置的,但是,在開(kāi)始前你需要先理解四個(gè)核心概念:

入口(entry)

輸出(output)

loader

插件(plugins)

1、 入口(entry)

指定webpack從哪個(gè)模塊開(kāi)始構(gòu)建項(xiàng)目,通過(guò)一下配置指定一個(gè)入口起點(diǎn)(或多個(gè)入口起點(diǎn)),被處理到稱(chēng)之為 bundles 的文件中:

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

2、出口(output)

處理打包生成的 bundles 文件,如指定輸出文件位置,文件名等。

// webpack.config.js
module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'test_name.bunlde.js'
  }
}

3、loader

loader 作用是將所有文件類(lèi)型轉(zhuǎn)換成webpack能處理的有效模塊,然后就可以通過(guò)webpack將文件打包。

本質(zhì)上,webpack loader將所有類(lèi)型文件轉(zhuǎn)換成應(yīng)用程序的依賴(lài)圖可以直接引用的模塊。

特殊: 只有webpack支持 import 導(dǎo)入任何類(lèi)型模塊,如 .css,.vue 等文件。

webpack 配置 loader的兩個(gè)目標(biāo):

1.識(shí)別需要對(duì)應(yīng) loader 處理的文件。(使用test屬性)

2.轉(zhuǎn)換文件使其能夠添加到依賴(lài)圖并最終添加到 bunlde 中。(使用use屬性)

// webpack.config.js
const path = require('path');
const config = {
 entry: './path/to/my/entry/file.js',
 output: {
  path: path.resolve(__dirname, 'dist'),
  filename: 'my-first-webpack.bundle.js'
 },
 module: {
  rules: [
   { test: /\.txt$/, use: 'raw-loader' } 
   // test/use 兩個(gè)屬性是必須的
  ]
 }
}
module.exports = config;

4、插件(plugins)

使用插件可以執(zhí)行范圍更廣的任務(wù)。通過(guò) require() 引用后添加在 plugins 數(shù)組中。

另外如果需要多次使用同一個(gè)插件,則使用 new 操作符來(lái)創(chuàng)建它的一個(gè)實(shí)例。

安裝html-webpack-plugin:

npm install html-webpack-plugin --save-dev
// webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack'); // 用于訪問(wèn)內(nèi)置插件
const path = require('path');
const config = {
 entry: './path/to/my/entry/file.js',
 output: {
  path: path.resolve(__dirname, 'dist'),
  filename: 'my-first-webpack.bundle.js'
 },
 module: {
  rules: [
   { test: /\.txt$/, use: 'raw-loader' }
  ]
 },
 plugins: [
  new webpack.optimize.UglifyJsPlugin(),
  new HtmlWebpackPlugin({template: './src/index.html'})
 ]
};
module.exports = config;

二、入口起點(diǎn)(Entry Points)

webpack的 entry 屬性不僅可以配置單個(gè)入口,還可以配置多個(gè)入口:

1、單個(gè)入口(簡(jiǎn)寫(xiě))配置

用法:entry: string|Arraystring>

簡(jiǎn)單使用 :

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

entry 屬性的單個(gè)入口配置方式:

const config = {
  entry:{
    main:'./path/to/my/entry/file.js'
  }
}

若向 entry 傳入 [文件路徑(file path)數(shù)組],將創(chuàng)建 多個(gè)主入口,常常用在需要同時(shí)注入多個(gè)文件,并將它們的依賴(lài)導(dǎo)向(graph)到一個(gè)chunk時(shí)。

2、多個(gè)入口(簡(jiǎn)寫(xiě))配置

對(duì)象語(yǔ)法

用法:entry: {[entryChunkName: string]: string|Arraystring>}

// webpack.config.js
webpack.config.js
const config = {
 entry: {
  app: './src/app.js',
  vendors: './src/vendors.js'
 }
};

雖然語(yǔ)法繁瑣,但這是應(yīng)用程序中定義入口的最可擴(kuò)展的方式。

“可擴(kuò)展的 webpack 配置”是指,可重用并且可以與其他配置組合使用。這是一種流行的技術(shù),用于將關(guān)注點(diǎn)(concern)從環(huán)境(environment)、構(gòu)建目標(biāo)(build target)、運(yùn)行時(shí)(runtime)中分離。然后使用專(zhuān)門(mén)的工具(如 webpack-merge)將它們合并。

常見(jiàn)場(chǎng)景

列出一些常見(jiàn)的入口配置和實(shí)際案例:

(1)分離 應(yīng)用程序(app) 和 第三方庫(kù)(vendor) 入口

// webpack.config.js
const config = {
 entry: {
  app: './src/app.js',
  vendors: './src/vendors.js'
 }
};

webpack 從 app.js 和 vendors.js 開(kāi)始構(gòu)建,并且他們是完全分離互相獨(dú)立,為了支持提供更佳 vendor 分離能力的 DllPlugin,考慮移除該場(chǎng)景。

(2)多頁(yè)面應(yīng)用程序

// webpack.config.js
const config = {
 entry: {
  pageOne: './src/pageOne/index.js',
  pageTwo: './src/pageTwo/index.js',
  pageThree: './src/pageThree/index.js'
 }
};

這樣告訴 webpack 需要 3 個(gè)獨(dú)立分離的依賴(lài)圖,

使用 CommonsChunkPlugin 為每個(gè)頁(yè)面間的應(yīng)用程序共享代碼創(chuàng)建 bundle。

由于入口起點(diǎn)增多,多頁(yè)應(yīng)用能夠復(fù)用入口起點(diǎn)之間的大量代碼/模塊,從而可以極大地從這些技術(shù)中受益。

更多關(guān)于Webpack基礎(chǔ)教程請(qǐng)點(diǎn)擊下面的相關(guān)文章

您可能感興趣的文章:
  • vue-cli基礎(chǔ)配置及webpack配置修改的完整步驟
  • 前端路由&webpack基礎(chǔ)配置詳解
  • Vue+webpack項(xiàng)目基礎(chǔ)配置教程
  • 淺談react+es6+webpack的基礎(chǔ)配置
  • WebPack基礎(chǔ)知識(shí)詳解

標(biāo)簽:綿陽(yáng) 鎮(zhèn)江 鶴崗 商丘 株洲 哈密 平頂山 臺(tái)州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Webpack基礎(chǔ)教程之名詞解釋》,本文關(guān)鍵詞  Webpack,基礎(chǔ),教程,之,名詞解釋,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Webpack基礎(chǔ)教程之名詞解釋》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Webpack基礎(chǔ)教程之名詞解釋的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章