百战程序员分享:关于NODE的后端知识

首先要明白什么是Node。其实简单地讲,就是针对网络应用开发的平台。它的主要特征大致有以下两点:一个是基于Google的JavaScript运行时引擎V8,另一个是扩展了Node标准类库: TCP,同步或异步文件管理。

那么为什么使用Node?可以在服务器端运行js: 现有前端团队可直接参与后端js开发,抑或js天生支持非阻塞IO;

IO: 代表一切数据进出程序的操作,包括: 文件读写, 数据库操作, 网络操作,但存在的问题是有延迟

传统阻塞IO: IO操作会阻塞当前主线程,直到本次IO操作完成,才能执行后续代码。

非阻塞IO: 即使处理较慢的IO操作时,主进城仍然能处理其他请求;Js天生支持非阻塞: 回调函数=事件循环+回调队列。所有非阻塞的操作,返回的结果暂时在回调队列中等待;尚学堂•百战程序员陈老师指出由事件循环,自动依次取回到主程序中恢复执行。回调队列在主程序之外存储回调函数,所以,不会干扰主程序执行。

非阻塞在Web服务器中:

普通服务器端应用: 虽然可实现每个请求独立线程/进程, 但如果一个请求中,包含多个阻塞IO操作(访问数据库,网络,读写硬盘文件),该请求返回的时间就等于所有IO操作的时间总和——慢。

Node服务器端应用: 不但每个请求是一个独立的线程,且,每个请求内的每个IO操作,都是非阻塞的。

一个包含多个IO操作的请求,返回的总响应时间,仅仅等于其中一个时间最长的IO操作的时间。

Node.js vs javascript:

Javascript: 编程语言, 依照ECMAScript

2种运行环境:

1.客户端浏览器: 由各种客户端浏览器中的js解释器执行

扩展: DOM API 和 BOM API 主要目的是为了操作网页内容和浏览器窗口

2.独立的js解释器:Node.js 应用程序开发和运行的平台

仅支持ECMAScript

扩展: 各种专门的服务器模块: TCP, HTTP, 文件读写, MYSQL

构建一个简单的node应用:

创建一个新的node项目: 基本命令:

mkdir 项目文件夹

cd 项目文件夹

npm init //负责在当前所在的项目目录下自动生成package.json配置文件

运行:node 入口文件.js

2.module

Node应用都是由模块组成:模块就是组织程序功能的一种文件或文件夹,Node应用采用CommonJS模块规范。

CommonJS规定:

1.每个文件就是一个模块,有自己的作用域——避免全局污染

一个文件内定义的变量,函数,类都是该文件私有,对其它文件默认不可见

2.对象,方法和变量也可以从一个文件/模块中导出(exports),用在其它文件/模块中。

实际项目中,都是将各种功能/数据,划分为不同项目模块来管理

如何定义一个模块:2步:

1.在模块/文件中定义业务代码(对象,class,函数)

2.将内部的功能抛出,用于将来其它js文件调用

2种情况:

面向对象的方式:

1.定义一种class或一个对象,包裹属性和功能

2.将class或对象直接赋值给module.exports,其中: module,指当前模块对象/当前文件。

3.exports是当前module对象的一个属性;

4.本质上也是一个对象,保存将来要抛出的所有东西,exports是当前模块对外的唯一接口

今后,只要希望将模块内部的东西,抛出到外部,供其它文件使用时,都要添加到module.exports上,其它文件要想使用当前模块的功能,就必须用require引入当前模块,而require的本质是找模块的exports。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180424A0H3B100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券