问题少女对前端的刨根问底——Node.js篇

什么是Node.js?

什么是Nginx?

什么是Angular.js?

什么是Vue.js?

什么是BootStrap?

什么是NPM?

什么是Webpack?

什么是React?

什么是Weex?

什么是Glup?

什么是Grunt?


前言

对于前端刚入门的人来说,可能经常听到Node.js,甚至用过。但是说出它的存在意义却未必能说清。

该篇既做本vegetable bird的学习笔记,也可供大家一起对Node.js的问题进行探讨。

 

什么是Node.js?

先看看来自度娘的概念介绍:

Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHPPythonPerlRuby 等服务端语言平起平坐的脚本语言

认真读一下还是能清楚地明白到:

Node.js就是让JavaScript成为运行在服务器的脚本语言;它既能被看做前端框架,又能做后台语言。

那么问题来了,既然已经有了PHP、Ruby这些后台语言了,Node.js还能做些啥呢?

 

为什么使用Node.js?

你想一下,本来JavaScript在前端开发中是至关重要的一种语言,现在Node.js让JavaScript成为后端语言,实现前后端语言统一,程序员就能够进行全栈开发,还统一了公共类库,代码标准化。这不是很美滋滋吗?

先来Node.js的优点:

  1. 高并发(最重要的优点)
  2. 适合I/O密集型应用

顺便提一下Node.js的缺点

  1. 不适合CPU密集型应用,比如人工智能方面的计算,视频、图片的处理等;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起。解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起。
  2. 只支持单核CPU,不能充分利用CPU。
  3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃。原因:单进程,单线程。解决方案:(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;(2)开多个进程监听同一个端口,使用cluster模块。
  4. 开源组件库质量参差不齐,更新快,向下不兼容。
  5. Debug不方便,错误没有stack trace。

适用场景

  1. RESTful API:这是NodeJS最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。
  2. 统一Web应用的UI层:目前MVC的架构,在某种意义上来说,Web开发有两个UI层,一个是在浏览器里面我们最终看到的,另一个在server端,负责生成和拼接页面。不讨论这种架构是好是坏,但是有另外一种实践,面向服务的架构,更好的做前后端的依赖分离。如果所有的关键业务逻辑都封装成REST调用,就意味着在上层只需要考虑如何用这些REST接口构建具体的应用。那些后端程序员们根本不操心具体数据是如何从一个页面传递到另一个页面的,他们也不用管用户数据更新是通过Ajax异步获取的还是通过刷新页面。
  3. 大量Ajax请求的应用:例如个性化应用,每个用户看到的页面都不一样,缓存失效,需要在页面加载的时候发起Ajax请求,NodeJS能响应大量的并发请求。

总之,Node.js适合运用在高并发、I/O密集、少量业务逻辑的场景。

 

这里有一篇文章,笔者对Node.js给前端带来意义进行了阐述:Node.js and the new web front-end

以下是笔者对Node.js的总结:

I do, however, strongly believe that Node.js gives front-end engineers the ability to wholly control the UI layer (front-end and back-end), which is something that allows us to do our jobs more effectively. We know best how to output a quality front-end experience and care very little about how the back-end goes about processing its data. Tell us how to get the data we need and how to tell the business logic what to do with the data, and we are able to craft beautiful, performant, accessible interfaces that customers will love.

Using Node.js for the back-end UI layer also frees up the back-end engineers from worrying about a whole host of problems in which they have no concerns or vested interest. 

所以说Node.js对前后端开发者而言,都是有利的。

 

怎么用Node.js?

Node.js中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值