Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack 具有共享组件的两个SPA应用程序的Vue.js项目结构_Webpack_Vue.js - Fatal编程技术网

Webpack 具有共享组件的两个SPA应用程序的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

我正在使用Vue.js库启动一个项目。该项目包含三个应用程序:

  • b2c()
  • 管理员()
  • b2c和管理员之间的共享组件(商店、组件、模型等)
我应该如何设置项目结构和网页包配置,以防止使用共享组件的代码重复。此外,我希望使用npm运行build来生成build\admin和build\b2c,并保持构建/发布的简单性(没有其他存储库,如nuget等)


感谢您提供任何参考资料或模板。

这里是一个使用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,管理员与共享组件模块,可以建立使用网页?见我的答案如下