一、模块
模块:node开发者读部分内容进行格式化整理的模板。模块,又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合;在程序设计中,为完成某一功能所需的一段程序或子程序;或指能由编译程序、装配程序等处理的独立程序单位;或指大型软件系统的一部分。
二、内置模块
内置模块:nodejs 编写者,自己编写在nodejs 中的模块,nodejs 本身包含的模块。
Let’s Coding:
// require 导入模块
const tt = require('fs');
// unlink('路径',回调函数);
// 注意:当前目录下是否存在test.txt文件
tt.unlink('test.txt',(err) => {
if(err) throw err;
console.log('成功删除文件');
});
-
fs模块
fs 模块:File System 模块,内含对文件的所有操作;
Let’s Coding:
// 1. fs.readFile(); // fs.readFile(路径,编码格式,回调函数) const fs = require('fs'); // 注意:当前目录下是否存在test.txt文件 fs.readFile('test.txt','utf-8',(err,data) => { console.log(data); }); // 2. fs.writeFile(); // 声明好一段字符串 let str = `one two three`; // fs.writeFile(路径,写入的数据,回调函数) // 文件不存在时,自动创建; // 写入文件时,覆盖已存在内容; fs.writeFile('test.txt',str,(err) => { if(err == null){ console.log('success'); }else{ console.log(err); } }); // 文件的异步操作 fs.readFile('test.txt','utf-8',(err,data) => { console.log('after'); // 后执行的代码 console.log(data); }); console.log('before'); // 先执行的代码 // 文件的同步操作 console.log('first step'); // 同步操作 let content = fs.readFileSync('test.txt','utf-8'); console.log(content); console.log('third step');
-
path模块
path 模块:path 模块,路径模块,获取文件路径;
相对路径:从当前目录出发寻找的路径;
绝对路径:绝对指定路径,指定磁盘下指定文件;
Let’s Coding:
// __dirname :获取当前文件所处文件夹绝对路径 console.log(__dirname); // __filename :获取当前的文件的绝对路径 console.log(__filename); // 1.path.join() :路径拼接 // 导入path模块 const PATH = require('path'); // 输出目录下Test文件夹下的test.txt文件的绝对路径; console.log(PATH.join(__dirname,'Test','test.txt'))
-
http 模块
http 模块:http模块,服务器模块,搭建一个服务器;
Let’s Coding:
// 1.http 搭建服务器 // (1).导入 http 模块 const HTTP = require('http'); // (2).创建 http 服务器 HTTP.createServer((request,response)=>{ // (3).返回服务器内容 // 注意:当返回中文时,注意乱码问题; respone.setHeader('Content-Type','text/html;charset-utf-8'); response.end('Win'); }); // (4).开启服务器 server.listen(8080,()=>{ console.log('Server runing...'); });
-
fs + path +http 结合
Let’s Coding:
// 1.导入模块 const FILESYSTEM = require('fs') ; const HTTP = require('http') ; const PATH = reqiore('path') ; // 2.搭建服务器 const SERVER =HTTP.createServer((request,response)=>{ // 3.获取文件路径 const FILEPATH = PATH.join(__dirname,index.html); // 读取HTML文件 FILESYSTEM.readFile(FILEPATH,'utf-8',(err,data)=>{ // 返回数据 if(err == null){ response.end(data); } // 报错处理 else{ response.end('404'); } }); }); // 4.开启服务器 SERVER.listen(8080,()=>{ console.log('Win'); })
三、第三方模块
第三方模块:非 nodejs 自带的模块;
-
Crawler 爬虫模块
crawler :使用npm下载一个crawler模块;
Let’s Coding:
// 1.下载文件 var Crawler = require('crawler'); var fs = require('fs') ; var client = new Crawler({ encoding:null, jQuery:false, callback:function(error,response,done){ if(error){console.log(error);} else{ var $ = response.$; fs.writeFile('路径',$('标签名').text(),(err)->{ if(err){console.log(err)}; }); } done(); } }); c.queue('url') // url 路径 // 2.下载图片 var Crawler = require('crawler'); var fs = require('fs') ; var client = new Crawler({ encoding:null, jQuery:false, callback:function(error,response,done){ if(error){console.log(error);} else{ fs.writeFileStream(response.options.filename).write(response.body); } done(); } }); c.queue({ uri:"", // 下载地址 filename:'', // 保存的文件名 headers:{'user-Agent':'requests'} // 伪装客户端 }) // 3.下载视频 var Crawler = require('crawler'); var fs = require('fs') ; var client = new Crawler({ encoding:null, jQuery:false, callback:function(error,response,done){ if(error){console.log(error);} else{ fs.createWriteStream(response.options.filename).write(response,body); } done(); } }); c.queue({ uri:"", // 下载地址 filename:'', // 保存的文件名 headers:{'user-Agent':'requests'} // 伪装客户端 })
-
express 模块
express 模块:搭建服务器模块
Let’s Coding:
// 1.创建静态服务器 // (1)导入 express 模块 const EXPRESS = require('express'); // (2)创建服务器 const SERVER = express(); // (3)将 www 文件下的所有内容开放 SERVER.use(express.static('www')); // (4)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); }); // 2. express 实现 get 接口 // (1)导入 express 模块 const EXPRESS = require('express'); // (2)创建服务器 const SERVER = express(); // (3)get 接口实现 SERVER.get('./joke',(req,res)=>{ // 获取数据库信息 let data = 'content'; // 返回数据 res.rend(data); }); // (4)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); }); // 3. express 返回 .json数据 // (1)导入 express 模块 const EXPRESS = require('express'); // (2)创建服务器 const SERVER = express(); // (3)get 接口实现 SERVER.get('./json',(req,res)=>{ // 获取数据库信息 let data = 'content'; // 返回数据 —— {} 对象自动转化为 json 文件 ; res.rend({ data:data, code:'ok', msg:'Success' }); }); // (4)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); }); // 4. express 实现 get (传参)接口 // (1)导入 express 模块 const EXPRESS = require('express'); // (2)创建服务器 const SERVER = express(); // (3)get 接口实现 SERVER.get('./test',(req,res)=>{ // get 传入的参数通过 req 获取(传参的时候:参数命名testData) let data = req.query.testData + 'You Win!'; // 返回数据 res.rend(data); }); // (4)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); }); // 5. express 实现 post 接口 // (1)导入 express 模块 const EXPRESS = require('express'); // (2)创建服务器 const SERVER = express(); // (3)get 接口实现 SERVER.post('./pose',(req,res)=>{ // 返回数据 res.rend('Success'); }); // (4)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); }); // 5. express 实现 post (参数)接口 // (1)导入 express 模块 const EXPRESS = require('express'); const BODYPARSER = require('body-parser'); // (2)创建服务器 const SERVER = express(); // (3)第三方插件获取post参数 SERVER.use(bodyParser.urlencoded({extended:false})); // (4)get 接口实现 SERVER.post('./pose',(req,res)=>{ // 获取 post 请求的参数 —— body-parser (通过 npm i body-parser) let data = req.body.testData; // 返回数据 res.rend(data + 'Success'); }); // (5)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); }); // 6.返回一个值是json格式字符串的接口 // (1)导入 express 模块 const EXPRESS = require('express'); const BODYPARSER = require('body-parser'); // (2)创建服务器 const SERVER = express(); // (3)第三方插件获取post参数 SERVER.use(bodyParser.urlencoded({extended:false})); // (4)get 接口实现 SERVER.post('./pose',(req,res)=>{ /* 设置返回——响应头 Content-Type:返回类型; text/json :应头值; */ res.setHeader('Content-Type','text/json'); // 返回数据 res.rend(data + 'Success'); }); // (5)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); }); // 7.带有get传参的接口 // (1)导入 express 模块 const EXPRESS = require('express'); // (2)创建服务器 const SERVER = express(); // (3)get 接口实现 SERVER.get('./getTest',(req,res)=>{ console.log(req.query); // 获取传入的参数 console.log(req.query.dataTest); res.send('Success'); }); // (4)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); }); // 8.post 传文本参数的接口 // (1)导入 express 模块 const EXPRESS = require('express'); const BODYPARSER = require('body-parser'); // (2)创建服务器 const SERVER = express(); // (3)第三方插件获取post参数 SERVER.use(bodyParser.urlencoded({extended:false})); // (4)get 接口实现 SERVER.post('./Check',(req,res)=>{ // 获取 post 请求的参数 —— body-parser (通过 npm i body-parser) let data = req.body; if(req.body.username == '111111' && req.body.password == '111111'){ console.log('Success'); res.send('register success.'); }else{ console.log('Defeat'); res.send('password false...'); } }); // (5)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); }); // 9.post 传文件参数的接口 // (1)导入 express 模块 const EXPRESS = require('express'); const MULTER = require('multer'); // (2)创建服务器 const SERVER = express(); // (3)第三方模块 var upload = MULTER(dest:'uploads/'); // (4)get 接口实现 SERVER.post('./Regist',upload.single('userfile'),(req,res)=>{ // req.file ——> userfile 文件 let userfile = req.file; console.log(userfile); console.log(req.body);// {filename:'picture', ... } }); // (5)开启服务器 SERVER.listen(8080,() => { console.log('Server Running...'); });
结语:
问渠那得清如许?唯有源头活水来。