Import ES2015“导入*为”与“普通”导入之间的差异`
我刚刚通过将Import ES2015“导入*为”与“普通”导入之间的差异`,import,module,coffeescript,ecmascript-6,Import,Module,Coffeescript,Ecmascript 6,我刚刚通过将import*作为CodeMirror更改为纯import CodeMirror修复了一个bug 我抄了。(从TypeScript移植) import*作为CodeMirror一直工作,直到为其副作用导入了加载项:预期的新fold属性未定义 问题:(我试图更好地理解发生了什么) 发生了什么事?此更改是如何修复此错误的 谁在向CodeMirror添加default属性?(或者更可能:将模块包装在另一个看起来非常相似的对象中)最有可能怀疑: JavaScript模块(ES2015
import*作为CodeMirror
更改为纯import CodeMirror
修复了一个bug
- 我抄了。(从TypeScript移植)
一直工作,直到为其副作用导入了加载项:预期的新import*作为CodeMirror
属性未定义李>fold
- 发生了什么事?此更改是如何修复此错误的
- 谁在向CodeMirror添加
属性?(或者更可能:将模块包装在另一个看起来非常相似的对象中)最有可能怀疑:default
- JavaScript模块(ES2015)
- 巴别塔
- 网页包
- 咖啡脚本
- 编码镜
- 有没有更好的方法来实现我想要实现的目标
更多详细信息: 此代码未按预期工作: 此代码按预期工作:
我已经研究了这些资源,但它们并没有帮助我完全理解发生了什么:
import*作为“CodeMirror”中的CodeMirror
将所有命名导出和名称空间导入名为CodeMirror
的对象
从“CodeMirror”导入CodeMirror
导入默认导出。假设您有一个名为“test module”的非常简单的模块,其中包含:
var test = 'test';
export default test;
export function helloWorld () { ... };
当您这样做时:
import something from 'test-module';
import {helloWorld} from 'test-module';
您只导入“某些模块”的默认导出。在本例中,它是字符串测试。默认导出可以是任何内容、对象、函数等
当您这样做时:
import something from 'test-module';
import {helloWorld} from 'test-module';
您正在专门导入名为“helloWorld”的“测试模块”的成员,而不是默认导出。在本例中,它是函数“helloWorld”
如果你做了:
import {something} from 'test-module';
“某物”将是“未定义的”,因为没有使用该名称的导出
import * as something from 'test-module';
正在请求一个包含“测试模块”的所有命名导出的对象
然后,您可以以something.name的形式访问“test module”中的任何导出。在这种情况下,它们将是
something.default
和something.helloWorld
存在CodeMirror.default
属性是否正常,因为import*作为“CodeMirror”的CodeMirror
?我不认为codemirr
显式地命名了一个名为“default”的导出,它们可能有一个默认导出标记为export default
,我认为当您进行通配符导入时,它在default
键下出现。可能应该更改某个东西。default
为某个东西['default']
(就像所有关键字属性一样)因为不是所有的Transpiler都会为您执行此操作,而且在较旧的浏览器上会出错。