Lon*_*est 7 import node.js read-eval-print-loop ecmascript-6 es6-modules
使用 Node.js REPL,如何使用 ecmascript 语法导入模块?现在是否有任何版本的Node.js REPL 允许这样做?
在 Node.js v10.16.0 中,我使用以下命令访问 REPL:
node --experimental-modules
Run Code Online (Sandbox Code Playgroud)
来源:https : //nodejs.org/api/esm.html#esm_enabling
CommonJS 是一项古老的技术。Node.js 还在积极开发中吗?我想知道deno REPL 是否可以做到这一点?
rek*_*ide 23
目前您不能使用静态import语句(例如)。import someModule from "some-module"我不知道有任何改变这一点的努力/门票/拉取请求/意图。
您可以使用import()语法来加载模块!这会返回一个承诺。例如,您可以创建一个变量someModule,开始导入,并在完成导入后设置someModule为该模块:
let someModule
import("some-module")
.then( loaded=> someModule= loaded)
Run Code Online (Sandbox Code Playgroud)
或者您可以直接在您的承诺处理程序中使用导入:
import("some-module").then(someModule => someModule.default())
Run Code Online (Sandbox Code Playgroud)
对于更复杂的示例,您可能希望使用异步立即调用函数表达式,因此可以使用await语法:
(async function(){
// since we are in an async function we can use 'await' here:
let someModule = await import("some-module")
console.log(someModule.default())
})()
Run Code Online (Sandbox Code Playgroud)
最后,如果使用该标志启动 Node.JS --experimental-repl-await,则可以直接从 repl 中使用 async 并删除立即调用的 async 函数:
let someModule = await import("some-module")
// because you have already 'await'ed
// you may immediately use someModule,
// whereas previously was not "loaded"
console.log(someModule.default())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1493 次 |
| 最近记录: |