最近在学习nodeJS相关的知识,自己结合学习中总结了一些node的一些常用模块以及用法。
1.node介绍
- Node是基于chromeV8解析引擎之上构建的一个javascript运行的环境,或者说平台
- 在node中,可以使用javascript语言进行编程
- Node能解析和执行javascript(ECMAscript)代码
- Node是一个平台,让javascript可以脱离浏览器环境运行
- Node自身使用C++语言写出了很多系统级别相关的API,暴露了一些javascript环境API
1.1node的特点
- Single Thead:单线程
- Event-driven:事件驱动
- Non-blocking I/O model:非阻塞IO模型
- 文件IO、网络IO基本上都是异步的
- 所以在Node中会看到各种各样的花式回调
2.nodeAPI简介
- const request = require(‘request’)// 这个第三方提供的发请求的模块
- const cheerio = require(‘cheerio’)// node版的jquery,模拟了jquery的一些方法,帮助我们操作html字符串
const fs = require(‘fs’) //文件模块
1
2
3
4
5
6
7
8
9
10
11
12
13request('http://www.cnblogs.com/',function(res,result){
//console.log(res.body);
// load 是根据html字符串得到,一个dom对象!!!!
let $ = cheerio.load(res.body)
let $post_item = $('.post_item')
// 我们一个标题对应一个文本文件,存储起来
$post_item.each(function(index, item){
let $a = $(item).find('.titlelnk')
fs.writeFile(__dirname+'/data/'+$a.text(),$a.text(),function(err){
console.log('完成')
})
})
})const mongoose = require(‘mongoose’)// 这个npm模块是用来操作mongodb数据库的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23const mongoose = require('mongoose')
// 1.建桥, 建立连接
const db = mongoose.connect('mongodb://tmp:123123@127.0.0.1:27017/tmp')
//约束数据库的结构
const UserSchema = new mongoose.Schema({
name:String,
completed:Boolean
})
// 得到了一个数据表 // 这里的todo对应todos数据表
const Todo = mongoose.model('todo',UserSchema)
// 创建要存储的数据对象
const td = new Todo({
name:'吃饭',
completed:true
})
// 存储
// td.save()
Todo.findOne({},function(result){
console.log(result)
})var mysql = require(‘mysql’);//用来连接mysql数据库的
1
2
3
4
5
6
7let connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '143720',
database : 'studyit',
port : '3309'
});var express = require(‘express’);//node框架-express
1
2
3
4
5
6
7
8
9
10
var router = express.Router();//子路由
// 导出
module.exports = router;
// 设置路由
router.get('/',function(req,res){
// res.send('hello nodejs');
res.render('dashboard/index',{name:'itcast'});//渲染指定页面
});var path = require(‘path’);//path模块
1
var rootPath = path.join(__dirname,'../');//__dirname:E:\www\project\day2\projectDemo\controllers
var multer = require(‘multer’) // nodejs的中间件,用于处理 multipart/form-data 类型的表单数据, 它主要用于上传文件.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26// 允许处理上传文件的路径和文件名
var storage = multer.diskStorage({
//上传文件的存放位置处理
destination: function (req, file, cb) {
cb(null, rootPath+'/uploads/avatars');
},
//上传文件后的文件名字处理
filename: function (req, file, cb) {
// console.log(file);//{ fieldname: 'tc_avatar',
// originalname: 'b.png',
// encoding: '7bit',
// mimetype: 'application/octet-stream' }
var originalname = file.originalname;
var lastIndex = originalname.lastIndexOf('.');
var filename = originalname.slice(0, lastIndex);//b
var fileExt = originalname.slice(lastIndex);//.jpg
// 原始名 + Date.now() + 原始后缀
cb(null, filename + '-' + Date.now()+fileExt)
}
})
var upload = multer({ storage: storage });
router.post('/upfile',upload.single('tc_avatar(上传的文件名)'),function(req, res){
//此时上传成功的文件会返回前台信息,即在req.file里面
res.json(req.file);
})var bodyParser = require(‘body-parser’);//中间件方法
- var cookieParser = require(‘cookie-parser’)//cookie的中间件
- var session = require(‘express-session’) // session的中间件
- var express = require(‘express’)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31var app = express();
// 设置模板引擎
// 指定模板引擎放在那里了?
app.set('views',__dirname+'/views');
// 指定使用哪个模板引擎
app.set('view engine','xtpl');
// 应用cookie的中间件,此中间件就会在响应(res)的时候设置cookie方法
app.use(cookieParser());
// 应用session的中间件
// 在req中添加一个属性
app.use(session({
secret: 'keyboard cat',
resave: false,
cookie:{maxAge:60*60*24*1000}
}))
// 解析application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extend:false}));
// 设置目录 ,加载静态资源
app.use('/',express.static('public'));
app.use('/',express.static('uploads'));
// 加载子路由
var index = require('./controllers/index');
// 挂载子路由
app.use('/',index);
// 监听端口
app.listen(3000);
13.const fs = require(‘fs’)//文件模块1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16//读取文件
fs.readFile('./REAME.md',function (err,data) {
if(err){
//抛出错误信息
throw err
}
//打印文件信息
console.log(data.toString())
})
//写入文件
fs.writeFile('./a.txt','hello world',function (err) {
if(err){
throw err
}
console.log('文件写入成功')
})
14.const utility = require(‘utility’)//加密工具
15.const gm = require(‘gm’) // 图片转换工具
- 首先要下载安装GraphicsMagick或者ImageMagick,并配置环境变量,之后检测:命令行中输入gm
- 安装:npm install gm
- 使用:npm工具网址
1 | // 图片创建 path:图片的路径 NewPath写入的新的路径 |