最近在学习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
 13- request('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
 23- const 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
 7- let 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写入的新的路径 | 
