什么是Node.js

426 阅读2分钟

这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战

什么是Node.js

通常被用于一个BFF层 Backend For Frontend 服务于前端的后端,通俗说就是一个为前端业务提供数据的后端程序。特点是不需要太强的服务器运算能力,但对程序灵活性要求高。

有BFF层可以让前端有能力自由组装后台数据。前端可以自主决定和后台的通信方式,让前端工程师有更多的能力着手于web应用的性能优化,BFF层涉及到RPC调用,进程管理,系统运维等。

Node.js里运行js和chrome运行js有什么区别?

Chrome浏览器用的和Node.js是一样的JavaScript引擎和模型。在Node.js中写JS和chrome写js几乎一样。但是还是有不同。主要分为以下两点:

  • Node.js没有浏览器API,比如document,window等。
  • Node.js有很多自己的API,比如有文件系统,进程等

对开发者而言,你在Chrome中写的JS控制的是浏览器,而Node.js让你用类似的方式控制整台计算机

留着官方的话,以后有一天应该能完全理解

Node.js是一个基于Chrome V8引擎的JavaScript运行环境

Node.js使用了一个事件驱动、非阻塞式I/O的模型

Node.js现阶段用于什么项目:

  • web服务:腾讯视频,使用Node.js作为中间层,是为了搜索引擎优化和网页首屏加速 = 需要做服务端的渲染

  • 服务端渲染+前后端同构 = Node.js

  • 构建工作流:一个是gulp,一个是webpack

    • gulp:可以对html,js,css各自做一些预处理

      image-20210806112453955

      对模板做了预编译;把less编译成了css;js有很多个js文件,通过gulp打包在了一起并且做了一个压缩混淆然后放在生产目录。

    • webpack

      image-20210806114134299

      前端性能优化的一个重要原则,将资源尽可能的缩小,这样就可以建立尽可能少的http链接,这样就能加速网页加载

      为什么要用node.js作为构建工具,因为以往用Java,shell等做构建工具,前端人员不好修改,用node.js就是解决了这个问题。

  • Visual Studio Code

    他的底层技术基于electron,electron就是在node.js基础上封装了一个chrome浏览器内核,通过node.js和chronium的结合,可以让开发者在chrome跑node.js,同时node可以控制整个计算机。

  • Twitch.tv

    以下左边为浏览器端,右边为mac应用

    image-20210806120632896

    应用开发采用的就是node.js(electron),可以看到应用最大限度的复用了浏览器。因为底层都是chrome内核,只不过一个是浏览器一个是node。