综述
node.js 简单的来说就是运行在服务端的 JavaScript
node.js 是基于 chrome javascript 运行时建立的一个平台
node.js 是一个事件驱动 I/O 服务端 JavaSCript 环境,基于 google 的 v8 引擎。
nodejs
node.js 应用由以下三个模块组成:
require
引入- 创建服务器
- 接收请求与响应请求
var http = require('http');
http.createServer(function (request,response){
// 发送 http 头
response.writeHead(200,{'Content-Type':'text/plain'});
// 发送响应数据
response.end('Hello World');
}).listen(8888);
console.log('Server running at http://127.0.0.1:8888');
npm
npm 是 nodejs 的包管理工具,功能如下:
- 允许用户从 npm 服务器下载别人编写的第三方包到本地使用
- 允许用户从 npm 服务器下载并安装别人编写的命令行程序到本地使用
- 允许用户将自己编写的包或命令行程序上传到 npm 服务器供他人使用
指令
// 版本 npm -V // 升级 npm install npm -g // 使用淘宝镜像源 - 此时可以使用 cnpm 替换 npm npm install -g cnpm --registry=https://registry.npm.taobao.org // 安装模块 npm install <module name> // 全局安装 - 将包安装在 node 的安装目录,命令行可直接使用 npm install <module name> -g // 本地安装 - 安装在 命令目录下 的 node_modules 目录下 npm install <module name> // 查看安装消息 npm list -g // 查看模块 npm list <module name> // 卸载模块 npm uninstall <module name> // 更新模块 npm update <module name> // 搜索模块 npm search <module name> // 创建模块 npm init // npm 资源库注册 - 用用户名和邮箱 npm adduser // 发布模块 npm publish // 清空 npm 本地缓存 npm cache clear // 撤销发布的版本 npm unpublish <module name>@<version>
node.js REPL - 交互式解释器
REPL - read eval print loop
类似于 shell/terminal
node.js 自带了 交互式解释器,有以下功能:
- 读取 - 读取用户输入
- 执行 - 执行输入的数据结构
- 打印 - 输出结果
- 循环 - 直到
ctrl - c
退出
类似于 python 执行
详细内容
变量
var
声明变量
var y = 10
console.log(y)
_
可以使用下划线取上一个表达式的运算结果
node.js 回调函数
node.js 异步编程的直接体现就是回调
回调函数在完成任务后就会被调用, node 的所有 api 都支持回调函数
回调函数一般作为函数的最后一个参数出现
function foo1(name,age,callback){}
function foo2(value,cb1,cb2){}
阻塞代码实例:
var fs = require("fs");
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log('end')
非阻塞代码:
var fs = require("fs");
fs.readFile('input.txt',function(err,data){
if (err) return console.error(err);
console.log(data.toString());
});
console.log('end');
node.js 事件循环
node.js 是单进程单线程应用程序,但是由于 v8 引擎提供的异步执行回调接口,
因此这些接口可以处理大量的并发
node.js 基本所有的事件机制都是用设计模式中的观察者模式实现
node.js 单线程类似进入一个 while(true) 的事件循环,直到没有事件观察者退出,
每一个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数。
node.js 事件驱动程序
node.js 使用事件驱动模型,当 web_server 接收到请求就把它关闭然后进行处理,然后去
服务下一个web请求。当这个请求被完成,它被放回处理队列,当达到队列开头,这个结果被返回给用户。
var events = require('events');
var event_emitter = new events.EventEmitter();
event_emitter.on('eventName',eventHandler);
event_emitter.emit('eventName');
var events = require('events');
var event_emitter = new events.EventEmitter();
var connect_handler = function connected(){
console.log('connected');
event_emitter.emit('data_received');
}
event_emitter.on('connection',connect_handler);
event_emitter.on('data_received',function(){
console.log('data received');
});
event_emitter.emit('connection');
console.log('end');
Comments | NOTHING