为什么前端要使用Node开发

前不久和一个.net同事吃火锅,临近结束提到了前端的技术框架,这位同事也会前端,但是在他印象里前端似乎依旧是传统的运行于浏览器进行开发;任凭我怎么说,前端已经是通过node进行开发并且现在各大公司已经很基本的大规模使用了,他依旧不信或者说不能够理解node开发在前端的意义, 于是乎我想整理一篇文章告诉他,前端是怎么使用node开发的;

一、传统的JavaScript

传统的js是运行在浏览器上的,因为浏览器内核分为两个部分:

渲染引擎---复制渲染HTML和CSS,

 JavaScript 引擎---负责运行 JavaScript, Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快且性能好。

二、什么是Node.js?

官网上对其特点描述为:

1. 它是一个Javascript运行环境

2. 依赖于Chrome V8引擎进行代码解释

3. 事件驱动

4. 非阻塞I/O

5. 轻量、可伸缩,适于实时数据交互应用

6. 单进程,单线程

相对于传统的JavaScript来说,Node.js 是一个运行在服务端的框架,它的底层就使用了 V8 引擎。我们知道 Apache + PHP 以及 Java 的 Servlet 都可以用来开发动态网页,Node.js 的作用与他们类似,只不过是使用 JavaScript 来开发,它大大提升了开发的性能以及便利。使用node开发还可以使用配套的npm包管理工具:

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

允许用户从NPM服务器下载别人编写的第三方包到本地使用。

允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。

允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。


因为node本身就是一个服务端的框架,对于一些简单的项目,我们可以不需要后端配合,直接用node进行数据库的增删改查,比如下面的代码就是通过使用express进行开发的:


通过配置接口我就可以实现原来需要后端配合做的事情了,大大方便了我们对一些简单场景下的应用;

三、Node开发的缺陷:

虽然node开发已经能够给我们带来非常棒的体验,那么它存在什么样的先天不足呢,下面是从网上查找的资料:

1. 不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;

解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;

2. 只支持单核CPU,不能充分利用CPU

3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

原因:单进程,单线程

解决方案:(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;

(2)开多个进程监听同一个端口,使用cluster模块;

4. 开源组件库质量参差不齐,更新快,向下不兼容

5. Debug不方便,错误没有stack trace


今天是大年初一,对于今年的规划当然是希望有机会进入一个非常棒的团队学习;大楼之下,我自知渺小,顶峰虽然唾手不可及,也要努力加油!

你可能感兴趣的:(为什么前端要使用Node开发)