简介
在 Node.js 中,全局对象(global)和常用的对象方法(如:setTimeout、process)都是内置的。这些内置的对象和方法被称为 Node.js 内建模块(node built-ins),它们都是 Node.js 的核心模块之一。使用内建模块不需要安装任何包,可以直接使用。
在前端开发中,我们也需要使用一些内建模块,比如 console、setTimeout。但是,浏览器不支持 Node.js 内建模块。如何解决这个问题呢?一个方法是使用 npm 包 node-builtins。
node-builtins 包可以使我们在浏览器中使用 Node.js 内建模块,同时也可以方便我们在前端项目中使用一些依赖于这些内建模块的 npm 包。
安装
使用 npm 可以很方便地安装 node-builtins:
npm install node-builtins --save
安装完成后,我们可以在代码中引入 node-builtins:
const builtins = require('node-builtins');
使用方法
1. 基本用法
引入 node-builtins 后,我们可以通过调用其 exports 对象来使用内建模块。以 console 为例,我们可以这样使用:
builtins.exports.console.log('Hello, world!');
2. 使用 ES 模块
node-builtins 包中默认使用 CommonJS 模块,但我们也可以使用 ES 模块。可以这样引入:
import builtins from 'node-builtins/es6';
注意要引入 node-builtins 的 es6 模块。
3. 使用自定义的全局对象
默认情况下,node-builtins 会使用全局对象 window 作为其内建模块的上下文,但我们也可以使用自定义的全局对象。可以这样设置:
builtins.setGlobals({ global: window, process: { env: {}, }, });
4. 使用少量内建模块
如果只使用了部分内建模块,我们可以通过配置来减小打包后的文件大小。可以这样配置:
const builtins = require('node-builtins')({ exclude: ['console', 'setTimeout'], });
这里排除了 console 和 setTimeout 两个内建模块。
示例代码
下面是一个使用 node-builtins 的具体例子,它使用了 setImmediate 内建模块:
-- -------------------- ---- ------- ----- -------- - -------------------------- -------- ----------- -------------- --- ----- ------------ - ------------------------------ --- - - -- --------------------- ---------------- - ----------------- -- -- - --- ----------------------------- ---
运行该代码,在开发者工具的控制台中可以看到输出 0~9 的数字。
总结
node-builtins 可以让我们在浏览器中使用 Node.js 内建模块。它可以方便地解决一些在前端项目中使用 NPM 包时遇到的内建模块缺失的问题。同时,node-builtins 还有部分常用的调试和测试工具,如 tap 和 assert 等。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f262c333b0ab45f74a8b9ad