vuejs - 如何将数据传递给webpacked根实例

时间:2017-01-03 05:10:35

标签: javascript webpack vue.js

我有一个应用程序,我正在使用Single File Components来显示表中的数据。根据{{​​1}}字符串和我想要包含在结果中的列来查询数据(数据基本上是由ajax请求获取的)。

我的目标是创建一个可重用的组件,以便我可以将查询文本和列名称传递给组件。通常情况下,我可以使用searchprops,但由于我使用的是slots,因此我不知道如何将数据传递给组件。

Single File Components的“public”界面如下所示:

Single File Component
<!-- index.hmtl -->
<div id="app"></div>
<script src="./build/webpackedComponent.js"></script>

// main.js / Component entry point import Vue from 'vue' import App from './components/app.vue' new Vue({ el: '#app', render: h => h(App) }) 内,我需要ajax请求的数据。我的想法是在组件的主入口点导入App文件,但是每次更改json时我都必须重新打包该组件,并且对于组件的多次使用,我需要打包它们每次都用于使用不同数据的每个实例......

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

找到您的webpack.base.conf.js文件(在我的项目中,它位于build文件夹中)或等效的配置文件,然后将library: 'myLibrary'添加到输出对象。

(最终应该是这样的:)

module.exports = {
  entry: {
    app: ['./src/main.js']
  },
  output: {
    library: 'myLibrary',
    path: config.build.assetsRoot,
    publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath,
    filename: '[name].js'
  },
  .
  .
  .

然后在main.js中,您可以像这样导出Vue:

// main.js / Component entry point
import Vue from 'vue'
import App from './components/app.vue'

export { Vue, App };

现在,在全球范围内,您可以这样做:

new myLibrary.Vue({
  el: '#app',
  data: {
    value1: 12,
    value2: 14
  },
  components: { App: myLibrary.App },
  template: '<App :prop1="value1", :prop2="value2"></App>'
});

也就是说,无论您在main.js中导出的​​内容,都可以通过您在webpack配置文件中提供的库的名称访问全局范围...在这种情况下,myLibrary