上一篇我們稍微提到了webpack.config.js。今天主要來說下如何配置多入口,多出口。
我們之前寫到的webpack.config.js,具體代碼如下:
module.exports = { mode: 'development', //入口 entry: __dirname + '/src/entry.js', //出口 output: { path:__dirname + '/dist', filename: 'bundle.js', } }
上面的entry 和 output 就是單一的入口和出口。
下面我們創建一個多入口,多出口的實例。
准備工作如下:
1. 新建文件夾:page,並在該文件夾下面創建 index.html 和 signup.html 2個文件
index.html代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>index</title> </head> <body> <div id="title"></div> <script src="../src/base.js"></script> <script src="../src/index.js"></script> </body> </html>
index.html 引用了base.js 和 index.js。js文件我們等會創建。
signup.html代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>signup</title> </head> <body> <script src="../src/base.js"></script> <script src="../src/signup.js"></script> </body> </html>
signup.html 引用了base.js 和 signup.js。
2. 在src文件夾下面創建base.js, index.js, signup.js 3個js 文件:
base.js:
var open=true; export {open};
index.js:
import {open} from './base'; if(open){ document.body.innerHTML=`<a href="signup.html">注冊</a>` }
signup.js:
import {open} from './base'; if(open){ document.body.innerHTML=`<h1>Hello World!</h1>` }else{ document.body.innerHTML=`<h1>暫不開放注冊</h1>` }
從上面我們得知 index.html 頁面引用了base.js 和 index.js ,
signup.html 引用了base.js 和 signup.js。
我們通過webpack如何分別打包js文件呢?這里我們通過 webpack 的多入口 和 多出口配置就能達到該目的了。
3. 配置多入口,多出口:
module.exports = { mode: 'development', entry: { index:__dirname + '/src/index.js', signup:__dirname + '/src/signup.js', }, output: { path:__dirname + '/dist', filename: '[name].bundle.js', } }
跟單入口,單出口的文件相比,entry現在是一個對象了,output 的 filename 多了一個 [name].。
最后執行打包命令,可以看到 dist 目錄下面生成了 index.bundle.js 和 signup.bundle.js 。
所以這里的 [name] 等同於 entry 定義的鍵名。
執行結果如下:
文件打包完成之后,記得把你html 引用的js 路徑改成你打包后的js路徑。如下圖:
index.html:
signup.html:
感謝閱讀~~