NodeJs基础
概念
它是一个运行在服务端的JavaScirpt平台,基于Chrome浏览器在运行时创建的一个平台,基于Chrome浏览器在运行时创建的一个平台,基于google的v8引擎的,速度非常的快,性能好,它可以处理大量的并发。nodeJs可以接收好几种文件类型,nodeJs,它可以提供http服务,IIS、Apache类似,都是http的服务,node需要手动的进行一些配置
dos命令
--cls,清空控制台屏幕
--dir,列出当前目录中的文件和目录
事件机制
nodeJs当中,基本上所有的事件机制,都是基于观察者模式。
在JavaScript当中存在着一个事件队列,这个东西只是在内存当中的,看不到,操作不了,nodeJs在异步操作的完成的时候,会发一个事件,到事件队列。当请求完成时,会把结果返回给用户。
Node模块
-----核心模块, nodeJs内置的;
核心模块在运行的时候,被编译为二进制的流了,
----自定义的模块…
nodeJs要做一些工作,都需要加载各种模块
这个在运行的时候,有一个编译、寻址的过程, 所以它的速度,会比核心模块慢。
http模块
它要创建http服务也是一样,它需要http模块。
require 指令,它用来载入各种模块;
使用 http.createServer(),创建服务
.listen(),监听服务的端口号,但是一般不要使用 8080,因为许多其它的服务都会默认使用它
发送http请求,就是访问某个网址,本地服务器地址:http://localhost:端口号或者http://127.0.0.1:5874
端口号:四位数字,
,ctrl + c,快速的停止node的服务
Content-Type
text/plain,纯文本;
text/html,html的文本;
// 第一个http模块
// 引入http模块
var http1 = require('http');
// console.log(http);
// 调用createServer方法,传入一个匿名函数,参数为request,response
// 调用listen方法 监听服务的端口号(四位数字))
http1.createServer(function(request, response) {
//发送头部信息,状态码为200
//内容的类型 纯文本text/plain html文本: text/html
// 调用writeHead方法
response.writeHead(200, {
'Content-Type': 'text/html;charset=utf8' });
// 向客户端(浏览器)发送数据
response.end('<h1>第一个服务</h1>');
}).listen(8888);
console.log('8888,server is running');
fs模块
fs模块,nodeJs的文件系统,fileSystem
// fs模块
var fs = require('fs');
// 这里是异步输出的,通过回调函数
fs.readFile('file.txt', function(err, _data) {
console.log(_data.toString());
})
console.log('程序结束了,这里是异步输出的');
综合写法
var http1 = require('http');
var fs = require('fs');
http1.createServer(function(request, response) {
response.writeHead(200, { 'Content-Type': 'text/html;charset=utf8' });
fs.readFile('file.txt', function(err, _data) {
response.end(_data.toString());
})
}).listen(8888);
console.log('8888,server is running');
同步
同步 sync [sɪŋk],是阻塞的;是按顺序执行的;
异步
nodeJs,它是异步编程。异步编程它就是依托于回调来实现的。nodejs它大量的使用了回调函数,这样在代码执行的时候,就没有阻塞或是等待什么的,提高了效率,可以处理大量的并发请求。
异步,是非阻塞的;是不按顺序执行的。它不用等待,所以提高性能
线程
nodejs它是单线程、单进程的应用程序,
单线程,node的fs模块读取文件,它有同步、异步,同步会有阻塞,那这个阻塞就是单线程
Node事件
在nodeJs当中,所有事件产生的对象,events模块,
在events模块里面有一个对象,events.EventEmitter,EventEmitter的核心,是事件的触发与监听功能的封装。在具体使用的时候,还是require(‘events’),
on函数,用于绑定事件;
emit,用于触发事件;
// 首先引入evnets模块
var event = require('events');
// 手动生成 event的EventEmitter对象的实例
var emitter = new event.EventEmitter();
// 使用on绑定事件 事件名自定义
emitter.on('aaa', function() {
console.log('111111')
//aaa触发后触发ccc
emitter.emit('ccc'); // 33333
});
emitter.on('bbb', function() {
console.log('22222222')
//bbb触发后通过延时器3s后触发ddd事件
setTimeout(function() {
emitter