摘要:自動(dòng)生成項(xiàng)目中的文件在前文中我們?yōu)榱搜菔敬虬玫?,在根目錄下?chuàng)建了一個(gè),并引入。至此,我們已經(jīng)成功實(shí)現(xiàn)自動(dòng)生成項(xiàng)目中的文件了。執(zhí)行,在命令行中可見文件夾已被刪除了。
1. webpack中的CommonJS和ES Mudule 規(guī)范 1.1 CommonJs規(guī)范
CommonJs規(guī)范的出發(fā)點(diǎn):JS沒有模塊系統(tǒng)、標(biāo)準(zhǔn)庫較少、缺乏包管理工具;為了讓JS可以在任何地方運(yùn)行,以達(dá)到Java、PHP這些后臺(tái)語言具備開發(fā)大型應(yīng)用的能力。
在CommonJs規(guī)范中:
一個(gè)文件就是一個(gè)模塊,擁有多帶帶的作用域;
普通方式定義的變量、函數(shù)、對(duì)象都屬于該模塊內(nèi);
通過require來加載模塊;
通過exports和modul.exports來暴露模塊中的內(nèi)容;
1.2 ES Mudule 規(guī)范ES6在語言標(biāo)準(zhǔn)的層面上,實(shí)現(xiàn)了模塊功能,基本特點(diǎn)如下:
每一個(gè)模塊只加載一次, 每一個(gè)JS只執(zhí)行一次, 如果下次再去加載同目錄下同文件,直接從內(nèi)存中讀取;
每一個(gè)模塊內(nèi)聲明的變量都是局部變量, 不會(huì)污染全局作用域;
模塊內(nèi)部的變量或者函數(shù)可以通過export導(dǎo)出;
一個(gè)模塊可以導(dǎo)入別的模塊;
模塊功能主要由兩個(gè)命令構(gòu)成:export和import;export命令用于規(guī)定模塊的對(duì)外接口,import命令用于輸入其他模塊提供的功能:
// esm.js let firstName = "Jack"; let lastName = "Wang"; export {firstName, lastName} // export命令除了輸出變量,還可以輸出函數(shù) export function (a, b) { return a + b }
使用export命令定義了模塊的對(duì)外接口以后,其他 JS 文件就可以通過import命令加載這個(gè)模塊,import命令接受一對(duì)大括號(hào),里面指定要從其他模塊導(dǎo)入的變量名,大括號(hào)里面的變量名,必須與被導(dǎo)入模塊對(duì)外接口的名稱相同。
// main.js import {firstName, lastName} from "./esm"; function say() { console.log("Hello , " + firstName + " " + lastName) }1.3 使用
現(xiàn)在,在src目錄下新建 sum.js 和 minus.js
// sum.js ES Mudule 規(guī)范 // export default命令,為模塊指定默認(rèn)輸出 export default function (a, b) { return a + b }
// minus.js commonJS 規(guī)范 module.exports = function (a, b) { return a - b }
?修改 main.js?
import sum from "./sum" import minus from "./minus" console.log("sum(1, 2): " + sum(1, 2)) console.log("minus(5, 2): " + minus(5, 2))
執(zhí)行 npm run build 之后,打開 index.html,在控制臺(tái)中可以看到輸出的結(jié)果。
?
2.?自動(dòng)生成項(xiàng)目中的HTML文件在前文中我們?yōu)榱搜菔敬虬玫?main.bundle.js ,在根目錄下創(chuàng)建了一個(gè) index.html ,并引入main.bundle.js。而在實(shí)際項(xiàng)目中,我們可以通過 webpack 的一個(gè)插件:HtmlWebpackPlugin 來自動(dòng)生成HTML文件并引入我們打包好的JS和CSS文件。
?安裝:npm install --save-dev html-webpack-plugin
?整理項(xiàng)目目錄:
在根目錄創(chuàng)建config文件夾,把webpack.config.js移入config,并修改webpack.config.js:
const path = require("path") const HtmlWebpackPlugin = require("html-webpack-plugin") const config = { mode: "none", entry: { main: path.join(__dirname, "../src/main.js") }, output: { filename: "[name].bundle.js", path: path.join(__dirname, "../dist") }, plugins: [ new HtmlWebpackPlugin({ template: path.join(__dirname, "../index.html"), inject: true, minify: { removeComments: true } }) ] } module.exports = config
template:模版文件的路徑,這里使用根目錄下的index.html文件;
inject:設(shè)為 true 表示把JS文件注入到body結(jié)尾,CSS文件注入到head中;
minify:removeComments: true 表示刪除模版文件中的注釋,minify還有很多配置可選請(qǐng)自行參閱;
下一步注釋掉index.html 中我們手動(dòng)引入的 script :
Title
執(zhí)行 npm run build ,可以看到,dist 目錄下多了一個(gè) index.html,這就是通過?HtmlWebpackPlugin?生成的文件,打開dist/index.html,已經(jīng)自動(dòng)引入了?main.bundle.js并且注釋已被刪除。
?
至此,我們已經(jīng)成功實(shí)現(xiàn)自動(dòng)生成項(xiàng)目中的HTML文件了。
3. 清理/dist文件夾每次執(zhí)行npm run build 打包時(shí),都會(huì)有上次的代碼遺留下來,導(dǎo)致我們的?/dist?文件夾相當(dāng)雜亂。通常,在每次構(gòu)建前清理?/dist?文件夾,是比較推薦的做法。
clean-webpack-plugin?是一個(gè)比較普及的管理插件,讓我們安裝和配置下:
npm install clean-webpack-plugin --save-dev
在webpack.config.js 中使用:
const CleanWebpackPlugin = require("clean-webpack-plugin")
在 plugins 中加入:
new CleanWebpackPlugin(["dist"],{root: path.join(__dirname, "../")})
第一個(gè)參數(shù)表示文件夾路徑數(shù)組;第二個(gè)參數(shù)是 options 配置項(xiàng),root 為到webpack根文件夾的絕對(duì)路徑,默認(rèn)為 __dirname,由于dist文件夾和webpack.config.js不再相同目錄下,因此我們需要重新定義 root 路徑,以免無法找到 dist 文件夾。
執(zhí)行 npm run build ,在命令行中可見:
?
dist 文件夾已被刪除了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/100990.html
摘要:傳送門系列教程一初識(shí)系列教程二創(chuàng)建項(xiàng)目,打包第一個(gè)文件系列教程三自動(dòng)生成項(xiàng)目中的文件系列教程四處理項(xiàng)目中的資源文件一系列教程五處理項(xiàng)目中的資源文件二系列教程六使用分割代碼系列教程七使用系列教程八使用審查代碼系列教程九開發(fā)環(huán)境和生產(chǎn)環(huán)境 在前端開發(fā)日益復(fù)雜的今天,我們需要一個(gè)工具來幫助我們管理項(xiàng)目資源,打包、編譯、預(yù)處理、后處理等等。webpack的出現(xiàn)無疑是前端開發(fā)者的福音,我的博文只...
摘要:全網(wǎng)最貼心系列教程和配套代碼歡迎關(guān)注個(gè)人技術(shù)博客。所以我花費(fèi)了個(gè)多月整理了這份教程,一共分成節(jié),每節(jié)都有講解,并且準(zhǔn)備了配套代碼。奈何深感水平不夠,只有一腔熱情,所以直接開放了教程和源碼。 webpack-demos:全網(wǎng)最貼心 webpack 系列教程和配套代碼 歡迎關(guān)注個(gè)人技術(shù)博客:godbmw.com。每周 1 篇原創(chuàng)技術(shù)分享!開源教程(webpack、設(shè)計(jì)模式)、面試刷題(偏前...
摘要:文件配置如下多頁面應(yīng)用注意屬性其次打包業(yè)務(wù)中公共代碼首先打包中的文件著重來看配置。個(gè)人網(wǎng)站原文鏈接系列教程三多頁面解決方案提取公共代碼 這節(jié)課講解webpack4打包多頁面應(yīng)用過程中的提取公共代碼部分。相比于webpack3,4.0版本用optimization.splitChunks配置替換了3.0版本的CommonsChunkPlugin插件。在使用和配置上,更加方便和清晰。 >>...
摘要:按照我們的仿真的環(huán)境,最終之后的效果應(yīng)該是打包后的文件不含有樣式類。如果忘記了它的用法,請(qǐng)查看系列教程六處理系列教程五處理所以,我們的文件如下安裝完相關(guān)插件后,我們需要在的配置中引用第三部分定義的代碼。 教程所示圖片使用的是 github 倉庫圖片,網(wǎng)速過慢的朋友請(qǐng)移步 原文地址 有空就來看看個(gè)人技術(shù)小站, 我一直都在 0. 課程介紹和資料 本次課程的代碼目錄(如下圖所示):s...
摘要:按照我們的仿真的環(huán)境,最終之后的效果應(yīng)該是打包后的文件不含有樣式類。如果忘記了它的用法,請(qǐng)查看系列教程六處理系列教程五處理所以,我們的文件如下安裝完相關(guān)插件后,我們需要在的配置中引用第三部分定義的代碼。 教程所示圖片使用的是 github 倉庫圖片,網(wǎng)速過慢的朋友請(qǐng)移步 原文地址 有空就來看看個(gè)人技術(shù)小站, 我一直都在 0. 課程介紹和資料 本次課程的代碼目錄(如下圖所示):s...
閱讀 3316·2021-11-16 11:45
閱讀 4387·2021-09-22 15:38
閱讀 2841·2021-09-22 15:26
閱讀 3347·2021-09-01 10:48
閱讀 827·2019-08-30 15:56
閱讀 715·2019-08-29 13:58
閱讀 1487·2019-08-28 18:00
閱讀 2160·2019-08-27 10:53