如何区分一个js文件是node.js文件还是普通浏览器js文件?

如何区分一个js文件是node.js文件好使普通浏览器js文件?

阅读 2.2k
2 个回答

先明确一下,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

最后补充一点,不要轻易用 模块标准 去区分,不论是用 esm 还是 commonjs,还是其他 模块化标准,在 babel 或 其他编译工具 的加持下,都是能在任何 js运行时 上跑的

node.js 里面会有 require() 之类的。

浏览器大概率没有。当然打包之后保不齐会有。一般来说 node.js 不用打包。

浏览器和node 都有一些特殊的 api,通过 api 来判断呗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题