继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

NODE JS get started...

resharpe
关注TA
已关注
手记 102
粉丝 7244
获赞 3476
简介

Node.js®是一个基于Chrome V8 引擎的 JavaScript 运行时。 Node.js 使用高效、轻量级的事件驱动、非阻塞 I/O 模型。

小试牛刀

var http = require('http');//import modules
http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8888);//created server
console.log('Hello Node at http://127.0.0.1:8888/');

注意:使用node完全可以脱离apache,nginx等服务器

NPM---NODE重要的包管理工具
  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

常见命令

npm init
npm install xx --save-dev
npm install xx -g
npm uninstall
npm ls
npm update xx
npm search xx
Node.js REPL(Real Eval Print Loop)交互式解释器

可以执行

  • 读取:读取用户输入,解析输入了Javascript 数据结构并存储在内存中。
  • 执行:执行输入的数据结构
  • 打印:输出
  • 循环:循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。

常见命令

  • ctrl + c :退出当前终端。
  • ctrl + c :按下两次 , 退出 Node REPL。
  • ctrl + d : 退出 Node REPL.
  • 向上/向下 键 -:查看输入的历史命令
  • tab 键 :列出当前命令
  • .help : 列出使用命令
  • .break : 退出多行表达式
  • .clear :退出多行表达式
  • .save filename - 保存当前的 Node REPL 会话到指定文件
  • .load filename - 载入当前 Node REPL 会话的文件内容。
回调函数---Node异步编程的直接体现(异步/同步)
Node.js 事件循环

Node是单线程应用程序,通过事件和回调支持并发,性能高。其API都是异步的,作为一个独立线程运行,使用异步函数回调处理并发。几乎所有事件机制都是观察者模式。Node单线程类似进入一个while循环,直到没有事件观察者退出,每个异步事件都生成一个观察者,如果事件发生就执行该回调函数。

事件驱动

Node使用事件驱动,当web server接收到请求,就把它关闭然后处理,然后去服务另一个请求。当请求完成,它被放到事件队列里,到达队列头则结果返回给用户。

示例:

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
  console.log('an event occurred!');
});
myEmitter.emit('event');
EventEmitter

Node任何异步IO都会发送一个事件到事件队列。比如一个net.server,一个文件读写。

EventEmitter类

events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。

Buffer

events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。

Stream流

Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出)。
Node.js,Stream 有四种流类型:

  • Readable - 可读操作。
  • Writable - 可写操作。
  • Duplex - 可读可写操作.
  • Transform - 操作被写入数据,然后读出结果。

所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:

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

示例:

var fs = require("fs");
var data = '';

// 创建可读流
var readerStream = fs.createReadStream('input.txt');

// 设置编码为 utf8。
readerStream.setEncoding('UTF8');

// 处理流事件 --> data, end, and error
readerStream.on('data', function(chunk) {
   data += chunk;
});

readerStream.on('end',function(){
   console.log(data);
});

readerStream.on('error', function(err){
   console.log(err.stack);
});

console.log("程序执行完毕");
模块系统

模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的

路由
文件系统
打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP