Node.js v .env 文件、导入模块和权限模型
Node.js v20.6 已发布,其中包含令人惊叹的新功能,这些新功能是 2023 年 10 月 24 日起 LTS 版本的一部分。让我们拭目以待!
INI 配置文件
告别 dotenv 包,现在 Node.js 可以从 .env 文件加载环境变量。
node --env-file path/to/.env index.js
? INI 文件的路径是必需的,因为 Node.js 没有为 INI 文件选择默认名称。
?如果 INI 文件不存在,则节点进程不会失败,只需在没有环境变量的情况下开始运行即可。
正在加载NODE_OPTIONS
您可以使用 INI 配置文件加载 Node.js 的特定环境变量(如 NODE_OPTIONS),如下例所示:
NODE_NO_WARNINGS=1 NODE_OPTIONS="--experimental-permission --allow-fs-read=*" TZ=Pacific/Honolulu UV_THREADPOOL_SIZE=5
您可以使用相同的方法:
node --env-file .env index.js
预加载 ES 模块
在启动时使用 --import 标志预加载 ES 模块,该模块将在任何应用程序代码运行之前加载,甚至是入口点。
node --import path/to/file.js index.js
此标志类似于众所周知的用于加载 CommonJS 模块的 --require 标志。
?使用 --require 预加载的模块将在使用 --import 预加载的模块之前运行。
权限模型
我们有一个新的机制来限制在执行 Node.js 进程期间对特定资源的访问,称为权限模型。该 API 存在于标志 --experimental-permission 后面,启用该标志后,将限制对所有未明确允许的资源的访问。
文件系统权限
--allow-fs-read 标志允许使用 * 的所有 FileSystemRead 操作,或使用绝对路由的特定路径。
node --experimental-permission --allow-fs-read=* index.js
要仅允许访问特定路径,您应该使用绝对路由
node --experimental-permission --allow-fs-read=/path/to/index.js --allow-fs-read=/path/to/directory index.js
?还需要允许初始化程序模块。否则 Node.js 进程本身无法加载 index.js 文件。
?您可以使用 .允许访问工作目录,但不能使用它来指定文件的路径(例如 ./index.js)。
node --experimental-permission --allow-fs-read=. index.js
--allow-fs-write 标志允许使用 * 访问特定路径或整个文件系统。
node --experimental-permission --allow-fs-read=. --allow-fs-write=/tmp/ index.js
子进程
启用权限模型后,默认情况下进程将无法生成任何子进程,您应该使用 --allow-child-process 来允许此操作。让我们对index.js 使用以下代码。
const childProcess = require('node:child_process'); childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("./new-file.txt", "Hello, World!")']);
要在启用权限模型的情况下运行此代码片段,您应该使用以下命令执行index.js:
node --experimental-permission --allow-fs-read . --allow-child-process index.js
?子进程默认不会继承权限模型,所以new-file.txt创建成功。
更多选择
如果您想在此权限模型下创建工作线程,可以检查 --allow-worker 标志,并检查 --allow-wasi 以允许创建 WASI 实例
结论
我们有很多新工具来为我们的应用程序加载环境变量,一种导入代码中所需的预加载 ES 模块的方法,以及一个新的权限模型来提高系统的安全性。
请继续关注 Node.js 的博客,这个团队正在每个版本中添加很棒的功能!我们在 v22.6.0 中提供了初始 TypeScript 支持和使用 DevTools 的网络检查。
以上是Node.js v .env 文件、导入模块和权限模型的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。
