2020-12-05

一映凳、webpack的使用

1.入門

(1)建兩個(gè)文件夾分別為src和dist建一個(gè)文件為index.html,在src下建一個(gè)文件main.js其爵,在建一個(gè)文件夾js儒溉,里面建一個(gè)mathUtils.js毅该。

image.png

(2)在mathUtils.js里寫入簡單函數(shù)并導(dǎo)出青伤,在main.js中導(dǎo)入

mathUtils.js:

function add(num1, num2) {
    return num1 + num2
}

function mul(num1, num2) {
    return num1 * num2
}

module.exports = {
    add,
    mul
}

main.js:

//使用commonjs模塊化的規(guī)范
const {
    add,
    mul
} = require('./mathUtils.js')

console.log(add(20, 13));
console.log(mul(20, 30));

(3)用webpack命令打包

在項(xiàng)目的終端中輸入:

webpack ./src/main.js ./dist/bundle.js
//或者
webpack ./src/main.js -o ./dist/bundle.js

image.png

(4)在index.html中引用新增的文件bundle.js

<script src="./dist/bundle.js"></script>

(5)運(yùn)行index.html文件
image.png

2. 通過配置文件來使用webpack

(1)在終端中使用npm init命令自動(dòng)創(chuàng)建這個(gè)package.json文件

npm init

[圖片上傳失敗...(image-4b18b8-1607182518286)]

(2)在文件的根目錄下建一個(gè)webpack.config.js文件

const path = require('path')

module.exports = {
    entry: './src/main.js', //入口文件
    output: {
        //絕對路徑
        //_dirname是node.js中的全局變量梦谜,指向當(dāng)前執(zhí)行腳本所在的目錄
        path: path.resolve(__dirname, 'dist'), //打包后文件存放的位置
        filename: 'bundle.js', //打包后的文件名
    },
}

我們可以通過webpack代替 webpack ./src/main.js -o ./dist/bundle.js 的命令進(jìn)行打包丘跌,這樣就方便很多

image.png

(3)我們還可以通過npm的命令對文件進(jìn)行打包,不過要在package.json文件進(jìn)行配置唁桩,在script對象中添加命令

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack"
  },

然后我們就可以通過npm run build對文件進(jìn)行打包

image.png

3.配置Loader

Webpack 本身只能處理 JavaScript 模塊闭树,如果要處理其他類型的文件,就需要使用 loader 進(jìn)行轉(zhuǎn)換荒澡。loader可以加載css报辱、圖片,也包括一些高級的单山,將ES6轉(zhuǎn)成ES5代碼碍现,將TypeScript轉(zhuǎn)成ES5代碼,將scss米奸、less轉(zhuǎn)成css昼接,將.jsx、.vue文件轉(zhuǎn)成js文件等等悴晰。

(1)css文件

在src文件夾下再建一個(gè)css文件慢睡,在css文件夾下建一個(gè)normol.css文件

body {
    background-color: black;
}

在main.js中導(dǎo)入

require('./css/normol.css')

用npm命令來安裝 css-loader 和 style-loader

 npm install style-loader --save-dev
 npm install css-loader --save-dev

在webpack.config.js中的module關(guān)鍵字下進(jìn)行配置

module.exports = {
    module: {
        rules: [{
            test: /\.css$/,
            use: ['style-loader', 'css-loader']
        }]
    }
}

用npm run build 進(jìn)行打包后逐工,打開瀏覽器運(yùn)行。
(2)less文件
在css文件夾下建一個(gè)special.less文件

@fontSize:50px;
@fontColor:red;

body{
    font-size: @fontSize;
    color: @fontColor;
}

在main.js中導(dǎo)入

require('./css/special.less')
document.writeln("<h2>你好啊hhhghfgkg</h2>")

用npm命令來安裝 less-loader 和 less

npm install --save-dev less-loader less

在webpack.config.js中的module關(guān)鍵字下進(jìn)行配置

module.exports = {
    module: {
        rules: [{
            test: /\.less$/,
            use: [{
                loader: "style-loader" // creates style nodes from JS strings
            }, {
                loader: "css-loader" // translates CSS into CommonJS
            }, {
                loader: "less-loader" // compiles Less to CSS
            }]
        }]
    }
}

用npm run build 進(jìn)行打包后漂辐,打開瀏覽器運(yùn)行
(3)圖片
在src文件夾下再建一個(gè)img文件泪喊,在img文件夾下放兩張圖片,一張圖片較大(大于limit)髓涯,一張圖片較刑惶洹(小于limit),在normol.css中使用較小的圖片

normal.css

body{
    background: url("../img/1.jpg");
}

用npm命令來安裝 url-loader

npm install --save-dev url-loader

在webpack.config.js中的modules關(guān)鍵字下進(jìn)行配置

module.exports = {
    module: {
        rules: [{
            test: /\.(png|jpg|gif)$/,
            use: [{
                loader: 'url-loader',
                options: {
                    limit: 130000,
                },
            }]
        }]
    }
}

用npm run build 進(jìn)行打包后纬纪,打開瀏覽器運(yùn)行瘤泪。當(dāng)加載的圖片小于limit時(shí),會(huì)將圖片編譯成base64字符串形式

修改normol.css文件育八,將較大圖片替換成較小圖片的url对途;并且下載file-loader的模塊。

npm install --save-dev file-loader

在webpack.config.js中進(jìn)行配置

const path = require('path')

module.exports = {
    entry: './src/main.js',
    output: {
        //絕對路徑
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js',
        publicPath: 'dist/'
    },
    module: {
        rules: [{
            test: /\.(png|jpg|gif)$/,
            use: [{
                loader: 'url-loader',
                options: {
                    limit: 130000,
                    name: 'img/[name].[hash:8].[ext]' //圖片的命名及路徑
                },
            }]
        }]
    }
}

再次進(jìn)行打包發(fā)現(xiàn)髓棋,dist文件下多了一個(gè)img的文件夾实檀,里面有一張圖片,打開瀏覽器運(yùn)行按声。
(4)babel文件
用npm命令來安裝 babel-loader和 babel-core及babel-preset-env還有webpack

npm install babel-loader babel-core babel-preset-env webpack
npm i @babel/core --save-dev
npm i @babel/preset-env --save-dev

在webpack.config.js中的module關(guān)鍵字下進(jìn)行配置

module.exports = {
    module: {
        rules: [{
            test: /\.js$/,
            //exclude:排除  include:包含
            exclude: /(node_modules|bower_components)/,
            use: {
                loader: 'babel-loader',
                options: {
                    presets: ['@babel/preset-env']
                }
            }
        }, ]
    }
}

用npm run build 進(jìn)行打包后膳犹,打開bundle.js文件發(fā)現(xiàn)代碼都是用es5寫的
(5)webpack使用Vue的配置過程

vue有兩個(gè)版本:

runtime-only : 代碼中不可以有template
runtime-compiler: 代碼中可以有template,因?yàn)橛衏ompiler可以編譯template

首先使用:
npm install vue --save //這里不要使用--save-dev因?yàn)樗粌H開發(fā)時(shí)會(huì)用签则,打包運(yùn)行也需要

然后引入:

打包前還需要配置resolve:

如果不進(jìn)行配置的話會(huì)使用runtime-only版本而無法成功運(yùn)行须床。


轉(zhuǎn)自:https://blog.csdn.net/Wu_JingYi0829/article/details/109894503

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市渐裂,隨后出現(xiàn)的幾起案子豺旬,更是在濱河造成了極大的恐慌,老刑警劉巖柒凉,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件族阅,死亡現(xiàn)場離奇詭異,居然都是意外死亡膝捞,警方通過查閱死者的電腦和手機(jī)坦刀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔬咬,“玉大人鲤遥,你說我怎么就攤上這事×炙遥” “怎么了盖奈?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長北启。 經(jīng)常有香客問我卜朗,道長,這世上最難降的妖魔是什么咕村? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任场钉,我火速辦了婚禮,結(jié)果婚禮上懈涛,老公的妹妹穿的比我還像新娘衰猛。我一直安慰自己火惊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孤荣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪羡洛。 梳的紋絲不亂的頭發(fā)上柑司,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機(jī)與錄音拷呆,去河邊找鬼闲坎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛茬斧,可吹牛的內(nèi)容都是我干的腰懂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼项秉,長吁一口氣:“原來是場噩夢啊……” “哼绣溜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娄蔼,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤怖喻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后岁诉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罢防,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年唉侄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咒吐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,021評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡属划,死狀恐怖恬叹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情同眯,我是刑警寧澤绽昼,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站须蜗,受9級特大地震影響硅确,放射性物質(zhì)發(fā)生泄漏目溉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一菱农、第九天 我趴在偏房一處隱蔽的房頂上張望缭付。 院中可真熱鬧,春花似錦循未、人聲如沸陷猫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绣檬。三九已至,卻和暖如春嫂粟,著一層夾襖步出監(jiān)牢的瞬間娇未,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工星虹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忘蟹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓搁凸,卻偏偏與公主長得像媚值,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子护糖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容

  • --- title: webpack-base-study date: 2019-06-27 15:56:22 t...
    Vue_1c5e閱讀 177評論 0 0
  • nrm的安裝和使用: 作用:提供了一些最常用的NPM包鏡像地址褥芒,能夠讓我們快速的切換安裝包時(shí)候的服務(wù)器地址;什么是...
    東邪_黃藥師閱讀 498評論 0 2
  • 在網(wǎng)頁中會(huì)引用哪些常見的靜態(tài)資源嫡良? JS .js .jsx .coffee .ts(TypeScript ...
    瓔珞紈瀾閱讀 347評論 0 0
  • 1锰扶、 Loader是什么? 1寝受、我們之前打包的都是js文件坷牛,下面試試打包一個(gè)圖片文件。 首先將一個(gè)圖片文件放進(jìn)sr...
    無爭公子__閱讀 507評論 0 0
  • 久違的晴天很澄,家長會(huì)京闰。 家長大會(huì)開好到教室時(shí),離放學(xué)已經(jīng)沒多少時(shí)間了甩苛。班主任說已經(jīng)安排了三個(gè)家長分享經(jīng)驗(yàn)蹂楣。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,523評論 16 22