iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >在 Node.js 中使用原生 ES 模块方法解析
  • 127
分享到

在 Node.js 中使用原生 ES 模块方法解析

模块方法Node 2022-06-04 17:06:37 127人浏览 独家记忆
摘要

从版本 8.5.0 开始,node.js 开始支持原生 ES 模块,可以通过命令行选项打开该功能。新功能很大程度上得归功于 Bradley Farias。 1.演示 这个示例的代码目录结构如下: e

从版本 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 模块保留后路(一个当前正在考虑的功能)。

3.早期版本的 Node.js 上的 ES 模块

如果要在 8.5.0 之前的 Node.js 版本上使用 ES 模块,请参阅 John-David Dalton 的 @std/esm。

提示:如果不启用任何可解的额外功能,将在 Node.js 保持 100% 兼容原生 ES 模块.

FAQ

什么时候可以不带命令行选项使用ES 模块?

目前的计划是在 Node.js 10 LTS 中默认可使用 ES 模块。

进一步阅读

有关 Node.js 和浏览器中 ES 模块的更多信息:

· “Making transpiled ES modules more spec-compliant” [using ES modules natively vs. transpiling them via Babel]

· “Module specifiers: what's new with ES modules?” [Why .mjs? How are module specifiers resolved? Etc.]

· “Modules” [in-depth chapter on ES modules in “Exploring es6”]

即将到来的 ECMAScript 提案:

· 博客: “ES proposal: import() ? dynamically importing ES modules”

· 提案: “import.meta”

总结

以上就是小编给大家带来的在 Node.js 中使用原生 ES 模块方法解析的全部内容,希望对大家有所帮助。如果您有什么问题,可以给我留言。感谢大家对本站的支持。

--结束END--

本文标题: 在 Node.js 中使用原生 ES 模块方法解析

本文链接: https://www.lsjlt.com/news/12347.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node.js中fs模块的使用方法
    引入fs模块 var fs=require('fs'); 1. fs.stat检测是文件还是目录 fs.stat('html/style.css', function (err, s...
    99+
    2024-04-02
  • 怎么使用C/C++编写node.js原生模块
    这篇文章主要讲解了“怎么使用C/C++编写node.js原生模块”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用C/C++编写node.js原生模块”吧!Hello World不能免俗...
    99+
    2023-06-17
  • 如何使用C/C++编写node.js原生模块
    这篇文章主要为大家展示了“如何使用C/C++编写node.js原生模块”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用C/C++编写node.js原生模块...
    99+
    2024-04-02
  • Node.js 中的 fs 模块与Path模块方法详解
    概述: 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。可以通过调用 require("fs") 来获取该模块。文件系统模块中的所有方法均有异步和同步版本。...
    99+
    2024-04-02
  • 详解Node.js中的模块化方法
    目录一、模块化的基本概念1、什么是模块化2、模块化规范二、Node.js 中的模块化1、Node.js 中的模块化分类2、加载模块3、向外共享模块作用域中的成员4、Node.js 中...
    99+
    2024-04-02
  • Node.js中怎么使用URL模块解析地址
    这篇文章给大家介绍Node.js中怎么使用URL模块解析地址,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。url结构化/模块化/路径解析结构化:url.parse(urlString[...
    99+
    2024-04-02
  • 怎么在Node.js中使用http模块
    这篇文章将为大家详细讲解有关怎么在Node.js中使用http模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。HTTP协议要理解Web服务器程序的工作原理,首先,我们要对HTTP协议有基本...
    99+
    2023-06-14
  • node.js中优雅的使用Socket.IO模块的方法
    目录前言Socket.IO的定义Socket.IO的优点node中安装Socket.IOnode中使用Socket.IOemiton在express中引入使用服务端客户端小结前言 上...
    99+
    2022-12-08
    node.js使用Socket.IO模块 node.js Socket.IO
  • Node.js使用方式及模块化的方法
    本篇内容介绍了“Node.js使用方式及模块化的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是Node.js Node.js 是一...
    99+
    2023-06-29
  • node.js中joi模块的基本使用方式
    目录node.js joi模块的使用参数校验:使用joi基础使用常见schema特殊情况demosnode.js joi模块的使用 //引入joi模块 const Joi = req...
    99+
    2024-04-02
  • Node.js中util模块的promisify()方法怎么用
    这篇文章主要介绍了Node.js中util模块的promisify()方法怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ...
    99+
    2024-04-02
  • 怎么在python中使用__name__方法调用模块
    怎么在python中使用__name__方法调用模块?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、...
    99+
    2023-06-14
  • 详解Python中Addict模块的使用方法
    目录介绍1.安装2.用法3.要牢记的事情4.属性,如键、item等5.默认值6.转化为普通字典7.计数8.更新9.Addict 是怎么来的介绍 Addit 是一个Python模块,除...
    99+
    2024-04-02
  • 如何在node.js中使用​JsonWebToken模块进行token加密
    目录一、token1、什么是token2、作用二、Express中实现token的方法:1、使用JWT模块:JsonWebToken2、token验证的流程3、Express中实现过...
    99+
    2023-03-19
    nodejs token node token验证 node.js token加密
  • python Tkinter模块使用方法详解
    目录一、前言1.1、Tkinter是什么二、准备工作2.1、Windows演示环境搭建三、Tkinter创建窗口3.1、创建出一个窗口3.2、给窗口取一个标题3.3、窗口设置3.3、...
    99+
    2024-04-02
  • 怎么在node.js中使用​JsonWebToken模块进行token加密
    这篇文章主要讲解了“怎么在node.js中使用JsonWebToken模块进行token加密”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在node.js中使用JsonWebToken模...
    99+
    2023-07-05
  • Python中time与datetime模块使用方法详解
    目录time 模块datetime 模块总结time 模块 time 模块,也就是时间模块,用来进行一些与时间有关的操作。其使用方法为: import time print(time...
    99+
    2024-04-02
  • Nginx使用Lua模块实现WAF的原理解析
    目录一、WAF产生的背景二、什么是WAF三、工作原理四、WAF作用五、WAF和传统防火墙的区别六、WAF和DDos七、Nginx WAF功能八、Nginx Waf防护流程九、基于Ng...
    99+
    2024-04-02
  • Python中concurrent.futures模块的使用方法
    这篇文章主要介绍了Python中concurrent.futures模块的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、说明标准库为我们提供了concurrent...
    99+
    2023-06-15
  • python中elasticsearch_dsl模块的使用方法
    目录前言连接elasticsearchelasticsearch_dsl.Searchquery方法filter方法index方法elasticsearch_dsl.queryela...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作