快速入门nodejs学习

本文详细介绍了Node.js的学习路径,包括其简介、创建服务、事件驱动、Buffer和Stream流的使用,以及如何运用Express框架构建服务。Node.js是一个基于V8引擎的JavaScript环境,擅长处理高并发的I/O操作。文章通过实例展示了如何创建HTTP服务、理解异步编程以及使用事件监听。此外,还讲解了Buffer类在处理二进制数据中的作用,Stream流的四种类型及其应用场景,以及模块系统和Express框架的基础知识。
摘要由CSDN通过智能技术生成

nodejs学习

简介
  • nodejs是一个事件驱动I/O服务端的JavaScript环境,没有DOM,浏览器之类的东西。
  • Chrome的V8引擎是用C++写的,执行JS速度快。
  • powershell是功能更强的cmd。
创建服务

创建一个http服务由以下3个部分构成:

  • 引入模块,require,把这个模块用一个变量接收。
  var xx = require("http");
  • 创建服务器

  • 处理请求与响应

    //创建一个服务
    
    //引入一个模块,把这个模块保存在 _httpv变量当中
    var _httpv = require("http");
    // console.log(_httpv.createServer)
    
    _httpv.createServer(function(request,response){
         
    	//http头部的信息
    	//状态码200
    	//内容的类型:text/plain(纯文本), text/html(html形式)..., xml
    	response.writeHead(200,{
         'Content-Type':'text/html'});
    
    	//向客户端发送数据
    	response.end("<h1>hello nodejs</h1>");
    
    }).listen(8080);
    
    //控制台打印信息
    console.log("8080已经创建!")
    
本质

创建各种服务,通过各种接口,提供各种数据。

基本概念
异步编程

异步编程的直接体现:异步回调的直接体现:异步回调

1.开发语言是js,js本身就是事件驱动的,是异步的;

2.因为是js的,所以是单线程的,现在是多线程的。

通过异步来处理大并发:

阻塞的例子:.readFileSync(文件名)是同步读取文件

// 通过异步来处理大并发(一个阻塞的例子)

//在nodejs中操作文件使用的是fs模块

var _fs = require("fs");

// console.log(_fs.readSync)

//.readFileSync是同步读取文件
var _data = _fs.readFileSync('New Collection.postman_collection.json');

//直接输出会是个二进制的流,此时可以采用toString方法
// console.log(_data);

console.log(_data.toString());
console.log('js已经执行结束');

/*
这种操作在本质上已经形成了阻塞
*/

非阻塞的例子:.readFile()基于回调的异步读取文件

//基于回调的非阻塞的文件读取

var _fs = require('fs');

//第一个参数是要读取的文件名
//第二个参数是处理读取到的文件的内容的回调函数

_fs.readFile('New Collection.postman_collection.json',function(err,_data)){
   
	if(err) return err;
	console.log(_data.toString());
};
console.log("----------");
console.log("js已经执行结束!");

/*
我们不需要等待文件读取完成,可以在读取文件的时候同时去执行下面的代码,提高了js的性能。
*/

回调的例子:回调的函数一般是作为最后一个形参出现。

实际工作中,最具体的应用就是jq的$.ajax()。

<!-- 
在浏览器运行的一个回调的例子
 -->

 <script type="text/javascript">
 	function aaa(a,b,callback){
     
 		callback(a,b);
 	}


 	function num(a,b){
     
 		console.log(a+b);
 	}
 	
 	aaa(1,2,num);
 	
 	//在这个例子中,num就是作为回调函数传入aaa中的。

 </script>
nodejs的事件(一)
  • nodejs是一个单进程单线程的应用程序,由于V8引擎提供了异步执行回调的接口,通过这些接口处理大的并发请求,性能很高。

  • 基本上nodejs所有的事件机制,都是基于设计模式中的“观察者模式”来实现的。

  • nodejs使用事件驱动的模型:每当接收到一个请求,就把它关掉进行处理,当这个请求完成,就把它放到处理队列当中,最后把结果返回给用户。

  • 由于nodejs的服务一直都是处理接收请求,但不等待任何的读写操作,所以性能很高,这也叫“非阻塞式的I/O或是事件驱动I/O"。

    nodejs的事件是使用 events 模块(require(“events”)),通过实例化( var event = new xx.EventEmitter)它里面的 EventEmitter 类来绑定和监听事件。

  • 绑定事件:event.on(…)

  • 监听事件:event.emit(…)

    node中的js,依然还是那个js,依然是从上到下一行一行的读取的解释型的脚本语言。编写时依然要注意顺序。

    /*
    nodejs 事件
    */
    var _events = require("events");
    
    //EventEmitter的一个实例
    var _EventEmitter = new _events.EventEmitter();
    
    //这里的事件名,完全不同于浏览器的各种事件,这里完全就只是一个标识,它其实是绑定了一个回调函数。
    _EventEmitter.on("xx123",function(){
         
    	console.log("xx123事件已经被触发");
    	//事件的嵌套
    	_EventEmitter.emit("xx456");
    });
    
    _EventEmitter.on("xx456",xx456fn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力不熬夜的小喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值