es 的import 和import {} from 的区别是?
最近学习meteor 在做Demo 的时候发现文档里import用了两种Import ,
然后在做集合的时候发现用
这个导入的时候
这个文件中的Items根本用不了,提示未定义Items.
然后想了半天换成
这样的引用居然成功了.
是因为export的一定要对应 import {} from "" 吗?
那import ""应该什么时候用呀?
两种分别应该怎么使用最合适?还有report 什么的?
网上找的文档大多数就告诉你是导入的意思没有深入告知,希望大神能指点一下!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你这个问题, 阮一峰的es6介绍当中其实已经说了。
http://es6.ruanyifeng.com/#do...命令
import语句会执行所加载的模块,因此可以有下面的写法。
上面代码仅仅执行lodash模块,但是不输入任何值。
一般写一个模块文件,在最后一行写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 同名,就简写了。为了模块的扩展性更好,所以import
和export
选用了 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的截图:
如果还不明白,去阮一峰老师的es6教程看看模块化那几篇吧,还有去MDN查查 import,export
楼上说的很清楚,ES6 想要 import 一个模块中的变量等内容必须对其做模块解构,否则只会执行代码而没有任何导入的内容。这个道理跟 Node.js 中的模块没有 export 内容就 require 就只会执行代码不会导入内容是一个道理