首页前端开发其他前端知识es模块在node中执行是什么样,要注意什么

es模块在node中执行是什么样,要注意什么

时间2024-03-26 06:54:03发布访客分类其他前端知识浏览1492
导读:这篇文章给大家介绍了“es模块在node中执行是什么样,要注意什么”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“es模块在node中执行是什么样,要注意什么”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小...
这篇文章给大家介绍了“es模块在node中执行是什么样,要注意什么”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“es模块在node中执行是什么样,要注意什么”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。

es模块能在node中执行;node从8.5.2版本开始就支持原生es模块,可以通过命令行选项打开该功能,es模块也即ECMAScript模块,是一种JavaScript代码重用机制,但是不能在es模块中使用require()。

本文操作环境:Windows10系统、nodejs 12.19.0版、Dell G3电脑。

es模块能在node中执行

从版本 8.5.0 开始,Node.js 开始支持原生 ES 模块,可以通过命令行选项打开该功能。新功能很大程度上得归功于 Bradley Farias。

1.演示

这个示例的代码目录结构如下:

esm-demo/
 lib.mjs
 main.mjs

lib.mjs:

export function add(x, y) {
    
 return x + y;

}

main.mjs:

import {
add}
     from './lib.mjs';
    
console.log('Result: '+add(2, 3));
    

运行演示:

$ node --experimental-modules main.mjs
Result: 5

2.清单:需要注意的事情

ES 模块:

·不能动态导入模块。但是 动态import() 的相关工作正在进行中,应该很快就能提供支持。

·没有元变量,如 __dirname 和 __filename。但是,有一个的类似功能的提案:“import.meta”。看起来可能是这样:

console.log(import.meta.url);

·现在所有模块标识符都是 URL(这部分在 Node.js 是新增的):

·文件 - 带文件扩展名的相对路径: ../util/tools.mjs

·库 - 没有文件扩展名,也没有路径 lodash

·如何更好地使 npm 库在浏览器中也可用(不使用 bundler)仍有待观察。一种可能性是引入 RequireJS 风格的配置数据,将路径映射到实际路径。目前,在浏览器中使用 bare path 的模块标识符是非法的。

与 CJS 模块的互操作性

你可以导入 CJS 模块,但它们总是只有默认的导出 - 即 module.exports 的值。让 CJS 模块支持命名导出已经在做了,但可能需要一段时间。如果你能帮忙,可以来做。

import fs1 from 'fs';
    
console.log(Object.keys(fs1).length);
     // 86
import * as fs2 from 'fs';
    
console.log(Object.keys(fs2));
     // ['default']

· 不能在 ES 模块中使用 require()。主要原因是:

· 路径解析工作稍有不同:ESM 不支持 NODE_PATH 和 require.extensions。而且,它的标识符始终是 URL 也会导致一些细微差异。

· ES 模块始终以异步方式加载,这确保了与 Web 的最大兼容性。这种加载风格并不能通过 require() 混合使用同步加载 CJS 模块。

· 禁止同步模块加载也可以为 Top-level await 导入 ES 模块保留后路(一个当前正在考虑的功能)。


以上就是关于“es模块在node中执行是什么样,要注意什么”的介绍了,感谢各位的阅读,希望文本对大家有所帮助。如果想要了解更多知识,欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: es模块在node中执行是什么样,要注意什么
本文地址: https://pptw.com/jishu/653332.html
Golang中db事务统一封装的步骤操作包括什么 使用PHP怎样做有干扰素的验证码功能?

游客 回复需填写必要信息