有時候在一個vue項目需要多個入口,解決這個問題的方法有兩種:
方法一:
在main.js的入口文件中根據url的後綴名稱進行判斷然後進行頁面的跳轉
localhost:8080?startPage=index
根據startPage的值進行判斷
方法二:
給vue項目配置多個入口文件,通過訪問的地址的不同進行頁面的跳轉
具體操作爲:
在pages文件夾下新建index和admin、unqualified三個文件夾,然後將最外層的index.html和src下的main.js、App.vue、router文件夾移到index文件夾下,然後複製一份到admin和unqualified文件夾中。爲了以便區分,將admin文件夾下的index.html改名成admin.html,App.vue改名Admin.vue(刪除或更改其中的img標籤的src路徑,Admin.vue中的img標籤也做同樣處理),unqualified文件下的index.html改爲unqualified.html,App.vue改名Unqualified.vue,且不要忘了把這兩文件中id爲app的div對應改名爲admin、unqualified。
對admin文件夾下的main.js文件做一些改造(index文件夾下的main.js中 router的導入也需要修改下路徑),如下所示:
entry: {
// app: './src/main.js',
index: path.resolve(__dirname, '../dist/index.html'),
admin: path.resolve(__dirname,'../src/pages/admin/main.js'),
unquatified: path.resolve(__dirname, '../dist/unqualified.html'),
},
打開webpack.dev.conf.js文件,修改配置如下:
new HtmlWebpackPlugin({
filename: 'index.html',
template: './src/pages/index/index.html',
inject: true,
chunks:['app'],
excludeChunks:['admin','unqualified'] // 需排除的代碼塊
}),
new HtmlWebpackPlugin({
filename: 'unqualified.html',
template: './src/pages/unqualified/unqualified.html',
inject: true,
chunks:['unqualified'],
excludeChunks:['app','admin'] // 需排除的代碼塊
}),
new HtmlWebpackPlugin({
filename: 'admin.html',
template: './src/pages/admin/admin.html',
inject: true,
chunks:['admin'],
excludeChunks:['app','unqualified'] // 需排除的代碼塊
}),
打開webpack.prod.conf.js文件夾,修改如下:
new HtmlWebpackPlugin({
filename: config.build.index,
template: './src/pages/index/index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency',
chunks:['manifest','vendor','app'], // 打包時排除掉的代碼塊
}),
new HtmlWebpackPlugin({
filename: config.build.unqualified,
template: './src/pages/unqualified/unqualified.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
},
chunksSortMode: 'dependency',
chunks:['manifest','vendor','unqualified'],
excludeChunks: ['app'] // 打包時排除掉的代碼塊
}),
new HtmlWebpackPlugin({
filename: config.build.admin,
template: './src/pages/admin/admin.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
},
chunksSortMode: 'dependency',
chunks:['manifest','vendor','admin'],
excludeChunks: ['app'] // 打包時排除掉的代碼塊
}),
在config文件夾下index.js內增加以下變量:
unquatified: path.resolve(__dirname, '../dist/unqualified.html'),
admin: path.resolve(__dirname, '../dist/admin.html'),
在webpack.prod.conf.js註釋掉以下代碼:
// new webpack.optimize.CommonsChunkPlugin({
// name: 'app',
// async: 'vendor-async',
// children: true,
// minChunks: 3
// }),
index文件下的訪問路徑是:
http://localhost:8080/index.html#/
或者
http://localhost:8080/#/
admin文件夾下的訪問路徑:
http://localhost:8080/admin.html#/
unqualified文件下的訪問路徑:
http://localhost:8080/unqualified.html#/
參考項目下載地址:
https://download.csdn.net/download/zuoyiran520081/11846655