joy*_*joy 80 javascript node.js ecmascript-6 es6-modules
我正在使用node v6.0.0并想使用ES2016(ES6).但是我意识到"导入"语法不起作用.在ES2015中编写模块化代码不是"导入"的基础吗?我尝试使用--harmony_modules选项运行节点,但仍然有关于"导入"的相同错误.这是代码.
没有"导入"的工作代码:
'use strict';
let sum = 0;
class Number {
addNumber(num1, num2) {
return num1 + num2;
}
}
let numberObj = new Number();
sum = numberObj.addNumber(1,2);
console.log("sum of two number 1 and 2 "+ sum);
Run Code Online (Sandbox Code Playgroud)
使用"import"操作代码:
server.js
'use strict';
import Number from "./Number";
let sum = 0;
let numberObj = new Number();
sum = numberObj.addNumber(1,2);
console.log("sum of two number 1 and 2 "+ sum);
Run Code Online (Sandbox Code Playgroud)
Number.js
'use strict';
export default class Number {
addNumber(num1, num2) {
return num1 + num2;
}
}
Run Code Online (Sandbox Code Playgroud)
我还检查了http://node.green/以查看支持的es6但是无法理解为什么它不能与--harmony_modules选项一起使用.请帮忙.
Pau*_*aul 87
他们还没有实施.
节点6.0.0使用V8版本,完成了大部分ES6功能.不幸的是,模块不是那些已完成的功能之一.
node --v8-options | grep harmony
Run Code Online (Sandbox Code Playgroud)
正在进行和谐标志没有完全实施,通常不起作用:
--es_staging(启用具有测试价值的和声功能(仅供内部使用))
- 和声(启用所有已完成的和声功能)
--harmony_shipping(启用所有已发布的和声功能)
--harmony_object_observe(启用"和谐对象.观察"(在进度))
- ethmony_modules(启用"和声模块"(进行中))
-
和谐_功能_用于启用"和谐功能.进行中"(进行中))
- 和谐共享阵列缓冲(启用"和谐共享阵列"(正在进行中))
- hash_simd (启用"和谐simd"(正在进行中))
- harmony_do_expressions(启用"和谐表达式"(正在进行中))
- hash_iterator_close(启用"和声迭代器完成"(正在进行中))
- hash_tailcalls(启用"和声尾部")调用"(进行中)
"--harmony_object_values_entries(启用"和谐Object.values/Object.entries"(正在进行中))
- ethmony_object_own_property_descriptors(启用"和谐Object.getOwnPropertyDescriptors()"(进行中))
- ethmony_regexp_property(启用) "哈日 mony unicode regexp属性类"(进行中)"
- ethmony_function_name(启用"和函数名称推断")
--harmony_regexp_lookbehind(启用"和谐regexp
lookbehind")
- ethmony_species(启用"和谐符号.物种")-- harmony_instanceof (启用"和谐实例支持")
--harmony_default_parameters(启用"和谐默认参数")
--harmony_destructuring_assignment(启用"和谐解构赋值")
--harmony_destructuring_bind(启用"和谐解构绑定")
- hash_tostring(启用"和谐toString")
--harmony_regexps(启用"和声正则表达式扩展")
--harmony_unicode_regexps(启用"和声unicode 正则表达式")--
harmony_sloppy(启用"在草率模式下的和声功能")
--harmony_sloppy_let(启用"和声让在草率模式下")
- -harmony_sloppy_function(启用"和谐马虎功能块范围")
--harmony_proxies(启用"和声代理")
--harmony_reflect(启用"和谐反射API")
--harmony_regexp_subclass (启用"和谐正则表达式子类化")
Cod*_*tex 40
这应该是对@Paulpro答案的评论,但我没有足够的代表发表评论.
对于Windows用户,等效命令为:
node --v8-options | findstr harmony
Run Code Online (Sandbox Code Playgroud)
wir*_*res 32
在实现模块之前,您可以使用Babel"transpiler"来运行代码:
npm install --save babel-cli babel-preset-node6
./node_modules/.bin/babel-node --presets node6 ./your_script.js
Run Code Online (Sandbox Code Playgroud)
请参阅https://www.npmjs.com/package/babel-preset-node6和https://babeljs.io/docs/usage/cli/
缺点:这有各种缺点,例如额外的编译时间,这可能很重要,您现在需要源映射进行调试; 只是说.
Ром*_*еев 16
如上所述,ES6模块尚未实现.
以与Common JS模块向后兼容的方式实现ES6模块似乎是一个非常重要的问题,Common JS模块是当前的Node.js模块语法.
但是,有一个实现草案,它引入了一个新的文件扩展名.mjs- 用于包含ES6模块的文件.
此外,有一个反建议,提出了另一种方法,在package.json中声明所有带有ES6模块的文件,如下所示:
{
"modules.root": "/path/to/es6/modules"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72907 次 |
| 最近记录: |