Node.js】纯前端开发眼里nodejs到底是什么?

2020-06-28 15:29发布

3条回答
cc收获啦
2楼 · 2020-06-28 15:41


什么是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楼 · 2020-06-29 15:30

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

Transform
4楼 · 2020-06-29 17:11

简单的说 Node.js 就是运行在服务端的 JavaScript。

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。


相关问题推荐

  • 回答 1

    nodejs是单线程异步的,但是你可以启动多个server,相当于多用户可以使用多线程,一般是CPU有几个核就开几个server。

  • 回答 3

    初次接触nodejs确实有一些难度,因为思路语法都和js有了一些差别,属于后端思想,所以需要楼主多下功夫,进行系统学习之后就容易接受了

  • 回答 2

    node.js实际上来说是后台语言,应用广泛,当然跟php java这样成熟的语言相比还是差一点,但是前景很好,而且因为是用的js的语法来写后台,对于前端来说很容易上手,假如是刚开始学习前端的话node.js不需要学习,先把前端的js H5 css3学好才是正事,不过如果有...

  • 回答 1

    根据百度百科上面的解释我们可以知道node.js是一个Javascript运行环境(runtime environment),实质是对Chrome V8引擎进行了封装;node.js不是一个 JavaScript 框架,也不是浏览器端的库,node.js是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScri...

  • 回答 5

    看你规模有多大了,Node.js 能够适应大规模项目开发没有问题。Nodejs是一种单线程、非阻塞的机制。有他自身的优势!

  • node.js是什么Node.js 2022-02-11 10:05
    回答 3

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。...

  • 回答 2

    Node.js更多是作为中间层的存在,不能替代纯后端,让服务器的压力更小,让前端的开发更简洁等...

  • 回答 1

    首先前后端在定接口的时候是要复提前约定的。一方提出我接制收的数据格式必须是 JSON,另一方必须按规则提交知。如果你想做容错的道话,可以根据 content type 判断(application/json)。...

  • 回答 3

    node是js的运行时,可以通过node编写后台服务器,但是原生弄得写起来会比较麻烦,就会使用框架:express;基础主要有设置路由,添加中间件,和模板和静态资源目录等功能

  • 回答 4

    当然可以,国外的Uber 和LinkedIn,国内阿里系的不少产品都是用node开发的,node 的强项就是处理高并发。

  • 回答 10

    Node js之使用应用生成器来搭建第一个基于express的应用以前的开发中在构建一个express项目时,还是需要我们写很多的代码,还不够强大。我们可以借助应用生成器,帮我们把项目的基本骨架搭建好。一般提到开发,通常有如下几种:•   原生开发,所有的代码从...

  • 回答 7

    加载器的基本原理就是在html的head中插入script标签,通过这种方式加载远程js代码。其中。模块加载器通过依赖关系来保证代码的加在顺序以及执行顺序。因此开发人员在使用加载器时,不需要关注加载细节。...

  • 回答 11

    jsp本质就是一个Servlet.所有jsp页面都需要在服务器端运行。首先将jsp页面翻译成.java源文件,也就是servlet文件,再将servlet编译成.class文件,最后运行字节码文件。这是首次执行一个jsp页面必须经历的三个过程,如果是再次访问(在没有修改源代码的基础上...

  • 回答 8

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。(事件驱动:事件触发过程中,进行决策的一种策略,简单说就是跟随当前时间点上出现的事物,调用可用的资源进行解决该事物...

  • 回答 2

    node开发的时候都用框架,在处理post的请求的时候,大部分都是使用中间件来进行处理

没有解决我的问题,去提问