我是Vue.js的新手,想要使用单文件组件,但我不了解工作流程。
例如,我有三个组成部分:App
,Grid
和List
App.vue
<template>
<div id="app">
<div id="grid"></div>
<div id="right"></div>
</div>
</template>
<script>
export default {
name: 'app',
data () {
return {
message: 'Hello Vue!'
}
}
}
</script>
Grid.vue
<template>
<div id="left"></div>
</template>
<script>
export default {
name: 'grid',
data: function () {
return {
grid: 'some-data'
}
}
}
</script>
List.vue
<template>
<div id="right"></div>
</template>
<script>
export default {
name: 'list',
data: function () {
return {
text: 'some-text'
}
}
}
</script>
Main.js
import Vue from 'vue'
import App from './vue/App.vue'
import Grid from './vue/Grid.vue'
import PatternList from './vue/PatternList.vue'
new Vue({
el: '#app',
render: h => h(App)
});
new Vue({
el: '#grid',
render: h => h(Grid)
});
new Vue({
el: '#right',
render: h => h(PatternList)
});
它有效,但我希望这不是创建嵌套组件的正确方法。
任何人都可以表明应该这样做吗?感谢
答案 0 :(得分:55)
您可以使用Vue.component
method注册组件:
App
然后使用标记名称直接将它们添加到<template>
<div id="app">
<grid></grid>
<pattern-list></pattern-list>
</div>
</template>
模板中:
new Vue({
el: '#app',
render: h => h(App),
components: {
'grid': Grid,
'pattern-list': PatternList
}
});
这会全局注册组件,这意味着任何Vue实例都可以将这些组件添加到其模板中,而无需任何其他设置。
您还可以将组件注册到Vue实例,如下所示:
script
或在单个文件组件的<script>
import Grid from './vue/Grid.vue'
export default {
name: 'app',
components: {
'grid': Grid,
'pattern-list': PatternList
}
});
</script>
标记内:
`Array
(
[Date] => Thu, 15 Jun 2017 13:06:37 GMT
[Server] => Apache/2.4.18 (Win32) OpenSSL/1.0.2f PHP/5.6.18
[X-Powered-By] => PHP/5.6.18
[Content-Length] => 7790
[Content-Type] => application/json; charset=utf-8
)`
这会将组件注册到该Vue实例,这意味着这些注册的组件只能在该Vue实例的模板中使用。除非这些组件也注册到子Vue实例,否则子组件将无权访问这些已注册的组件。