Vue.js 加载单文件组件
Vue.js loading single-file components
我是 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)
});
它有效,但我希望这不是创建嵌套组件的正确方法。
谁能告诉我应该怎么做?谢谢
您可以使用 Vue.component
method 注册组件:
import Vue from 'vue'
import App from './vue/App.vue'
import Grid from './vue/Grid.vue'
import PatternList from './vue/PatternList.vue'
Vue.component('grid', Grid);
Vue.component('pattern-list', PatternList);
new Vue({
el: '#app',
render: h => h(App)
});
然后直接使用标签名称将它们添加到 App
模板:
<template>
<div id="app">
<grid></grid>
<pattern-list></pattern-list>
</div>
</template>
这会全局注册组件,这意味着任何 Vue 实例都可以将这些组件添加到它们的模板中,而无需任何额外设置。
你也可以将组件注册到 Vue 实例,像这样:
new Vue({
el: '#app',
render: h => h(App),
components: {
'grid': Grid,
'pattern-list': PatternList
}
});
或者单文件组件的script
标签内:
<script>
import Grid from './vue/Grid.vue'
export default {
name: 'app',
components: {
'grid': Grid,
'pattern-list': PatternList
}
});
</script>
这会将组件注册到该 Vue 实例,这意味着这些已注册的组件将只能在该 Vue 实例的模板中使用。子组件将无法访问那些已注册的组件,除非这些组件也已注册到子 Vue 实例。
我是 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)
});
它有效,但我希望这不是创建嵌套组件的正确方法。
谁能告诉我应该怎么做?谢谢
您可以使用 Vue.component
method 注册组件:
import Vue from 'vue'
import App from './vue/App.vue'
import Grid from './vue/Grid.vue'
import PatternList from './vue/PatternList.vue'
Vue.component('grid', Grid);
Vue.component('pattern-list', PatternList);
new Vue({
el: '#app',
render: h => h(App)
});
然后直接使用标签名称将它们添加到 App
模板:
<template>
<div id="app">
<grid></grid>
<pattern-list></pattern-list>
</div>
</template>
这会全局注册组件,这意味着任何 Vue 实例都可以将这些组件添加到它们的模板中,而无需任何额外设置。
你也可以将组件注册到 Vue 实例,像这样:
new Vue({
el: '#app',
render: h => h(App),
components: {
'grid': Grid,
'pattern-list': PatternList
}
});
或者单文件组件的script
标签内:
<script>
import Grid from './vue/Grid.vue'
export default {
name: 'app',
components: {
'grid': Grid,
'pattern-list': PatternList
}
});
</script>
这会将组件注册到该 Vue 实例,这意味着这些已注册的组件将只能在该 Vue 实例的模板中使用。子组件将无法访问那些已注册的组件,除非这些组件也已注册到子 Vue 实例。