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

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

 更新時(shí)間:2020年02月03日 14:40:38   作者:pingan8787  
webpack 是一個(gè)現(xiàn)代JavaScript 應(yīng)用程序的靜態(tài)模塊打包器,這次為大家簡單介紹一下webpack及關(guān)于webpack的一些專屬名詞入口(entry),輸出(output),loader,插件(plugins)

一、概念介紹

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

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

入口(entry)

輸出(output)

loader

插件(plugins)

1、 入口(entry)

指定webpack從哪個(gè)模塊開始構(gòu)建項(xiàng)目,通過一下配置指定一個(gè)入口起點(diǎn)(或多個(gè)入口起點(diǎn)),被處理到稱之為 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 作用是將所有文件類型轉(zhuǎn)換成webpack能處理的有效模塊,然后就可以通過webpack將文件打包。

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

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

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

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

2.轉(zhuǎn)換文件使其能夠添加到依賴圖并最終添加到 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ù)。通過 require() 引用后添加在 plugins 數(shù)組中。

另外如果需要多次使用同一個(gè)插件,則使用 new 操作符來創(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'); // 用于訪問內(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è)入口(簡寫)配置

用法:entry: string|Array<string>

簡單使用 :

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è)文件,并將它們的依賴導(dǎo)向(graph)到一個(gè)chunk時(shí)。

2、多個(gè)入口(簡寫)配置

對象語法

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

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

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

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

常見場景

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

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

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

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

(2)多頁面應(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ú)立分離的依賴圖,

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

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

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

相關(guān)文章

  • Windows本地部署OpenManus并接入Mistral模型的完整教程

    Windows本地部署OpenManus并接入Mistral模型的完整教程

    Manus作為一款強(qiáng)大的本地LLM應(yīng)用平臺引起了廣泛關(guān)注,但它需要邀請碼才能使用,不過OpenManus團(tuán)隊(duì)僅用了3小時(shí)就復(fù)刻了一個(gè)功能相似的開源替代方案,下面我們來看看在Windows環(huán)境下的完整部署過程吧
    2025-03-03
  • 科普:多線程與異步的區(qū)別

    科普:多線程與異步的區(qū)別

    這篇文章主要介紹了科普:多線程與異步的區(qū)別,本文講解了多線程和異步操作的異同、異步操作的本質(zhì)、線程的本質(zhì)、異步操作的優(yōu)缺點(diǎn)、多線程的優(yōu)缺點(diǎn)等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • 圖像檢索之IF-IDF,RootSift,VLAD

    圖像檢索之IF-IDF,RootSift,VLAD

    TF-IDF是一種用于信息檢索的常用加權(quán)技術(shù),在文本檢索中,用以評估詞語對于一個(gè)文件數(shù)據(jù)庫中的其中一份文件的重要程度,本文給大家介紹下圖像檢索之IF-IDF,RootSift,VLAD的相關(guān)知識,感興趣的朋友一起看看吧
    2021-12-12
  • jenkins通過sshPut傳輸文件時(shí)報(bào)錯(cuò)Permission?denied的SftpException的問題及解決方案

    jenkins通過sshPut傳輸文件時(shí)報(bào)錯(cuò)Permission?denied的SftpException的問題及解決

    使用jenkins的ssh插件傳輸文件至遠(yuǎn)程機(jī)器的指定目錄,php程序打包后,經(jīng)過zip壓縮為oms.zip,這篇文章主要介紹了jenkins通過sshPut傳輸文件的時(shí)候,報(bào)錯(cuò)Permission?denied的SftpException,需要的朋友可以參考下
    2023-08-08
  • idea日常報(bào)錯(cuò)之UTF-8不可映射的字符的實(shí)現(xiàn)

    idea日常報(bào)錯(cuò)之UTF-8不可映射的字符的實(shí)現(xiàn)

    本文主要介紹了在使用Maven編譯Java項(xiàng)目時(shí)遇到“UTF-8不可映射的字符”錯(cuò)誤的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • vscode的幾項(xiàng)基本配置詳解

    vscode的幾項(xiàng)基本配置詳解

    VSCode是一款免費(fèi)的、開源的、高性能的、跨平臺的、輕量級的代碼編輯器,這篇文章主要介紹了vscode的幾項(xiàng)基本配置,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2020-05-05
  • Git遠(yuǎn)程操作詳解

    Git遠(yuǎn)程操作詳解

    本文針對初級用戶,從最簡單的講起,但是需要讀者對Git的基本用法有所了解。同時(shí),本文覆蓋了上面5個(gè)命令的幾乎所有的常用用法,所以對于熟練用戶也有參考價(jià)值。
    2014-08-08
  • Matlab使用Plot函數(shù)實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)顯示方法總結(jié)

    Matlab使用Plot函數(shù)實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)顯示方法總結(jié)

    這篇文章主要介紹了Matlab使用Plot函數(shù)實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)顯示方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 細(xì)說ASCII、GB2312/GBK/GB18030、Unicode、UTF-8/UTF-16/UTF-32編碼

    細(xì)說ASCII、GB2312/GBK/GB18030、Unicode、UTF-8/UTF-16/UTF-32編碼

    本文主要介紹了細(xì)說ASCII、GB2312/GBK/GB18030、Unicode、UTF-8/UTF-16/UTF-32編碼,詳細(xì)的介紹了這些編碼的知識,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 基于ChatGPT使用AI實(shí)現(xiàn)自然對話的原理分析

    基于ChatGPT使用AI實(shí)現(xiàn)自然對話的原理分析

    ChatGPT是當(dāng)前自然語言處理領(lǐng)域的重要進(jìn)展之一,可以生成高質(zhì)量的文本,可應(yīng)用于多種場景,如智能客服、聊天機(jī)器人、語音助手等。本文將詳細(xì)介紹ChatGPT的原理、實(shí)戰(zhàn)演練和流程圖,幫助讀者更好地理解ChatGPT技術(shù)的應(yīng)用和優(yōu)勢
    2023-05-05

最新評論

从化市| 弥勒县| 康平县| 沐川县| 舒兰市| 右玉县| 建瓯市| 康平县| 洞头县| 珲春市| 佳木斯市| 漯河市| 疏附县| 宜黄县| 正阳县| 盐源县| 贡觉县| 漳平市| 新巴尔虎左旗| 潼南县| 汉川市| 文成县| 波密县| 依兰县| 柳州市| 伊金霍洛旗| 阳原县| 桐柏县| 海林市| 瑞昌市| 安丘市| 芮城县| 胶南市| 西峡县| 绵竹市| 保山市| 昌江| 长泰县| 三门峡市| 广东省| 南乐县|