这是我参与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各自做一些预处理
对模板做了预编译;把less编译成了css;js有很多个js文件,通过gulp打包在了一起并且做了一个压缩混淆然后放在生产目录。
-
webpack
前端性能优化的一个重要原则,将资源尽可能的缩小,这样就可以建立尽可能少的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应用
应用开发采用的就是node.js(electron),可以看到应用最大限度的复用了浏览器。因为底层都是chrome内核,只不过一个是浏览器一个是node。