Node.js菜鸟教程入门笔记摘要

入门学习网站:菜鸟教程https://www.runoob.com/nodejs/nodejs-tutorial.html

根据菜鸟教程所写的所有的demo地址见 https://download.csdn.net/download/cindy647/11062126

主要知识点理解:

1、Node是js的一个运行环境,以往js在浏览器中表现网页特效,现在在node中用作web服务器端的语言,结果在node中表现,可用于处理异步接口请求等等。

2、Node提供了很多的模块以供调用。用require方法调用。

 Node.js 应用是由哪几部分组成的:

  1. 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
  2. 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
  3. 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

3、npm是和Node一起安装的,它的包管理器,就是2所说的各个模块的管理器,由此可实现很多的功能。

4、events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。var event = new EventEmitter();实例。event.on(‘事件名’,回调函数)监听 event.emit('事件名')触发

更多方法如.once见网站

5、buffur缓冲区,用来存放二进制数据,处理文件流或TCP流 buffur.from(‘ksdsdf’,'ascii')创建

6、stream流,所有的 Stream 对象都是 EventEmitter 的实例。常用的流操作。fs模块,从流中读取数据,写入流、管道流、链式流等等。

常用的事件有:

  • data - 当有数据可读时触发。
  • end - 没有更多的数据可读时触发。
  • error - 在接收和写入过程中发生错误时触发。
  • finish - 所有数据已被写入到底层系统时触发。

7、模块系统。

Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。

一个文件就是一个模块,可以是js\json\c++扩展

exports 和 module.exports 的使用

如果要对外暴露对象中的属性或方法,就用 exports.name1=function(){} 就行,main文件中require导入模块a后a.name1调用;要暴露整个对象(类似class,包含了很多属性和方法),就用 module.exports=name1,main文件中require导入模块a后,new实例,然后调用

// hello.js

exports.world = function() {

console.log('Hello World! lsq');

}

 

//hello-object.js 有时候我们只是想把一个对象封装到模块中

function Hello2() {

var name;

this.setName = function(thyName) {

name = thyName;

};

this.sayHello = function() {

console.log('Hello ' + name);

};

};

module.exports = Hello2;

调用

// require这个hello模块,然后就可以调用其方法world

// node main.js可打印结果

var hello = require('./hello');

hello.world();

 

// 也可以require hello2这个模块(里面有一个对象,好几个方法),调用其方法。

var Hello2 = require('./hello-object');

hello2 = new Hello2();

hello2.setName('BYVoid');

hello2.sayHello();

// 模块接口的唯一变化是使用 module.exports = Hello 代替了exports.world = function(){}。 在外部引用该模块时,其接口对象就是要输出的 Hello 对象本身,而不是原先的 exports。

8、路由router

server1.start1(router1.route);

9、全局对象与全局变量

全局对象global,根本作用是作为全局变量的宿主

全局变量:(两条下划线)

1、__filename 表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径

2、__dirname 表示当前执行脚本所在的目录

3、setTimeout(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。:setTimeout() 只执行一次指定函数。

4、clearTimeout( t ) 全局函数用于停止一个之前通过 setTimeout() 创建的定时器。 参数 t 是通过 setTimeout() 函数创建的定时器。

5、setInterval(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。

返回一个代表定时器的句柄值。可以使用 clearInterval(t) 函数来清除定时器。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。

6、console方法

console.log('byvoid%diovyb', 1991); 多个参数 // byvoid1991iovyb

console.time(label)输出时间,表示计时开始。console.timeEnd(label)结束时间,表示计时结束

7、process 是一个全局变量,即 global 对象的属性。用于描述当前Node.js 进程状态的对象,提供了一个与操作系统的简单接口。

exit:当进程准备退出时触发。

beforeExit:当 node 清空事件循环,并且没有其他安排时触发这个事件。

uncaughtException:当一个异常冒泡回到事件循环,触发这个事件。

Signal 事件:当进程接收到信号时就触发

process提供了很多有用的属性,以便我们进行更好的系统交互(stdout标准输出流、stderr标准错误流,stdin标准输入流,argv一个数组,由命令行执行脚本时的各个参数组成,title进程名,pid进程号等等)

10、Node.js常用工具:util,是一个node.js核心模块,提供常用函数的集合,更多见网站

util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数。

util.inspect(object,[showHidden],[depth],[colors])是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出。它至少接受一个参数 object,即要转换的对象。

util.isArray(object) 如果给定的参数 "object" 是一个数组返回true,否则返回false。

util.isRegExp(object) 如果给定的参数 "object" 是一个正则表达式返回true,否则返回false。

util.isDate(object) 如果给定的参数 "object" 是一个日期返回true,否则返回false。

util.isError(object) 如果给定的参数 "object" 是一个错误对象返回true,否则返回false。

11、Node.js文件系统(fs模块)

Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。

异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。

各种方法详见官网文件模块描述: https://nodejs.org/api/fs.html#fs_file_system

异步打开文件:fs.open(path, flags[, mode], callback)

异步获取文件属性:fs.stat(path, callback) stats类下有很多方法

异步写入文件:fs.writeFile(file, data[, options], callback)

异步读取文件:fs.read(fd, buffer, offset, length, position, callback)

异步关闭文件:fs.close(fd, callback)

异步截取文件:fs.ftruncate(fd, len, callback)

异步删除文件:fs.unlink(path, callback)

创建目录:fs.mkdir(path[, options], callback)

读取目录:fs.readdir(path, callback)

删除目录:fs.rmdir(path, callback)

具体用法见网站 https://www.runoob.com/nodejs/nodejs-fs.html

12、几种常用的Node,js模块(具体用法见网站)

os模块 提供基本的系统操作函数

path模块 提供了处理和转换文件路径的工具。

net模块 用于底层的网络通信。提供了服务端和客户端的的操作。

DNS模块 用于解析域名。

Domain模块 简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的。

13 web模块

web服务器:基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合。

大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。

目前最主流的三个Web服务器是Apache、Nginx、IIS。

使用node可以搭建一个服务端,处理请求;可以搭建客户端,相当于在浏览器中输入地址,向服务端发起请求,处理响应。具体的使用见demo9

14、express框架

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。

使用 Express 可以快速地搭建一个完整功能的网站。

具体使用,如实例、路由、静态文件见demo10,以及原网站

 

 

你可能感兴趣的:(Node.js)