1个回答

test
2024-07-12
先明确一下,node 和 浏览器 无非就是两个 js运行时
,只要是 js 文件都能在这两个环境上运行
这里你用一个相同的 js 文件到两个环境上运行,差异在于:
- 先说共同点,这两个环境对于
ES标准部分
的 js 逻辑的 解释执行都是没问题的 - 区别在于,两个环境分别提供了一些不同的
上层api
,比如 node 中的几大核心模块,fs,http,path 等;浏览器中的 window对象,web storage 等。如果你的 js 中使用了和运行时环境
相关的 api,那么这个 js 就和环境绑定了,只能在对应的环境上运行。
所以结论如下:
- 要识别某个 js 是否只能在 某个运行时 上运行,通过 js 逻辑中的 api 来判断是很容易的
如果没有用到
与某个运行时相关
的api,那么这个 js 就是通用的,任何 js运行时 都能跑,但需要注意对应环境版本
对ES标准
的支持程度。- 比如 环境只支持到 ES6,但你的 js 中用了 ES6 之后的新特性,那么需要用
babel
编译做语法降级,或者引入对应的polyfill
- 比如 环境只支持到 ES6,但你的 js 中用了 ES6 之后的新特性,那么需要用
最后补充一点,不要轻易用 模块标准
去区分,不论是用 esm
还是 commonjs
,还是其他 模块化标准,在 babel 或 其他编译工具
的加持下,都是能在任何 js运行时 上跑的
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容