Nodejs简介

1.1.1 nodejs简介

node是JavaScript语言的服务器运行环境。

所谓的‘运行环境’有两层意思:首先,JavaScript语言通过node在服务器上运行,在这个意义上,Node有点像JavaScript虚拟机;其次,Node提供大量工具库,使得JavaScript语言与操作系统互动(比如读写文件、新建子进程),在这个意义上,Node又是JavaScript的工具库。

Node内部采用Google公司的V8引擎,作为JavaScript语言解释器;通过自行开发的libuv库,调用操作系统资源。

1.1.2 安装与更新

nodejs官方网站 安装自行 google

安装完成以后,运行下面的命令,查看是否能正常运行:

$ node --version
# 或者
$ node -v

更新node.js版本,Linux和Mac可以通过node.js的 n模块(当然鼎鼎大名的 nvm 也很强)完成。

$ npm install -g n
$ n stable

上面代码通过n模块,将node.js更新为最新发布的稳定版。

window用户可以使用 nvm-window 来做版本管理。(使用起来很不方便故不做介绍)

1.1.3 基本用法

安装完成后,运行nodejs程序,就是使用node命令读取JavaScript脚本。
当前目录的demo.js脚本文件,可以这样执行。

$ node demo
#或者
$ node demo.js

1.1.4 异步操作

Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务。这导致Node中大量采用异步操作(asynchronous opertion),即任务不是马上执行,而是插在任务队列的尾部,等到前面的任务运行完后再执行。

由于这种特性,某一个任务的后续操作,往往采用回调函数(callback)的形式进行定义。

var isTrue = function(value, callback) {
  if(value === true) {
    callback(null, 'Value was true');
  }else {
    callback(new Error('Value is not true!'));
  }
}

上面代码就把进一步的处理,交给回调函数callback。

Node约定,如果某个函数需要回调函数作为参数,则回调函数是最后一个参数。另外,回调函数本身的第一个参数,约定为上一步传入的错误对象。就像下面这样:

var callback = function(error, value) {
  if(error) {
    return console.log(error);
  }
  console.log(value);
}

1.1.5 全局对象和全局变量

node提供以下几个全局对象,他们是所有模块都可以调用的。

  • global: 表示node所在的全局环境,类似于浏览器的window对象。需要注意的是,在浏览器中声明一个全局变量,实际上是声明了一个window对象的属性:var a = 1;,等同于window.a = 1;。而在node环境中并不是这样的,模块的全局变量都是该模块私有的
  • process: 该对象表示node所处的当前进程,允许开发者于该进程进行互动。
  • console: 指向node内置的console模块,提供命令行环境中的标准输入、标准输出功能。

node还提供你了一些全局函数:

  • setTimeout(): 用于在指定毫秒之后,运行回调函数。
  • clearTimeout(): 用于终止一个setTimeout方法创建的定时器。
  • setInterval(): 用于每隔一定毫秒调用回调函数。
  • clearInterval(): 终止一个用setInterval方法创建的定时器。
  • require(): 用于加载模块。
  • Buffer(): 用于操作二进制数据。

node提供两个全局变量,都以下划线开头

  • _filename: 指向当前运行的脚本的文件名。
  • _dirname: 指向当前运行的脚本所在的目录。

1.1.6 模块化结构

nodejs采用模块化结构,按照CommonJS定义和使用模块。模块于文件是一一对应的关系,即加载一个模块,实际上就是加载对应的一个模块文件。

require命令用于指定加载模块,加载时可以省略脚本文件的后缀名。

var http = require('http');
var circle = require('./circle.js');

require方法的参数是模块文件的名字。它分成两种情况:第一种情况是参数中含有文件路径,这时路径是相对于当前脚本所在的目录,第二种情况是参数中不含有文件路径,这时Node会到模块的安装目录寻找已安装的模块。

核心模块: nodejs的用处在于,它本身还提供了一系列功能模块,与操作系统互动。这些核心的功能模块,不用安装就可以使用。

  • http: 提供http服务器功能。
  • url: 解析url。
  • fs: 于文件系统交互。
  • querystring: 解析url的查询字符串。
  • child_process: 新建子进程。
  • util: 提供一系列实用小工具。
  • path: 处理文件路径。
  • crypto: 提供加密和解密功能,基本上是对OpenSSL的包装。
    核心模块总是有限加载的,如果你自己写了一个http模块,require('http')加载的还是核心模块。

1.1.7 异常处理

node是单线程运行环境,一旦抛出的异常没有被捕获,就会引起整个进程的崩溃。所以,node的异常处理对于保证系统的稳定运行非常重要。

一般来说,node有三种方法,传播一个错误:

  • 使用throw语句抛出一个错误对象。
  • 将错误对象传递给回调函数,由回调函数负责抛出错误。
  • 通过EventEmitter接口,发出一个error事件。

  转载请注明: 张成的博客 Nodejs简介

 上一篇
JavaScript之再学习 JavaScript之再学习
概览JavaScript 是一种面向对象的动态语言,它包含类型、运算符、标准内置( built-in)对象和方法。它的语法来源于 Java 和 C,所以这两种语言的许多语法特性同样适用于 JavaScript。需要注意的一个主要区别是 Ja
2018-10-30
下一篇 
Es6-->Let&const命令 Es6-->Let&const命令
在 ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起。新对象是使用 new 操作符后跟一个构造函数来创建的。var person = new Object(); 这行代码创建了 Object 引用类型的一个新实
2018-10-30
  目录