feng xiaohan

Node.js

简介

什么是 Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它可以让 JavaScript 在服务端运行

注意:Node.js不仅仅可以在服务端运行(这是在 JS 运行时),也可以在本地脚本或构建工具中使用。(例如 Vue 等框架实际上运用了 Node.js 构建多功能脚本,因为它可以访问文件系统,进行文件读写操作等)

  • 引擎:将在浏览器或 node 中运行的 JavaScript 代码编译为机器代码;

Node 与 JS 组成差别

Node.js JavaScript
ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象) ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)
OS(操作系统) DOM(一些操作页面元素的方法)
file(文件系统) BOM(一些操作浏览器的方法)
net(网络系统)
database(数据库)

JavaScript 本身是只能在浏览器中运行的,但是现在通过 Node.js 我们可以让它在服务器端运行,这样可以让它执行一些在浏览器内因为性能或安全问题导致我们不能或不想执行的任务(如连接数据库和存储数据,用户身份验证,输入验证,业务逻辑)。

因为浏览器端始终是面向用户的,用户可以看到甚至修改浏览器端的信息,所以需要服务端来做这些。

Node.js 在 Web 开发中的作用

  • 建立一个服务端:监听我们从浏览器端发送的请求;
  • 运行业务逻辑:处理请求数据、文件,连接并使用数据库等;
  • 处理响应:返回响应数据(例如 HTML 页面动态内容或数据的 json 文件等)给客户端

Web 的工作原理

  • 用户(浏览器)输入网址;

    该网址会进行域名解析并最终找到正确的目标 IP 地址。

  • 浏览器带着正确的 IP 地址向服务器发送请求;

  • 具有该 IP 的服务器端代码开始运行;

    此时 Node.js 就开始了工作(当然也可以有其他的语言代替),在这里 node.js 可以进行用户输入验证,连接数据库。

  • 服务端执行完成后向客户端返回一些响应;

    • 响应可以是一些 HTML 文本或者 HTML 代码,还有可以被客户端处理的一些其他类型的数据,例如 json 或 xml 文件等;
    • 响应不仅仅有内容,还有请求体和请求头等元信息;

    请求和响应传输是通过某种协议(标准化的沟通方式)完成的:

HTTP/HTTPS

HTTP:超文本传输协议,定义了请求的格式以及数据如何从浏览器传输到服务器等;

HTTPS:超文本传输加密协议,传输的数据是经过 SSL 加密的;

使用 Node

REPL

控制终端输入node后进入,在这可以进行 REPL 的操作。

R:read,读取用户的输入;

E:eval,评估用户的输入 ;

P:print,打印输出的结果;

L:loop,循环返回并等待新一轮的用户输入;

ndoe
> 1 + 1
4

注意:一旦控制终端关闭或者退出 node 我们将不能再进入到刚才的 node 文件空间!

执行 Node.js 代码文件

将 node 代码写在一个文件中,执行这个文件。

node app.js

通常使用这种模式执行 node 代码。

Node.js 框架

  • Express.js:最流行最常用的 Node.js 框架。
  • Adonis.js:受 laravel(PHP)启发的框架。
  • Koa
  • Sails.js