在 Vue.js 中,为什么我们必须在导入组件后导出它们?

2023-12-20

In PHP当我们包含另一个文件中的代码时,我们将其包含在内,就这样,代码现在可以在执行包含的文件中使用。但在Vue.js,导入组件后我们还必须导出它。

为什么?为什么我们不直接导入它呢?


in Vue.js,导入组件后我们还必须导出它。

我想你可能指的是以下几行User.vue并想知道为什么UserDetail and UserEdit导入到文件中,然后在脚本导出中导出components财产:

import UserDetail from './UserDetail.vue';
import UserEdit from './UserEdit.vue';

export default {
  components: {
    appUserDetail: UserDetail,
    appUserEdit: UserEdit
  }
}

vue-loader期望脚本导出.vue文件来包含组件的定义,该定义有效地包含组装组件模板的配方。如果模板包含其他 Vue 组件,则需要提供其他组件的定义,否则称为组件注册 https://v2.vuejs.org/v2/guide/components-registration.html#Local-Registration。正如@Sumurai8 指出的,导入.vuefiles 本身并没有注册对应的single-file-components;相反,这些组件必须在进口商的components财产。

例如,如果App.vue的模板包含<user /> and User.vue被定义为:

<template>
  <div class="user">
    <app-user-edit></app-user-edit>
    <app-user-detail></app-user-detail>
  </div>
</template>

<script>
export default {
  name: 'user'
}
</script>

...the User组件将呈现为空白,并且您将看到以下控制台错误:

[Vue warn]: Unknown custom element: <app-user-edit> - did you register the component correctly? For recursive components, make sure to provide the "name" option.
[Vue warn]: Unknown custom element: <app-user-detail> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

demo 1 https://codesandbox.io/s/8yv00079k8

当 Vue 尝试渲染时<user /> inside App.vue的模板,Vue不知道如何解析内部<app-user-detail> and <app-user-edit>因为他们的组件注册丢失了。这些错误可以通过本地组件注册来解决User.vue(即components属性如上所示)。

或者,可以通过以下方式解决错误全局组件注册 https://v2.vuejs.org/v2/guide/components-registration.html#Global-Registration of UserDetail and UserEdit,这将避免本地注册User.vue。注意,全局注册必须在创建Vue实例之前完成。例子:

// main.js
import Vue from 'vue';
import UserDetail from '@/components/UserDetail.vue';
import UserEdit from '@/components/UserEdit.vue';

Vue.component('app-user-detail', UserDetail);
Vue.component('app-user-edit', UserEdit);

new Vue(...);

demo 2 https://codesandbox.io/s/6nvn68lxrw

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Vue.js 中,为什么我们必须在导入组件后导出它们? 的相关文章

  • 使用 EventBus 通过单文件组件传递 Vue js 搜索过滤器功能

    我有以下组件 components SearchBlogs vue搜索要过滤的组件blog title and blog description components BlogList vue在这里我列出了所有博客项目 搜索博客 vue
  • 在 ES6 中使用 import 和 require 的正确方法是什么?

    关于 import 和 require 及其差异有多个问题 像这些 JavaScript 中的 import 和 require 有什么区别 https stackoverflow com questions 51373933 what i
  • Vue 3:使用渲染函数将所有项目包装在一个自定义组件中

    我正在尝试建立自己的sortable成分 我想将项目列表传递到它的默认插槽 然后 可排序组件应该用自定义包装所有传递的项目v draggable成分
  • 可以用vue-chartjs打印图表吗?

    我正在使用 vue chartjs 在网络应用程序上渲染图表 我知道如果您使用原始版本 您可以打印图表library https canvasjs com docs charts methods chart print 但是我不知道如何使用
  • 从 Vue CLI 切换到使用 Spring-Boot 作为后端的 Vite,开发服务器未按预期工作

    有多种方法可以将 Vue 项目集成到 Spring Boot 项目中 使用基于 webpack 的构建工具 例如 vue cli 我已经通过以下方式成功完成了几次 配置outputDir构建过程的输出被放置在例如 static dist 最
  • { ...obj1, obj2 } 到底做什么[重复]

    这个问题在这里已经有答案了 假设我们有两个对象 const state fishes some obj data animals some obj data const animals some NEW data 在Vuex中有一个方法re
  • npm run dev 和 npm run production 之间的区别

    我对 Laravel 和 vue js 很陌生 请让我知道它们之间有什么区别npm run dev and npm run production 这和环境有关系吗 npm run dev创建源映射并且不会缩小 js css 这使得调试和查找
  • 不使用Vue可以使用Vuex吗? (Vuex 服务器端?)

    Vuex 抱怨如果不调用 Vue use Vuex 就无法创建新的 store 实例 虽然这通常没问题 但我正在摆弄使用同一商店编写后端 前端的想法 有人知道答案吗 Thanks TL DR 你可以在 Node 中完美使用 Vuex 无需浏
  • 有没有V型斗篷的反面?

    根据VueJS 文档 https v2 vuejs org v2 api v cloak v cloak 指令可用于隐藏未编译的 Mustache 绑定 直到 Vue 实例准备就绪 换句话说 我可以隐藏一个div或类似的东西 当 vue 准
  • 从组件传递数据

    我对 Vue 相当陌生 我正在尝试将数据从组件传递到视图 我不确定我是否在使用props正确的 我有一个对话框 当我保存时 我想将数据插入数据库 我也想重复使用addCustomer function 这就是为什么我没有将该函数放置在组件中
  • Vue 监听 Vuex 提交吗?

    有没有一种方法可以监听 Vuex 提交 而不观察任何随提交而更改的属性 只是简单地找出是否发生了提交 我有一个 Filter 组件 想将其放入 NPM 包中 但我已经有一个用例 在该用例中 我希望设置一个 cookie 在选择过滤器时存储过
  • 左侧导航菜单上部隐藏

    当滚动到页面最底部时 左侧导航菜单的顶部将被隐藏 The image before scrolling is shown below 滚动后的效果如下图 我不确定此问题的确切原因 因此我将不胜感激任何有关识别和解决该问题的建议或帮助 为了确
  • Vue.js 中计算属性和普通数据的区别

    我观察到 当一个正常的财产来自data 和从它派生的计算属性通过事件传递 前者保持其反应性 而后者失去它 我为其设置了以下测试用例 也作为 JSFiddle https jsfiddle net christophfriedrich b27
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 将 CKEditor 5 与 nuxtjs 结合使用

    我正在尝试在我的 Nuxtjs 项目中导入 CKEditor 5 的自定义版本 并且我已经尝试了所有可能的方法来正确导入它 但没有一个对我有用 这是其中之一 let ClassicEditor let CKEditor if process
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • 简单的 Vue.js 计算属性说明

    我对 Vue js 并不陌生 但我会再次浏览文档 试图找出我第一次错过的任何内容 我在以下地方看到了这个声明使用计算属性的基本示例部分 https v2 vuejs org v2 guide computed html Basic Exam
  • Vue 表单输入与现有值的绑定

    我想将输入与模型绑定 当页面加载时 输入就有一个值 但是当我与模型绑定时 当我使用 null 或空值初始化模型时 它会变空 div div
  • 通知用户消息仍在输入中

    我正在使用 Laravel 5 6 7 Socket IO 和 vue js 我没有使用 Pusher 和 redis 下面是我的代码 用于向与我一对一聊天的用户发送消息 var url http localhost 6001 apps M

随机推荐

  • 暂停代码执行但让 Excel 工作

    我正在制作一个宏 我想做以下事情 打开一个文件 等待文件填满数据 该文件使用单元格公式从外部数据库下载数据 下载大约需要15秒 20 秒后检查是否所有内容都已下载 如果没有 请再等待 10 秒 总共等待最多一分钟 如果所有内容都已下载 请存
  • Android ViewPager setCurrentItem 在 onResume 后不起作用

    我遇到了这个奇怪的问题ViewPager s setCurrentItem position false 工作得很好 然后我切换到另一个活动 在我回到第一个活动后 ViewPager总是以第一个项目结束 尽管我已经添加了setCurrent
  • 如何在 MySql 数据库中存储布尔值数组?

    就我而言 每个 项目 要么有属性 要么没有 这些属性可能有数百个 因此我需要每个项目最多 1000 个真 假位 有没有一种方法可以将这些位存储在项目的一个字段中 如果您正在寻找一种可搜索的方式来执行此操作 那么不行 几种可搜索的方法 涉及超
  • 将 Gatsby JS 站点部署到 Netlify 时,“运行命令时出错:构建脚本返回非零退出代码”

    我最近遇到了 Gatsby JS https github com gatsbyjs gatsby https github com gatsbyjs gatsby 并决定在生成器之上构建我的投资组合网站 所以我分叉了他们的入门网站 gat
  • 打印或死亡:如何检查 GPFS 网络安装的文件是否可用

    我有一个 Perl 脚本 用于写入位于 GPFS 网络安装存储点上的文件 有一个标准检查open FILE or die 文件系统宕机了 但是脚本并没有退出 它一直在努力写作 文件系统恢复后 Perl 脚本完成 如何检查文件系统是否可以写入
  • 来自 istream 的子流

    假设我有一个ifstream它代表一个包含许多聚合在一起的子文件的大文件 我希望能够创建一个 子 istream从较大的ifstream 给定大小和偏移量 表示文件的一部分 以便其他代码可以从该子流中读取 就好像它是一个独立的一样istre
  • 对于非非空初始化,生命周期在初始化之前开始,它解决了什么问题?

    当前的标准草案说 以前的标准有类似的措辞 基本生活 1 http www eel is c draft basic life 1 对象或引用的生命周期是该对象或引用的运行时属性 据说一个物体有非空的如果它是类或聚合类型 并且它或其子对象之一
  • 如何在 iOS 的照片拼贴中滑动时调整视图大小?

    我正在编写一个照片编辑器演示 用户可以水平或垂直滑动以将视图分割为他们想要的许多小视图 然后用户可以拖动每个视图的边框来重新调整视图的大小 问题是我不知道如何制作照片拼贴 用户可以拖动视图边框来改变视图的大小 我认为每个白色边框 如下图所示
  • Spark DataFrame `regexp_replace` 中的反向引用

    我最近试图回答一个question https stackoverflow com questions 40146760 splitting row in multiple row in spark shell 40148915 40148
  • 从 JavaScript + JSF 调用 Backing bean 方法 [重复]

    这个问题在这里已经有答案了 我想从 JSF 中的 javascript 函数调用支持 bean 方法 请您指导我如何实现这一目标 问候 拉维 克里什 因为 支持 bean 方法 id 服务器端 所以你需要向服务器发出请求 适合你的情况的更好
  • 有没有办法引用 yaml 数组中的特定元素?

    有没有办法引用 yaml 数组中的特定元素 例如 如果我有这样的 yaml node list one two three 我可以做这样的事情吗 first node node list 0 仅具有锚点和别名 例子 node list fi
  • ssis生成json文件删除返回

    我正在使用脚本任务从 sql 查询生成 json 文件 脚本任务中的c 代码 public void Main TODO Add your code here ConnectionManager cm string sqlString Sy
  • RSpec 模拟对象示例

    我是模拟对象的新手 我正在尝试学习如何在 RSpec 中使用它们 有人可以发布一个关于如何使用 RSpec 模拟对象 API 的示例 hello RSpec Mock 对象世界类型示例 或链接 或任何其他参考 吗 以下是我在 Rails 应
  • 绘制带有 GPS 标记的地图并将该图像保存到文件中

    我有一些 GPS 位置记录 我想将其绘制到地图中 例如 OpenStreetMap 并将其保存为图像文件 我正在使用Python 我发现了osm GPS 地图 http nzjrs github com osm gps map 作为进行可视
  • 多线程并发队列

    我对多线程概念很陌生 我需要将一定数量的字符串添加到队列中并使用多个线程处理它们 使用ConcurrentQueue这是线程安全的 这是我尝试过的 但是添加到并发队列中的所有项目都不会被处理 仅处理前 4 项 class Program C
  • JavaScript 的 String strip() ? [复制]

    这个问题在这里已经有答案了 如何从字符串中去除前导和尾随空格 例如 dog 应该成为 dog 用这个 if typeof String prototype trim undefined String prototype trim funct
  • 空到布尔 IValueConverter 不工作

    如何使用 IValueConverter 将空值转换为布尔值 我正在使用 wpf 尝试显示一堆布尔值 在复选框中 创建新记录时 这些值为空 并在复选框中显示为 不确定 我希望空值出现并保存为 假 值 我尝试创建一个 NullToBoolea
  • 正则表达式匹配任何字符(包括空格)

    如何使用正则表达式来匹配包含字符和空格的字符串 Text Blabla This is my Text Blablabla 到目前为止我的正则表达式 我想简单地匹配 This is my Text 你错过了 或量词 是另一个量词
  • preg_replace 修改来自curl的SRC和HREF url

    我需要替换curl获取的页面中的url并添加正确的图像链接和链接 我的 php 卷曲代码是
  • 在 Vue.js 中,为什么我们必须在导入组件后导出它们?

    In PHP当我们包含另一个文件中的代码时 我们将其包含在内 就这样 代码现在可以在执行包含的文件中使用 但在Vue js 导入组件后我们还必须导出它 为什么 为什么我们不直接导入它呢 in Vue js 导入组件后我们还必须导出它 我想你