爲何要構建多頁應用呢?由於個人項目原本就是多頁應用啊
至於爲何要用webpack?由於我要用vue啊,嫌gulp 每次打包慢 啊vue
文章目錄webpack
想法老是簡單,實踐老是多坑。es6
理論支持:spa爲單頁,那麼我是否是輸出多個頁面就成了多頁呢?好像很對的樣子。
問題來了,如何才能輸出多個頁面,主意很容易打到 html處理插件 html-webpack-plugin上面。
單頁面輸出:web
1
2
3
4
5
|
new HtmlWebpackPlugin({
filename: 'index.html',
template: path.
resolve(__dirname, './app/views/index.html'),
inject: true
})
|
多頁面只須要多new 幾個HtmlWebpackPlugin就行了嘛
立刻實踐,果真能夠,✌️。那就動動吧!
興奮的修改配置以下:vue-cli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# webpack.base.conf.js
entry: getEntry(),
//獲取js下面的全部輸出js,多頁面嘛
function getEntry() {
var jsPath = fs.readdirSync('./js/');
var matchs = [],files = {};
jsPath.
forEach(function(item) {
matchs = item.match(/(.+)\.js$/);
if (matchs) {
files[matchs[
1]] = path.resolve('./js/', item);
}
});
return files;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# webpack.dev.conf.js
var baseWebpackConfig = require('./webpack.base.conf');
var pages = function() {
var dir = fs.readdirSync(path.resolve(__dirname, '../views/'));
return dir.filter(function(name) {
return name.match(/\.html$/);
});
}();
for(var i = 0; i<pages.length; i++){
var chunkname = pages[i];
var conf = {
filename: chunkname,
template: path.resolve(__dirname,
'../views/'+chunkname),
inject:
false
}
baseWebpackConfig.plugins.push(
new HtmlWebpackPlugin(conf));
}
|
想必聰明的你還記得我以前說過的 inject 這個參數吧
若是inject: true,那麼每一個頁面會注入entry中全部的js,因此配置爲false,js本身寫入npm
相對的,webpack.prod.conf.js也須要作相應配置。
至於其餘資源文件路徑什麼報錯問題,請自行解決,畢竟項目架構不一樣,錯誤也不盡相同。gulp
我也是吃了不少苦頭,排盡萬難,終於把以前用gulp搭建的項目轉換成webpack以後,並無興奮。
由於結果並不令我滿意,爲何呢?babel
啦啦啦
我在等一分鐘
或許下一分鐘
可以感受你也心痛
…
我想哭架構
es6語法解決以後,打包更慢了,何止一分鐘。。。此次不單單想哭
雖然說整個項目用webpack打包,可是還有一些task必須依賴gulp完成,定製需求。
由於坑太多,太慢,太痛,太捉急,等等。至此擱筆,果斷拋棄此方案!