Vue 本地组件

到目前为止,我们包含组件的方式使它们可以从项目中的所有 *.vue 文件中访问。

组件可以本地化,这意味着它们只能在特定的 *.vue 文件中访问。


全局组件

到目前为止,我们在 main.js 中包含组件的方式使这些组件可以在该项目中所有其他 *.vue 文件的 <template> 中访问。

实例

我们在 CompOne.vueApp.vue 中都使用了 CompTwo.vue 组件,以表明在当前的 main.js 设置中,组件可以相互访问。

main.js:

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import CompOne from './components/CompOne.vue'
  4. import CompTwo from './components/CompTwo.vue'
  5. const app = createApp(App)
  6. app.component('comp-one', CompOne)
  7. app.component('comp-two', CompTwo)
  8. app.mount('#app')

本地组件

我们可以在 *.vue 文件的 <script> 标记中直接包含一个组件,而不是将其包含 main.js 中。

如果我们在 *.vue 文件中直接包含一个组件,那么该组件只能在该文件中本地访问。

实例

为了使 CompOne.vue 成为 App.vue 的本地组件,并且只能在那里访问,我们将其从 main.js 中删除。

main.js:

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import CompTwo from './components/CompTwo.vue'
  4. const app = createApp(App)
  5. app.component('comp-two', CompTwo)
  6. app.mount('#app')

并将 CompOne.vue 直接包含在 App.vue<script> 标记中。

App.vue:

  1. <template>
  2. <h3>Local Component</h3>
  3. <p>The CompOne.vue component is a local component and can only be used inside App.vue.</p>
  4. <comp-one />
  5. <comp-two />
  6. </template>
  7. <script>
  8. import CompOne from './components/CompOne.vue';
  9. export default {
  10. components: {
  11. 'comp-one': CompOne
  12. }
  13. }
  14. </script>

CompOne.vue 组件现在仅在 App.vue 中可用。

如果您在开发模式下运行应用程序,并尝试从 CompOne.vue 内部使用 CompTwo.vue,则会收到警告: