纯前端开发眼里nodejs到底是什么?

23 篇文章 0 订阅
6 篇文章 1 订阅

学生甲:我是一名学生党,在校主要研究前端开发,基本的h5 css js用的比较熟练,框架方面bootstrap和jquery刚学的时候用的多,现在学了一阵子vue.js。后台接口都是老师提供好(好像用的什么spring boot框架写的)的我只需要在js里通过ajax或者axios调用就行了(这应该就是前后端分离吧)。那么nodejs对我而言到底是个什么?我看了很多博客介绍nodejs但是依然不是很懂他对前端开发而已到底是什么?

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

什么是JavaScript?
JavaScript 是一种语言,JavaScript的标准是 ECMAScript。

 

什么是 ECMAScript?

我们说的 ES5, ES6……就是指的 ECMAScript 不同标准。ECMAScript 只是一个标准,而JavaScript是对这个标准的实现。

 

为啥不继续叫 JavaScript?

因为 Oracle 拥有 Java JavaScript 的商标权。(这部分感谢评论区 @杨栋 的斧正)

ECMA-262 最新的标准手册 里,通篇只有一处有 JavaScript。

ECMAScript is based on several originating technologies, the most well-known being JavaScript (Netscape) and JScript (Microsoft). The language was invented by Brendan Eich at Netscape and first appeared in that company's Navigator 2.0 browser. It has appeared in all subsequent browsers from Netscape and in all browsers from Microsoft starting with Internet Explorer 3.0.

 

什么是NodeJS?

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

NodeJS 是基于Chrome V8引擎的 JavaScript 运行环境。NodeJS使用事件驱动,非阻塞型I/O。NodeJS的包管理生态是 NPM,是现在世界上最大的开源程序包库。

 

额……还是不明白NodeJS有啥特殊的?

JavaScript是一门脚本语言,它需要一个运行环境。就好像PHP需要Apache,JSP需要Tomcat等等(例子不全面,仅供理解)…… 而NodeJS之前,JavaScript运行环境是浏览器,也就是JavaScript在网页中才能跑起来。NodeJS之后JavaScript又多了一个运行环境,就是NodeJS。

 

具体一点……NodeJS有啥特殊的?

由于NodeJS的最底层是Chrome的V8引擎,然后libuv封装了一些I/O的线程池管理和网络的I/O操作,这部分是C/C++写的。简单来说NodeJS可以控制系统文件的读写,网络的输入输出。所以NodeJS又可以被单纯的认为是一个可以运行 JavaScript 的服务器。(例子不全面,仅供理解)

 

那……NodeJS和VueJS,还有ReactJS,还有AngularJS有啥区别的?

这些工具的起源和诞生几乎浓缩了前端的发展历程,因为 NodeJS 可以读写文件,监听网络输入输出。所以 NodeJS 和 VueJS、ReactJS、AngularJS 有非常本质的区别。NodeJS 是可以运行 JavaScript 的环境,剩下三个是用 JavaScript 写的库。

 

一般NodeJS被用在哪里?

目前NodeJS大多被用于前端开发的开发环境。以Webpack作为例子,webpack是一个运行在 NodeJS 端的打包工具,它帮你把你写的 a.js, b.js, c.js ... 打包成一个 bundle.js。而这种打包的第一步是读取(文件读取能力)你的a.js, b.js, c.js ...,所以只能在 NodeJS 环境下做。

当然这中间的步骤会更麻烦,比如你的 a.js 用了最新的 ES7 语法 async/await,在旧版本的浏览器会导致错误,所以打包过程基本上是

// 源代码
const getJson = async () => { 
  let response = await ajax(URL); 
  console.log(response);
  return response; 
}

// 转义
function getJson() {
  var response;
  return new Promise(function(resolve, reject){
    return ajax(URL).then(function(res){
      response = res;
      console.log(response);
      resolve(response);
    })
  })
}

而这些都是 运行在 NodeJS 环境下的 Webpack 去做的。

 

那 vue-cli 和 NodeJS 有啥联系?

vue-cli,react-cli 和 ng-cli 都是运行在 NodeJS 环境下的脚手架。也就是说我们不可以直接在浏览器里运行 vue-cli。因为有了文件读写的能力,所以 vue-cli 可以帮我们集成(或者打包)vue核心模块,并将我们的代码转义,压缩。

所以 vue-cli 是 运行在 NodeJS 环境下 帮助我们开发 基于Vue框架的项目 的脚手架。

 

NodeJS 还能做啥?

用JS做服务器: Express / EggJS / HAPI / Koa 等等可以了解下

用JS做移动端混合应用:PhoneGap / Cordova / Ionic 了解下

用JS做移动端原生应用:React-Native / NativeScript / WEEX 了解下

 

那么看完这篇回答的我应该做些什么?

1)尝试学习一个 NodeJS 框架

2)尝试了解框架的实现原理

3)给写了这么多字的答主点赞并感谢回答(逃

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值