• 技术文章 >web前端 >前端问答

    node环境与浏览器环境的区别是什么

    青灯夜游青灯夜游2022-03-22 17:33:50原创156

    区别:1、node中this指向global,而浏览器中指向window;2、Node用CommonJS标准,而浏览器用ES Modules标准;3、浏览器中的js可以操作DOM,而node中不会;4、I/O读写操作不同;5、模块加载不同。

    本教程操作环境:windows7系统、nodejs 12.19.0版,DELL G3电脑。

    node环境与浏览器环境的区别

    1、全局环境下this的指向

      在node中this指向global而在浏览器中this指向window,这就是为什么underscore中一上来就定义了一 root;

     var root = typeof self == 'object' && self.self === self && self ||
           typeof global == 'object' && global.global === global && global ||
           this;

     而且在浏览器中的window下封装了不少的API 比如 alert 、document、location、history 等等还有很多。我们就不能在node环境中xxx();或window.xxx();了。因为这些API是浏览器级别的封装,纯javascript中是没有的。当然node中也提供了不少node特有的API。

    2、模块标准

    Node.js 使用 CommonJS 模块系统,而在浏览器中我们开始看到正在实施的 ES Modules 标准。

    在实践中,这意味着你暂时在 Node.js 中使用 require(),在浏览器中使用 import。

    3、DOM操作

      浏览器中的js大多数情况下是在直接或间接(一些虚拟DOM的库和框架)的操作DOM。因为浏览器中的代码主要是在表现层工作。但是node是一门服务端技术。没有一个前台页面,所以我门不会在node中操作DOM。

    4、I/O读写

      与浏览器不同,我们需要像其他服务端技术一样读写文件,nodejs提供了比较方便的组件。而浏览器(确保兼容性的)想在页面中直接打开一个本地的图片就麻烦了好多(别和我说这还不简单,相对路径。。。。。。试试就知道了要么找个库要么二进制流,要么上传上去有了网络地址在显示。不然人家为什么要搞一个js库呢),而这一切node都用一个组件搞定了。

    5、模块加载

      javascript有个特点,就是原生没提供包引用的API一次性把要加载的东西全执行一遍,这里就要看各位闭包的功力了。所用东西都在一起,没有分而治之,搞的特别没有逻辑性和复用性。如果页面简单或网站当然我们可以通过一些AMD、CMD的js库(比如requireJS 和 seaJS)搞定事实上很多大型网站都是这么干的。

      在nodeJS中提供了CMD的模块加载的API,如果你用过seaJS,那么应该上手很快。

      node还提供了npm 这种包管理工具,能更有效方便的管理我们饮用的库

      当然浏览器这边ES6也有这方面的补充,相信未来会更好。。。

    更多node相关知识,请访问:nodejs 教程

    以上就是node环境与浏览器环境的区别是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:node环境 node 浏览器
    上一篇:jquery怎么改变div的位置 下一篇:jquery怎么去掉a标签
    Web大前端开发直播班

    相关文章推荐

    • nodejs与swoole的不同是什么• Node.js中怎么发起HTTP请求?6种方法浅析• 浅析Node.js使用worker_threads多线程进行并行处理• 了解Node.js Nest.js的AOP 架构,聊聊其好处• 执行“node -v”显示node不是内部或外部命令怎么办

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网