node.js

node.js简介

  node.js是一个基于Chrome v8引擎的javascript 运行环境。Node.js使用了一个事件驱动、非阻塞式 I/O的模型,使其轻量又高效。
  nodejs 是 提供运行js的工具 c++语言开发。

npm

npm : node package manager(node包管理器)
npm常用命令:
(1)install
(2)uninstall
(3)update
(4)search
(5)list
注:一般使用之前,都会npm init初始化一下。

使用命令 npm install jquery --save-dev
安装的依赖会在"devDependencies"下,只有开发的时候可以使用,上线之后不能使用

使用命令 npm install jquery
安装的依赖在"dependencies"下

对应uninstall为卸载

npm view jquery versions
查看所有可安装的版本号
再使用如 npm install jquery@1.11.0 安装对应版本的依赖

模块引用

创建三个js文件,main.js moduleA.js moduleB.js
1、在moduleA.js中

function doAdd(a,b){
	return a+b;
}
// 向外暴露的变量,放到exports对象里
// 未放到exports对象里的都是私有的变量,即使模块被require加载,也无法使用
module.exports.doAdd = doAdd;

2、在moduleB.js中

function doMulti(a,b){
	return a*b;
}
// 直接更改向外暴露的exports对象,为doMulti函数
module.exports = doMulti;

3、在main.js中

let moduleA = require("./moduleA.js");
// 路径问题: ./当前路径 ../表上级目录 /表示根目录
let doMulti = require("./moduleB.js");

console.log(moduleA.doAdd(10,20));
console.log(doMulti(10,20));

// 窗口输入命令 node main.js
// 打印结果为:
// 30
// 200

热更新

每次浏览器发出请求,都需服务器停止再开启

安装 npm install nodemon -g
启动 nodemon ***.js

可以每次浏览器发出请求,无需node,自动更新

NODEJS-API URL

// 引入url模块
const url = require("url");

(1)url.parse(urlString) 查询到url信息,对象格式显示

let str = "http://localhost/stage02/course32/index.html";
console.log(url.parse(str));

(2)url.format(urlString) 将对象格式的地址信息转化为正常的url地址

let obj = {
	host:"127.0.0.1",
	port:80,
	pathname:"/aa"
}
console.log(url.format(obj));

(3)url.resolve(from,to) 将两个url解析成一个完整的url


// 返回从根目录指定到当前目录的绝对路径url,一个标准的url格式
console.log(url.resolve("/one/two/three","four"));
// one/two/four
console.log(url.resolve("http://example.com/","/one"));
// http://example.com/one
console.log(url.resolve("http://example.com/one","/two"));
// http://example.com/two

querystring

  用于解析和格式化URL查询字符串

// 引入querystring
const qs = require("querystring");

let str = "a=小明&b=2";

console.log(qs.parse(str));
// 转换为 对象{a:'小明',b:'2'}

let escStr = qs.escape(str);
console.log(escStr);
// 如果有中文,进行编码

console.log(qs.unescape(escStr));
// 解析escape转换的编码,解析成汉字
// a=小明&b=2


let obj = {
	name:"admin",
	psw:"123"
}
console.log(qs.stringify(obj));
// name=admin&psw:123
// 对象格式转换为字符串

事件 EVENTS(需创建实例)

const Events = require("events");
let evt = new Events();
// 注册事件
evt.on("data",function(a){
	console.log(a);
});

evt.emit("data",10);
// 10
evt.emit("data",20);
// 20

FILE SYSTEM(操作文件)

const fs = require("fs");

(1)获取文件的一些信息

fs.stat("index.html",(err,stats)=>{
	if(err){
		return;
	}
	console.log(stats);  // 输出具体的文件信息
	console.log(stats.isFile());  // 输出是否是文件,布尔值
})

(2)创建目录

fs.mkdir("test",err=>{
	if(err){
		console.log(err,"创建目录失败");
	}
})

(3)写文件 追加文件内容

// 写文件
fs.writeFile("test/aa.txt","aa",err=>{
	
})
// 追加文件内容
fs.appendFile("test/aa.txt","bb",err=>{
	if(err){
		console.log(err);
	}
})

(4)读文件内容

fs.readFile("index.html",(err,con)=>{
	if(err){
		return;
	}
	// 直接打印,出现的是Buffer数据
	console.log(con);
	// 加上toString(),输出的是正常的格式
	console.log(con.toString());
})

(5)列出目录里的东西

fs.readdir("test",(err,con)=>{
	// [ 'aa.txt' ]
	console.log(con);
})

(6) 重命名

fs.rename("test","test1",()=>{
	
})

(7)删除文件夹,带有子文件

// 列出目录下的文件
fs.readdir("test1",(err,arr)=>{
	// 遍历目录下的文件
	arr.forEach(item=>{
		// 同步删除每个文件
		fs.unlinkSync("test1/"+item)
	})
	
	// 最后删除文件夹
	fs.rmdir("test1",err=>{
		console.log(err);
	})
})

事件执行顺序

const http = require("http");
let server = http.createServer((req,res)=>{
	let resData = "aa";
	res.writeHeader(200,{"content-type":"text/html;charset=utf-8"});
	
	req.on("data",function(data){
		resData+=data;
		console.log(1);
	})
	req.on("end",function(){
		console.log(0);
		req.emit("data","bb");
		console.log(2);
		res.end(resData);
		console.log(3);
	})

});

server.listen(3000,"localhost");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值