Vuejs2 如何使用webpack拆分通用业务代码?

Vuejs2 如何使用webpack拆分通用业务代码?,vuejs2,webpack-2,vue-router,Vuejs2,Webpack 2,Vue Router,我使用webpack.optimize.commonChunkPlugin生成一个额外的块(vueCommon.js),其中包含vuejs、vue路由器、vue资源。。。;但我想生成另一个业务commonChunk,如util.js。它们仅在某些页面中由“从“../service/service.js”导入ajax”使用 构建后的问题: 每个生成的page.js都有service.js的代码 简要演示: //webpack.base.js “严格使用”; var path=require('

我使用webpack.optimize.commonChunkPlugin生成一个额外的块(vueCommon.js),其中包含vuejs、vue路由器、vue资源。。。;但我想生成另一个业务commonChunk,如util.js。它们仅在某些页面中由“从“../service/service.js”导入ajax”使用

构建后的问题: 每个生成的page.js都有service.js的代码

简要演示:

//webpack.base.js
“严格使用”;
var path=require('path');
var webpack=require('webpack');
var HtmlWebpackPlugin=require('html-webpack-plugin');
const CONFIG=require('./CONFIG');
var projectRoot=CONFIG.projectRoot | | path.resolve(u dirname,“../”);
var _ENV=CONFIG.ENV | |'dev'//戳
module.exports={
devtool:_ENV!=“prod”?“#评估源映射”:false,
上下文:_dirname//http://wxungang.github.io/1104/vue
条目:{
app:path.join(projectRoot'./vue/app.js'),
page:path.join(projectRoot'./vue/page.js')
},
输出:{
path:path.join(projectRoot'./build/vue-'+\u ENV),
publicPath:“”,//'./build/vue-“+”ENV+“//',//path.join(\uu dirname,“../src/build/dev/”)
文件名:'[name].js',
chunkFilename:'chunks/[name].chunk.js',
//crossOriginLoading:“匿名”
},
决心:{
别名:{
“vue$”:“vue/dist/vue.common.js”,
“vue router$”:“vue router/dist/vue router.common.js”
},
模块:[“节点模块”],
主文件:[“索引”,“应用程序”],
扩展名:[“.js”、“.json”、“.vue”]
},
模块:{
规则:[
{
测试:/\.vue$/,,
加载程序:“vue加载程序”,
选项:{
装载机:{
//由于sass加载器(奇怪地)将SCSS作为其默认解析模式,因此我们映射
//右侧lang属性的“scss”和“sass”值在此处配置。
//其他预处理器应该开箱即用,不需要像这样的加载程序配置。
“scss”:“vue样式加载程序!css加载程序!sass加载程序”,
“sass”:“vue样式加载程序!css加载程序!sass加载程序?缩进语法”,
'less':'vue样式加载程序!css加载程序!less加载程序'
}
//其他vue加载程序选项在此处
}
},
{
测试:/\.js$/,,
加载器:“巴别塔加载器”,
排除:/node\u模块/
},
{
测试:/\.减去$/,,
加载器:“样式加载器!css加载器!更少加载器”
},
{
测试:/\.scss$/,,
加载器:[“样式加载器”、“css加载器”、“sass加载器”]
},
{
测试:/\.json$/,,
加载程序:“json加载程序”
},
{
测试:/\.html$/,,
加载程序:“vue html加载程序”
},
{
测试:/\(png | jpg | gif | svg)$/,
加载器:“文件加载器”,
选项:{
名称:'[name].[ext]?[hash]'
}
}
]
},
插件:[
//注入一些全局变量
新的webpack.DefinePlugin({
_环境:环境,
_版本:JSON.stringify(“1.0.0”)
}),
新建webpack.optimize.commonChunkPlugin({
名称:“公地”,
//(公共块名称)
文件名:“vueCommons.js”,
//(公共块的文件名)
//minChunks:2,
//(模块必须在3个条目之间共享)
//块:[“pageA”,“pageB”],
//(仅使用这些条目)
//孩子们:没错,
//async:true,
}),
//可以和进入文件联合配置
新HtmlWebpackPlugin({
注:错,
标题:“应用程序的vueJs”,
文件名:“app.html”,
模板:'../vue/entry/template.ejs',
脚本:['./vueCommons.js','./app.js']
}),
新HtmlWebpackPlugin({
注:错,
标题:“第页的vueJs”,
文件名:“page.html”,
模板:'../vue/entry/template.ejs',
脚本:['./vueCommons.js','./page.js']
})
]

};您是如何使用CommonChunkPlugin生成vueCommon.js的

一个简单的方法是添加一个新的wepack条目,如

utils:['../service/service.js']

然后在webpack插件数组中添加一个新的CommonChunkPlugin实例,如下所示

newwebpack.optimize.commonChunkPlugin('utils'),

CommonChunkPlugin将通过删除其他块文件中的所有utils模块并只生成一个utils.js来完成这项工作


或者,您可以将现有CommonChunkPlugin的minChunks选项设置为一个数字,以将vue文件和UTIL包装在一起。

您可以提供您的
webpack.config.js
?很难想象。