Nodejs学习笔记
简介、安装、常用模块、留言板
JS三大组成部分:
ECMASCRIPT(声明JS变量、判断、循环等语法)
DOM(文档document)
BOM(window、location等)
模块(http服务器等)
· ECMAScript 语法:变量、判断、循环
· 内置核心模块: http服务,fs文件操作,url路径,path路径,os操作系统
· 第三方模块
·自定义模块:自己创建的js文件
CommonJS模块规范
· 一个文件就是一个模块
·通过exports和modul.export来到处模块中的成员(声明模块中哪些功能可以使用)
·通过require来加载模块(导出几个可以用几个)
自定义Node.js模块
语法
// 1.导出成员(声明模块、文件中哪些方法可以被外部使用)
// 写法1
exports.属性/方法名 = 功能
// 写法2
module.exports.属性/方法名 = 变量名
// 2.外部引入使用
var 对象 = require('路径及文件名');
对象.属性/方法名;
练习:
创建a.js和b.js 文件,在a.js 引入 b.js模块
b.js
// 1.定义
function b1() {
console.log('我是b1');
}
function b2() {
console.log('我是b2');
}
function b3() {
console.log('我是b3');
}
function b4() {
console.log('我是b4');
}
// 导出exports
exports.b1 = b1;
exports.b2 = b2;
exports.b3 = b3;
exports.b4 = b4;
// module.exports = exports
a.js
// 引入自定义模块
var b = require('./b'); // .js不用写
console.log(b);
b.b1();
b.b2();
内置Node.js模块
https://github.com/nodejs/node/tree/master/lib
模块系统
获取操作系统信息(os模块) (了解即可)
1.文档
OS | Node.js v14.17.3 Documentation (nodejs.org)
2.引入
var os = require("os");
路径处理(path模块)
1.文档
OS | Node.js v14.17.3 Documentation (nodejs.org)
2.引入
var path = require('path');
3.练习
// dirname 后去一层
// basename 取最后一层
var path = require('path');
var testData = 'E:/nodejs/add.htm';
console.log(path.basename(testData)); // add.htm
console.log(path.dirname(testData)); // E:/nodejs
网址处理(url模块)
1.文档
2. 引入
var url = require('url');
3.练习
var url = require('url');
var data = 'http://itcast.cn?name=小红&age=18';
console.log(data);
console.log(url.parse(data));
// 获取参数
var urlQueryObj = url.parse(data,true);
console.log(urlQueryObj.query); //{name: '小红',age: '18'}
console.log(urlQueryObj.query.name);
console.log(urlQueryObj.query.age);
文件系统(fs模块)
语法
// 引入对象
var fs = require('fs');
// 调用函数写数据入文件
fs.writeFile(路径及文件名,数据,function(err) {
err 为null -- 写入成功
err不为null -- 写入失败
});
练习
通过write.js 文件创建a.txt 写入你好,中国
var fs = require('fs');
fs.writeFile('./a.txt', '你好,中国', function(err) {
if(err) {
console.log(err);
return;
}
console.log('success');
})
通过read.js 文件来读取a.txt内容
var fs = require('fs');
// 1.
fs.readFile('a.txt',function(err,data) {
if(err) {
console.log(err);
return;
}
console.log(data); // Buffer对象
console.log(data.toString()); // Buffer.toString()转换为字符
})
// 2. 前期声明
fs.readFile('a.txt','utf8',function(err,data) {
if(err) {
console.log(err);
return;
}
console.log(data);
})
构建http服务器(http模块)
练习
var http = require('http');
// 创建web服务器
var server = http.createServer();
// 监听请求
server.on('request',function(req,res) {
console.log('收到用户请求,请求地址:' +req.url ); // 抓取请求地址
// 有请求必须有响应,没有响应网页无法打开
res.write('hello');
res.end();
})
// 启动服务
server.listen(8080,function() {
console.log('启动成功,访问 http://localhost:8080');
})
注意,用户通过浏览器访问html文件可能会发送n次请求,因为除html需要请求外,css、js、网站图标等也需要发送http请求。
当判断用户访问的页面,响应不同数据时
var http = require('http');
// 创建web服务器
var server = http.createServer();
// 监听请求
server.on('request',function(req,res) {
console