入门学习网站:菜鸟教程https://www.runoob/nodejs/nodejs-tutorial.html
根据菜鸟教程所写的所有的demo地址见 https://download.csdn/download/cindy647/11062126
主要知识点理解:
1、Node是js的一个运行环境,以往js在浏览器中表现网页特效,现在在node中用作web服务器端的语言,结果在node中表现,可用于处理异步接口请求等等。
2、Node提供了很多的模块以供调用。用require方法调用。
Node.js 应用是由哪几部分组成的:
- 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
- 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
- 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 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/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/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菜鸟教程入门笔记摘要
发布评论