当前位置: 首页 > 知识库问答 >
问题:

我什么时候使用{}以及什么时候不在JavaScript中导入[duplicate]

华化
2023-03-14

我正在学习Vue JS,发现有时我们导入{},有时我们导入时没有{}。请问有什么区别?

import Home from '@/views/Home.vue'
import { createRouter, createWebHistory } from 'vue-router'

非常感谢。

共有3个答案

林弘文
2023-03-14

在我看来,Javascript导入的方式令人困惑,并且是编程错误的常见来源。

问题是没有关于默认导出与命名导出的规则,也没有因导入错误内容而导致的错误。

例如

import moment from 'moment' // The _right_ way to import it

const now = moment()

与这段代码相比,它看起来非常相似,只有导入上的大括号不同:

import { moment } from 'moment' // The _wrong_ way to import it, 
                                // but it doesn't throw an error (until you try and use it)

const now = moment() // Will throw an error, because moment is undefined

这里有一篇关于这个主题的好文章:https://humanwhocodes.com/blog/2019/01/stop-using-default-exports-javascript-module/

结论

在我的项目中导入默认导出时,我遇到了几个生产率问题。虽然这些问题都不一定是不可能克服的,但在编码时,使用命名的导入和导出似乎更适合我的偏好。让事情变得清晰并严重依赖工具使我成为一个高效的程序员,只要命名出口帮助我做到这一点,在可预见的未来,我可能会喜欢它们。当然,我无法控制如何使用第三方模块导出其功能,但我绝对可以选择自己的模块如何导出东西,并将选择命名导出。

诸彬郁
2023-03-14

如果您想要包的全部或多个功能(组件),可以使用从'@/views/Home.vue'导入Home>,如果您想要包中的特定功能(组件),可以使用从'vue router'导入{createRouter,createWebHistory}

孔俊友
2023-03-14

有{}的导入称为命名导入,没有{}的导入称为默认导入。

当您将组件导出为导出时Component_Name您将其从path_to_component导入为导入{Component_Name};

当您将组件导出为导出默认组件\u名称时,您将其导入为将组件\u名称从“路径\u导入到\u组件”

它不是vue特有的,只是ES6版本Javascript的一个特性。

 类似资料:
  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 我正在学习Javascript导入,我还不明白当我们从另一个JS文件导入项目(函数、对象、变量)时使用花括号。

  • 问题内容: 我怎么能说: 为什么函数调用中不需要括号,而最后一行呢? 问题答案: 是一个功能 调用该函数并产生该函数返回的任何值。 setTimeout的目的是在一段时间后运行代码。你需要的功能只是传递给它(这样的setTimeout可以自称在适当的时候函数),因为如果你将它传递给setTimeout的前调用的函数(用括号),将执行 现在 而不是1秒后,。

  • 问题内容: 为什么以及何时应该在php中使用该函数?使用后是否应该始终使用它?我读到我必须使用它来防止会话固定,这是唯一原因吗? 问题答案: 什么啊 就像函数名称所说的那样,它是一个函数,它将用新的ID替换当前的会话ID,并保留当前的会话信息。 它有什么作用? 它主要有助于防止会话固定攻击。会话固定攻击是恶意用户试图利用系统中的漏洞固定(设置)另一个用户的会话ID(SID)的地方。这样,他们将拥有

  • 问题内容: 我有一个将客户发送到另一个站点来处理付款的应用程序。客户之外的另一个站点在我们的服务器上调用一个页面,让我们知道付款的状态。被调用页面会检查付款应用程序提供的参数,并检查我们是否知道该交易。然后,它更新数据库以反映状态。这一切都无需与客户进行任何互动即可完成。 我个人选择将此功能实现为JSP,因为将文件拖放到文件系统中比编译和打包文件然后将条目添加到配置文件中要容易得多。 考虑到页面的

  • 问题内容: 什么时候以及为什么要使用JavaScript? 问题答案: 通常,在事件处理程序(如中)中,返回false是一种告诉事件实际上未触发的方法。因此,在这种情况下,这意味着将不提交表单。