es 的import 和import {} from 的区别是?

发布于 2022-09-03 11:43:32 字数 813 浏览 15 评论 0

最近学习meteor 在做Demo 的时候发现文档里import用了两种Import ,

clipboard.png

然后在做集合的时候发现用
clipboard.png这个导入的时候
这个文件中的Items根本用不了,提示未定义Items.
clipboard.png
然后想了半天换成
clipboard.png这样的引用居然成功了.

是因为export的一定要对应 import {} from "" 吗?
那import ""应该什么时候用呀?
两种分别应该怎么使用最合适?还有report 什么的?
网上找的文档大多数就告诉你是导入的意思没有深入告知,希望大神能指点一下!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自由如风 2022-09-10 11:43:32

你这个问题, 阮一峰的es6介绍当中其实已经说了。

http://es6.ruanyifeng.com/#do...命令

import语句会执行所加载的模块,因此可以有下面的写法。

import 'lodash';

上面代码仅仅执行lodash模块,但是不输入任何值。

腹黑女流氓 2022-09-10 11:43:32

一般写一个模块文件,在最后一行写export命令指定要导出什么时,都是推荐酱紫写的

export { function1, variable1, function2, object1 }

即使只有一个玩意要export,也必须要带{}写成这样

这里是好几行用于声明onlyOne是啥玩意的代码
这里是好几行用于声明onlyOne是啥玩意的代码
这里是好几行用于声明onlyOne是啥玩意的代码
export { onlyOne }

对应的在import时,自然也要用{}把他import进来呀,而且名字要一字不差不能写错

import { onlyOne } from 'path/to/module'

其实这里的 { onlyOne } 其实是 {onlyOne: onlyOne} 这个对象的es6语法简写,因为 key 和 value 同名,就简写了。为了模块的扩展性更好,所以 importexport 选用了 object 这种很能装东西的数据类型,而不是别的原子数据类型(number string 之类)


至于为什么能 import lodash from 'lodash'

是因为,为了给用户提供方便,lodash 用到 export default 命令,为模块指定了默认输出,让 lodash 的使用者不用阅读文档就能用任意自定义模块名加载 lodash。

所以,import lodash from 'lodash' 这句,你喜欢的话也能写成 import _ from 'lodash'

其次,from 后面的 'lodash' 为什么不是 node_modules 里 lodash 的完整路径呢( / node_modules / .bin / lodash ),是因为你的项目里 npm 帮忙做了配置呀,自动帮它加了前缀。。【一般补全模块路径是这事是npm帮做的

SO链接:import一个模块时我该什么时候使用{}什么时候不用?


至于 import 'lodash' 我的理解是和 css 里 @import xxx.css 类似的功能,只是把 lodash 这个模块当做静态文件在编译阶段引入而已。。。。

来自MDN的截图:

clipboard.png

如果还不明白,去阮一峰老师的es6教程看看模块化那几篇吧,还有去MDN查查 importexport

后eg是否自 2022-09-10 11:43:32

楼上说的很清楚,ES6 想要 import 一个模块中的变量等内容必须对其做模块解构,否则只会执行代码而没有任何导入的内容。这个道理跟 Node.js 中的模块没有 export 内容就 require 就只会执行代码不会导入内容是一个道理

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文