express
概念:
- express是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。
构成
- 中间件
- 应用级中间件
- 路由中间件
- 错误处理中间件
- 如何调用中间件?
- app对象调用-->app.use(中间件)
- 路由
使用工程化工具来构建一个完整的 express 项目
- 工程化工具/自动化工具/脚手架(express-generator)
安装express-generator脚手架环境
$ cnpm i express-generator -g
$ express -e 项目名称
不安装express-generator脚手架使用
保证你的电脑中npm版本 > 5.2
$ npx express -e 项目名称/.
名词解释: -e 表示ejs文件,它是一个html模板
. 表示当前文件夹中
生成多个相关文件:bin/public/routes/views/app.js.package.json
- 相关文件简介
- bin:为项目创建了一个服务器
- www
- public:静态资源文件夹
- img
- style
- is
- routes:路由
- views:路由对应的模板,这个模板将来会发送给前端,发给前端前会被解析为html文件
- .ejs文件
- app.js:项目入口文件
- package.json:表示项目启动脚本记录 、 项目所需要的依赖包【 插件 】
- bin:为项目创建了一个服务器
- 引入包管理工具安装包
$ cnpm i
生成node_modules文件
- 开启服务器
在bin/www中设置开启服务器提醒:
server.listen(port,()=>{
console.log(`服务器运行在:http://localhost:${port}`);
});
$ npm run start
终端显示:服务器运行在...
- express路由配置
在routes中创建接口(register.js)
//创建一个接口
const express=require('express');
const router=express.Router();
router.route('/register')//http://localhost:3000/api/register
.post((req,res,next)=>{
res.render('register',{//参数表示要渲染的文件名自动找views里面的ejs文件
data:JSON.stringify({//发送的数据以字符串格式
name:'张三',
msg:'圣诞节快乐!'
})
})
})
//暴露接口
module.exports=router;
- 创建模块/添加模块
//创建模块
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
//接口中所用的模块
var registerRouter = require('./routes/register');
//调用模块
app.use('/', indexRouter);
app.use('/users', usersRouter);
//更改接口路径
app.use('/api', registerRouter);
- 实时监听
在package.json文件中:
"scripts": {
"start": "nodemon ./bin/www"
}
数据库
概念:
- 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
作用:
- 存储数据
分类
- 关系型数据库【 SQL 】
- 由表-->行构成
- 代表:MySQL ...
- 非关系型数据库【 NoSQL 】
- 由集合-->文档构成/BSON
- BSON:JSON的超集,比JSON多了可以存储列如 二进制 数据
- 代表:MongoDB ...
- 由集合-->文档构成/BSON
mongoose模块
Mongoose简介
- Mongoose库简而言之就是在node环境中操作MongoDB,将数据库中的数据转换为JavaScript对象以供使用。
Mongoose操作流程
- 1.安装mongoose
npm install mongoose -D
cnpm i mongoose -D/-S
- 2.连接数据库
2.1 使用mongoose连接数据库的前提条件是:
(1)mongo数据库已经运行
(2)已经安装了mongoose包
2.2创建db文件夹-->将数据库变为自定义模块
db/index.js-->如下操作:
//引入mongoose模块
const mongoose=require('mongoose');
//创建数据库
const run=()=>{
//mongoose.connect(参数,回调函数)方法连接数据库
const HOST='127.0.0.1';
const DATA_BASE_NAME='1911';
const dataB aseAddress=`mongodb://${HOST}:27017/${DATA_BASE_NAME}`;
mongoose.connect(dataBaseAddress,error=>{
if(error){
console.log('数据库连接失败');
}else{
console.log('数据库连接成功');
}
})
}
module.exports=run;
解析:
如何获取数据库地址:databaseAddress?
在cmd中输入mongo

2.3在routes/register.js引入db/index.js
const run=require('../db');
运行在.post()里面.render()上面
解析:
../db-->db/index.js文件名是index所以可以省略
2.4 报错问题
当Error:'http-errors'时,说明node_modules文件出错;
解决方法:
终端执行$ rm -rf node_modules(删除)
$ cnpm i(重装node_modules)
- 3.创建骨架schema
- 骨架:相当于一个字段/一个表
在db/schema/index.js中:
const mongoose=require('mongoose');
const schemaHandler=(options)=>{
return new mongoose.Schema(options)
};
const userSchema=schemaHandler({
username:String,
password:String
});
module.exports={
userSchema,
};
- 4.创建模型
- 一个骨架对应一个模型
在db/model/index.js中:
const mongoose=require('mongoose');
const {
userSchema,
}=require('../schema');
const modelHandler=(collectionName,schema)=>{
return mongoose.model(collectionName,schema)};
const userModel=modelHandler('users',userSchema);
module.exports={
userModel
};