NodeJS
文章
1安装管理
1 基础为什么JavaScript是运行在浏览器的脚本。为了能让JavaScript在服务器上运行,执行服务器上的业务逻辑,产生了NodeJS。 是什么Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境。 优势 单线程高并发。通过JS的回调方法,实现了并发。 自带web服务器模块。 2 helloworldserver.js123456789101112131415var http = require('http');http.createServer(function (request, response) { // 发送 HTTP 头部 // HTTP 状态值: 200 : OK // 内容类型: text/plain response.writeHead(200, {'Content-Type': 'text/plain'}); // 发送响应数...
2工程构建
1交互式解释器 读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。 执行 - 执行输入的数据结构 打印 - 输出结果 循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。 nodeJS提供了交互式解释器的功能,可以进行基本的运算和调试。 2工程构建 CommonJS是nodejs的标准。nodejs是commonjs的实现。 包目录构成 package.json 包描述文件 bin 用于存放二进制文件的目录 lib 用于存放JavaScript代码的目录 doc 用于存放文档的目录 模块说明 CommonJS定义,分为系统模块和自定义模块。 系统模块包括http模块、URL模块、FS模块 用户自定义模块把公共的功能抽离成一个单独的js文件。需要通过exports输出,require引入。 123exports.outapi=innerfunction;const selfmodule = require(".../module.js")selfmodule.outapi(); 12module.exp...
3回调函数
2回调函数 在javascript中,一切都是变量,一起都是对象,基本数据类型的变量、函数类型的变量、对象类型的变量。也就是说,变量可以指向,基础数据类型、函数数据类型、对象数据类型等。通过回调函数实现了异步编程。 同步阻塞123456var fs = require("fs");var data = fs.readFileSync('input.txt');console.log(data.toString());console.log("程序执行结束!"); 异步回调12345678var fs = require("fs");fs.readFile('input.txt', function (err, data) { if (err) return console.error(err); console.log(data.toString());});console.log("程序执行结束!");
4模块系统
1 说明 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。 Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。 2示例代码示例 main.js 12var hello = require('./hello');hello.world(); hello.js 123exports.world = function() { console.log('Hello World');} 暴露对象1234567891011//hello.js function Hello() { var name; this.setName = function(thyName) { name ...
5buffer模块
buffer模块1 模块说明作用 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区 Node.js 目前支持的字符编码包括: ascii - 仅支持 7 位 ASCII 数据。如果设置去掉高位的话,这种编码是非常快的。 utf8 - 多字节编码的 Unicode 字符。许多网页和其他文档格式都使用 UTF-8 。 utf16le - 2 或 4 个字节,小字节序编码的 Unicode 字符。支持代理对(U+10000 至 U+10FFFF)。 ucs2 - utf16le 的别名。 base64 - Base64 编码。 latin1 - 一种把 Buffer 编码成一字节编码的字符串的方式。 binary - latin1 的别名。 hex - 将每个字节编码为两个十六进制字符。 2 模块应用创建Buffer 类 Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 * Buffer 实例,如果没有设置 fill,则默认填满 0 Buffer.allocUnsafe(size): 返回一个指定大小的 ...
6events模块
事件循环1 模块说明过程 Node.js 是单进程单线程应用程序 Node.js 几乎每一个 API 都是支持回调函数的。 Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。 Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数. 示例 Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。 非阻塞式IO,事件驱动IO 事件相当于一个主题(Subject),而所有注册到这个事件上的处理函数相当于观察者(Observer)。 2 模块应用示例12345678910111213141516171819202122232425// 引入 events 模块var events = require('events');// 创建 eventEmitter 对象var eventEmitter = new e...
7http&url模块
http&url模块1 模块说明 用来构建nodejs的原声的服务器程序。 2 代码示例server.js1234567891011121314151617181920var http = require("http");var url = require("url"); function start(route) { function onRequest(request, response) { var pathname = url.parse(request.url).pathname; console.log("Request for " + pathname + " received."); route(pathname); response.writeHead(200, {"Content-Type": "text/plain"}); response.write(&...
8全局对象
1 全局变量 __filename 表示当前正在执行的脚本的文件名。 __dirname 表示当前执行脚本所在的目录。 console 用于提供控制台标准输出,它是由 Internet Explorer 的 JScript 引擎提供的调试工具,后来逐渐成为浏览器的实施标准。 process 是一个全局变量,用于描述当前Node.js 进程状态的对象,提供了一个与操作系统的简单接口。 全局函数 setTimeout(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。:setTimeout() 只执行一次指定函数。返回一个代表定时器的句柄值。 clearTimeout( t ) 全局函数用于停止一个之前通过 setTimeout() 创建的定时器。 参数 t 是通过 setTimeout() 函数创建的定时器。 setInterval(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。
9fs模块
fs模块1 流读写流的四种状态 Readable - 可读操作。 Writable - 可写操作。 Duplex - 可读可写操作. Transform - 操作被写入数据,然后读出结果。 流对象事件 data - 当有数据可读时触发。 end - 没有更多的数据可读时触发。 error - 在接收和写入过程中发生错误时触发。 finish - 所有数据已被写入到底层系统时触发。 流读取1234567891011121314151617181920212223var fs = require("fs");var data = '';// 创建可读流var readerStream = fs.createReadStream('input.txt');// 设置编码为 utf8。readerStream.setEncoding('UTF8');// 处理流事件 --> data, end, and errorreaderStream.on('data', f...
10工具模块
1 os模块2 path模块3 net模块4 dns模块5 domain模块














