我有一个应用程序,我正在使用Single File Components
来显示表中的数据。根据{{1}}字符串和我想要包含在结果中的列来查询数据(数据基本上是由ajax请求获取的)。
我的目标是创建一个可重用的组件,以便我可以将查询文本和列名称传递给组件。通常情况下,我可以使用search
和props
,但由于我使用的是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时我都必须重新打包该组件,并且对于组件的多次使用,我需要打包它们每次都用于使用不同数据的每个实例......
有什么想法吗?
答案 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
。