1.第三方中间件—body-parser
可以将post请求的数据解析为对象
使用中间件
const bodyParser=require('body-parser');
//urlencoded 是将post请求的数据解析为对象
server.use(bodyParser.urlencoded({
//默认使用的是qs模块 如果系统模块能解决就用系统提供的方法解决 不使用qs模块设置如下代码使用的是官方提供的querystring模块
extended:false
}));
在路由中获取数据 req.body 返回对象的格式
2.MySQL模块
(1)普通连接
//创建连接对象,传递mysql的IP地址/域名、端口、用户名、密码、使用的数据库
var connection=mysql.createConnection({
});
//执行连接
connection.connect();
//callback回调函数 两个参数 一个是err错误时返回的内容 另一个是返回的结果result
connection.query('SQL语句',callback);
//执行完所有的SQL语句 关闭连接
connection.end();
(2)使用连接池
创建连接对象,传递mysql的IP地址/域名、端口、用户名、密码、使用的数据库、设置连接池的大小(connectLimit:20)
var pool=createPool({
});
//callback回调函数 两个参数 一个是err错误时返回的内容 另一个是返回的结果result
pool.query('SQL语句',callback);
—————————————————————————————————————————————————————
nodejs补充内容
1.缓冲区(buffer)
在内存中存储数据的区域,存储网络传输时的资源
2.模块系统
模块是一个预定义好的功能体,在nodejs下,每一个文件都是一个模块
//在每个js文件中都包含一个构造函数
(function(exports,require,module,__filename,__dirname){
//程序员编写区域
//文件完整路径及名称
console.log(__filename);
//文件的完整路径
console.log(__dirname);
//引入模块 ./ 表示当前目录下
require('');
//module 指当前系统下的模块
module.exports 当前模块的导出对象(公开的内容),可以供其他模块使用的方法及属性
exports 等价于 module.exports 但不是一个东西
})
(1)查询字符串
querystring.parse() 将字符串解析为对象
querystring.stringify() 将对象转为字符串
(2)url模块——url
parse()
protocol 协议
hostname 主机(域名/IP地址)
port 端口
pathname 服务器端路径
query 查询字符串
format () 将对象转换为url格式 query属性必须使用 对象的形式
(3)全局函数
开启定时器
var timer = setTimeout(回调函数,间隔是毫秒);
清除定时器
clearTimeout(timer);
nextTick() 与 setImmediate() 区别
(4)文件系统模块——fs
用于操作服务器端目录 ,例如:创建目录,删除目录,读取目录,创建文件,删除文件,读取文件…
创建目录
fs.mkdir(路径,回调函数);
删除目录
fs.fmkir(路径,回调函数);
读取目录
fs.readdir(路径,回调函数) ——异步
fs.readdirSync('路径') ——同步
**同步异步区别**
同步会阻止代码执行,只有运行完才会执行后面的代码
通过返回值 获取结果
异步不会阻止代码执行,在代码的最后执行
通过回调函数获取结果 常用于一些耗时的操作
写入文件
fs.writeFile(路径,写入的数据,回调函数);
如果文件不存在,则会创建文件并写入数据,如果文件已存在则会清空文件数据,然后写入
删除文件
fs.unlink(文件路径,回调函数);/unlinkSync(文件路径);
判断文件是否存在
fs.existsSync(文件路径); 异步方法已被废弃
追加写入
fs.appendFile(文件路径,回调函数); 异步 +Sync 去除回调函数
如果文件不存在 则会创建文件 如果文件存在 则会追加数据
读取文件
fs.readFile(文件路径,回调函数);
读取的数据格式 是Buffer格式 需要转义为字符串的格式