Webpack 具有共享组件的两个SPA应用程序的Vue.js项目结构
我正在使用Vue.js库启动一个项目。该项目包含三个应用程序:Webpack 具有共享组件的两个SPA应用程序的Vue.js项目结构,webpack,vue.js,Webpack,Vue.js,我正在使用Vue.js库启动一个项目。该项目包含三个应用程序: b2c() 管理员() b2c和管理员之间的共享组件(商店、组件、模型等) 我应该如何设置项目结构和网页包配置,以防止使用共享组件的代码重复。此外,我希望使用npm运行build来生成build\admin和build\b2c,并保持构建/发布的简单性(没有其他存储库,如nuget等) 感谢您提供任何参考资料或模板。这里是一个使用ES6模块的示例(您当然可以使用webpack的模块,但我更喜欢这种方式)。例如,你有这个结构 /a
- b2c()
- 管理员()
- b2c和管理员之间的共享组件(商店、组件、模型等)
感谢您提供任何参考资料或模板。这里是一个使用ES6模块的示例(您当然可以使用webpack的模块,但我更喜欢这种方式)。例如,你有这个结构
/assets
/-js
/--components
/---shared
/---admin
/---b2c
/--directives
/--stores
/--models
/b2c.js
/admin.js
因此,在您的b2c.js中,您需要以这种方式使用它
import Vue from 'Vue';
import component from './components/shared/SomeComponent.vue';
/*or var component = require('./components/shared/SomeComponent.vue'); if you want to use webpack here*/
import b2cOnly from './components/b2c/SomeComponent.vue';
let app = new Vue({
el: '#app',
components: {component, b2cOnly}
});
和类似的admin.js
import Vue from 'Vue';
import component from './components/shared/SomeComponent.vue';
import adminOnly from './components/admin/SomeComponent.vue';
let app = new Vue({
el: '#app',
components: {component, adminOnly}
});
然后,您可以轻松地将其与vue loader
绑定(如果您像我一样使用browserify,也可以使用vueify)
下面是来自文档的webpack.config.js
示例
// webpack.config.js
module.exports = {
// other options ...
module: {
loaders: [
{
// use vue-loader for *.vue files
test: /\.vue$/,
loader: 'vue'
},
{
// use babel-loader for *.js files
test: /\.js$/,
loader: 'babel',
// important: exclude files in node_modules
// otherwise it's going to be really slow!
exclude: /node_modules/
}
]
},
// if you are using babel-loader directly then
// the babel config block becomes required.
babel: {
presets: ['es2015'],
plugins: ['transform-runtime']
}
}
然后,您可以将编译的admin.js
和b2c.js
包含在项目中的某个地方。下面是一个使用ES6模块的示例(您当然可以使用webpack的模块,但我更喜欢这种方式)。例如,你有这个结构
/assets
/-js
/--components
/---shared
/---admin
/---b2c
/--directives
/--stores
/--models
/b2c.js
/admin.js
因此,在您的b2c.js中,您需要以这种方式使用它
import Vue from 'Vue';
import component from './components/shared/SomeComponent.vue';
/*or var component = require('./components/shared/SomeComponent.vue'); if you want to use webpack here*/
import b2cOnly from './components/b2c/SomeComponent.vue';
let app = new Vue({
el: '#app',
components: {component, b2cOnly}
});
和类似的admin.js
import Vue from 'Vue';
import component from './components/shared/SomeComponent.vue';
import adminOnly from './components/admin/SomeComponent.vue';
let app = new Vue({
el: '#app',
components: {component, adminOnly}
});
然后,您可以轻松地将其与vue loader
绑定(如果您像我一样使用browserify,也可以使用vueify)
下面是来自文档的webpack.config.js
示例
// webpack.config.js
module.exports = {
// other options ...
module: {
loaders: [
{
// use vue-loader for *.vue files
test: /\.vue$/,
loader: 'vue'
},
{
// use babel-loader for *.js files
test: /\.js$/,
loader: 'babel',
// important: exclude files in node_modules
// otherwise it's going to be really slow!
exclude: /node_modules/
}
]
},
// if you are using babel-loader directly then
// the babel config block becomes required.
babel: {
presets: ['es2015'],
plugins: ['transform-runtime']
}
}
然后,您可以在项目中的某个地方包含编译的admin.js
和b2c.js
。如果您只需要组件之间的代码共享(而不需要与状态、数据等个人相关的东西),那么您可以在模块上拆分它,并在两个项目中使用它们@所以我理解在这种情况下应该是“如何使用网页问题”?您是否有任何项目的示例配置提交给模块b2c、管理员和共享组件模块,这些模块可以使用webpack构建?请参阅下面的回答。如果您只需要组件之间的代码共享(而不需要与个人相关的东西,如状态、数据),则可以在模块上拆分,并在两个项目中使用它们@所以我理解在这种情况下应该是“如何使用网页问题”?您是否有任何样本配置的项目吐到模块b2c,管理员与共享组件模块,可以建立使用网页?见我的答案如下