nodejs

Nodejs介绍

Nodejs是一个javascript运行环境(runTime)。它让javascript可以开发后端程序,它几乎能实现其他后端语言能实现的所有功能。
nodejs是基于google V8引擎,V8引擎是google发布的一款开源的javascript引擎,原来主要是用于Chrome浏览器的js解释部分,但是Ryan Dahl ,鬼才般的把V8引擎搬到了服务器上,用于服务器的软件。

为什么要使用Nodejs

Nodejs有什么优点

  1. Nodejs语法完全是js语法,只要你懂js基础就可以学会Nodejs后端开发,Nodejs打破了过去JavaScript只能在浏览器中运行的局面。前后端编程环境统一,可以大大降低开发成本。
  2. NodeJs超强的高并发能力,处理高并发场景性能更高。
    NodeJs的首要目标是提供一种简单的、用于创建高性能服务器及可在该服务器中运行的各种应用程序的开发工具。
    首先让我们来看一下现在的服务器端语言中存在着什么问题。在Java、PHP或者.NET等服务器语言中,会为每一个客户端连接创建一个新的线程。而每个线程需要耗费大约2MB内存。也就是说,理论上,一个8GB内存的服务器可以同时连接的最大用户数为4000个左右。要让web应用程序支持更多的用户,就需要增加服务器的数量,而web应用程序的硬件成本当然就上升了。
    NodeJs不为每个客户连接创建一个新的线程,而仅仅使用一个线程。当有用户连接了,就触发一个内部事件,通过非阻塞I/O、事件驱动机制,让Nodejs程序宏观上也是并行的。使用Nodejs,一个8GB内存的服务器,可以同时处理超过4万用户的连接。
  3. 实现高性能服务器
    严格地说,Nodejs是一个用于开发各种web服务器的开发工具。在Nodejs服务器中,运行的是高性能V8 JavaScript脚本语言,该语言是一种可以运行在服务器端的脚本语言。
    那么,什么是V8 JavaScript脚本语言呢?该语言是一种被V8 JavaScript引擎所解析并执行的脚本语言。V8 JavaScript引擎是由Google公司使用C++语言开发的一种高性能JavaScript引擎,该引擎并不局限于在浏览器中运行。Nodejs将其转用在了服务器中,并且为其提供了许多附加的具有各种不同用途的API。例如,在一个服务器中,经常需要处理各种二进制数据。在JavaScript脚本语言中,只具有非常有限的对二进制数据的处理能力,而NNodejs所提供的Buffer类则提供了丰富的对二进制数据的处理能力。
    另外,在V8 JavaScript引擎内部使用一种全新的编译技术。这意味着开发者编写的高端的 JavaScript 脚本代码与开发者编写的低端的C语言具有非常相近的执行效率,这也是Nodejs服务器可以提供的一个重要特性。
  4. 开发周期短、开发成本低、学习成本低
    Nodejs自身哲学,是话最小的硬件成本,追求更高的并发,更高的处理性能。
  5. Nodejs下载量已经很大,前端开发者必会,最擅长高并发,8G内存Nodejs 可以满足8w并发量。
  6. Nodejs可以实现的功能多,不仅可以像后端语言一样写动态网站,写接口,还可以应用在云计算平台、游戏开发、区块链开发、即时通信、跨平台app开发、桌面应用开发(electron)、云直播、物联网等领域。

Nodejs的 Http Url

如果我们使用类似php来编写后端的代码时,需要Apache或者Nginx的HTTP服务器,来处理客户端的响应请求。不过对Nodejs来说,概念完全不一样了,使用Nodejs时,我们不仅仅在实现一个应用,同时也实现了HTTP的服务器。

Nodejs中的supervisor工具使用

npm install -g supervisor //安装
superivisor app.js //,启动后,实现热更新

一、 CommonJs和nodeJs模块、自定义模块

什么是CommonJs?

JavaScript 是一个强大面向对象的语言,它有很多快速高效的解释器。但是,javascript标准定义的Api是为了构建基于浏览器的应用程序,并没有制定一个用于广泛的应用程序的标准库。comonjs规范的提出,主要是为了弥补当前javascript没有标准库的缺陷,它的终极目标就是;提供一个类似python,Ruby和java语言的标准库,而不是让javascript停留在小程序阶段。用CommonJS API编写的应用,不仅可以利用javascript开发客户端应用,而且可以填写以下应用:

  • 服务器端的javascript应用程序(Nodejs)
  • 命令行工具
  • 桌面图形界面应用程序

CommonJs 就是模块化的标准,Nodejs 就是CommonJS(模块化)的实现

二、Nodejs中的模块化

Nodejs应用有模块组成,采用commonJs模块规范。

2.1 在Node中,模块分为两类:

一类是node提供的模块,称为核心模块;另一类是用户编写的模块,称为文件模块。

  • 核心模块部分在Nod源代码的编译过程中,编译成二进制执行文件。在Nodejs进程启动时,部分核心模块就被直接加载进内存,所以它的加载速度是最快的。如HTTP模块、URL模块、FS模块都是nodejs内置的核心模块,可以直接使用。
  • 文件模块则是在运行时动态加载,需要完整的路径分析、文件定位、编译执行过程、速度相比核心模块稍微慢一些,但是用法非常多。这些模块需要我们自己定义。

2.2 CommonJS(Nodejs)中自定义模块的规定:

  • 我们可以把公共的功能抽离称为一个单独的js文件作为一个模块,默认情况下这个模块里面的方法和属性,外面是无法访问的。如果要让外面可以访问模块里面的方法或者属性,就必须在模块里面通过exports或者module.exports 暴露属性或者方法。
  • 在需要使用这个模块的文件中,通过require的方式引入到这个模块。这个时候就可以使用模块里面暴露的属性方法

2.3 完全符合CommonJs 规范的包目录一般包含如下这些文件

  • package.json :包描述文件
  • bin :用于存放可执行的二进制文件的目录
  • lib:用于存放Javascript代码的目录
  • doc:用于存放文档的目录

在Nodejs中通过NPM命令可以来下载第三方模块的(包)

package.json

package.json定义了各种项目所需要的各种模块,以及项目的配置信息(如名称、版本、许可证等元素)
1、创建package.json文件

npm init 或者npm init -yes

2、安装并把模块写入package.json(依赖)

npm install xxx  --save-dev //简写npm install name -D
npm install xxx -- save //简写npm install name -S
npm install [email protected] --S // 指定安装1.2.1的版本

3、dependencies和devDependencies之间的区别

  • 使用npm install node-module --save 会更新dependencies字段值
  • 使用npm install node-module --save-dev 会更新devDependencies的值
  • 一般在不指定–save 和 --dev时默认是保存到dependencies中的,即默认–save

4、版本号

  • ^表示第一位版本不变,后两位取最新的
  • ~表示前两位不变,最后一个取最新的
  • *表示全部取最新的

nodejs源码学习

https://theanarkh.github.io/understand-nodejs

中文官网

https://nodejs.cn/

你可能感兴趣的:(node技术栈,前端,node.js)