node.js

什么是Node.js
node.js的本质是一个javaScript解析器
node.js是JavaScript的运行环境
node.js是一个服务器程序
node.js本身使用的是V8引擎
node不是web服务器
为什么要使用node.js
为了提高性能的web服务
IO性能强大(向服务器发送和接受请求,IO端口代表输入和输出)
事件处理机制完善
天然能够处理Dom
社区非常活跃,生态圈日趋完善
Node.js优势
处理大流量数据
适合实时交互的应用
完美支持对象数据库
异步处理大量的并发连接
包管理器npm(网址:https://www.npmjs.com)
允许用户从NPM服务器下载别人编写的三方包到本地
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用

nodejs入门,写一个helloworld

// 创建一个请求,接收浏览器返回数据,res响应返回数据内容
var http = require(''http");
http.createServer(function(req,res){
	res.writeHead(200,{'Content-Type':'text/plan'});
	res.end('Hello world!\n');
}).listen(8000)
// 打印数据,服务运行后输出一行信息内容
ocnsole.log('server is runing...');
如图运行js文件

在这里插入图片描述
浏览器访问本地:127.0.0.1:8000

REPL环境,NPM包管理器

REPL环境常见命令
在这里插入图片描述
npm包管理器详解(cnpm是npm的本地化 和npm使用方法相同,服务器在国内)
两种安装模式:本地安装和全局安装
npm install npm -g ,全局更新npm包
npm install 包名 // 安装包
npm uninstall 包名 // 卸载包
npm search 包名 // 查找相关包
npm help // 帮助
Q退出

回调,阻塞非阻塞,nodejs回调函数

回调实现(通过回调函数实现)
函数调用分为三类:同步调用,异步调用,回调
回调是一种双向调用模式
阻塞非阻塞
阻塞和非阻塞关注的是程序在等待调用的结果(消息,返回值)时的状态、
阻塞就是做不完不许回来
非阻塞就是你先做,我看看有其他没有,完了告诉我一声

**阻塞代码**:如下
读取文件就是阻塞代码
var fs = require('fs');
var data = fs.requireFileSync('data.txt');
console.log(data.toString()) // data保存时候是16进制进行保存,输出时候没有按照字符串进行处理.toString()处理
**非阻塞** 如下
// readFile接收了两个参数:1文件名,2匿名函数当做参数传给了另一个函数
var fs = require('fs');
fs.readFile('data.txt',function(err,data){
	if(err){
		return console.error(err)
	}
	console.log(data.toString());
})
console.log('程序执行完毕!')
如下执行顺序

在这里插入图片描述

Node.js事件驱动机制

事件驱动模型
事件与事件绑定

1.node.js是一个单线程机制,不能同时并发。只能通过事件或者回调实现并发效果,所以性能比较高
2.node.js中的每一个API都是异步执行,作为一个独立的线程在运行,使用异步调用可以并发处理,
3.node.js中几乎所有的事件机制都是依照观察者模式来实现的。观察者模式是设计模式的一种。
在这里插入图片描述
事件处理代码流程
1.引入events对象,创建eventEmitters对象(eventEmitters对象产生的实例就是events对象)
2.绑定事件处理程序
3.触发事件

//引入events对象创建eventEmitters对象
var events = require('events')
var eventEmmitter = new events.EventEmmitter();
//写一个事件
var contentHeader = function contentd(){
		console.log('cont事件被触发了!')
}
// 绑定事件用eventEmmitter的on方法(‘事件名’,事件处理函数);
eventEmmitter.on('connection',contentHeader);
// 触发事件用eventEmitters.emmit()
eventEmmitter.emmit('connection');

Node.js模块化

模块化的概念与意义
Node.js中的模块
Node.js的模块加载流程
模块化代码案例

1.模块化的概念与意义
为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统
模块是Node.js应用程序的基本组成部分
文件和模块是一一对应的。一个Node.js文件就是一个模块
这个文件可能是Javascript代码,JSON或者编译过的c/c++扩展
Node.js中存在4类模块(原生模块和3中文件模块)
在这里插入图片描述
Node.js的模块加载方式
从文件模块缓存中进行加载
从原生模块加载
从文件加载
require方法加载模块代码当中使用
require方法接受以下几种参数的传递
http,fs,path 等,原生模块
/mod或 …/mod相对路径模块
/pathtomodule/mod, 绝对路径模块,尽量避免使用
mod非原生模块的文件模块
从文件进行加载
如有两个文件分别对应如下main.js和hello.js

********************mian.js
var Hello = require('./hello')
hello = new Hello();
hello.setName('li**');
hello.sayHello();

********************hello.js
//模块主要逻辑
function Hello(){
	var name;
	this.setName = function(argname){
		name = argname
	}
	this.sayHello = function(){
		console.log('Hello'+name)
	}
}
// 对模块进行导出
module.export = Hello;

函数两种写法
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值