简介
express 是基于 nodeJs 的一个后台开发框架,它的特点在于 简洁,灵活,快速。提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站。
构建工程
准备工作
构建工程之前需要 全局下载 express npm i epxress -g
由于4.x版本把 generator 分离出来了,所以还要单独下载 generator npm i -g express-generator
下载完成后 查看环境 express --version
,如果提示错误,则检查全局模块下载路径是否配置到环境变量当中
搭建项目
切换到工作目录下,使用 express [项目名]
来初始化一个项目
初始化完成后,切换进项目根目录,使用 npm install
下载依赖包
随后使用 npm start
即可运行
在 bin 目录下可以看到相关配置信息,例如端口是 3000
在浏览器中 输入 http://localhost:3000 即可访问
目录结构
bin
bin 目录下的 www文件中,存放着许多配置信息,这里为了简洁,直接删去bin目录,并将其中一些配置放置在app.js 中,这样运行项目 直接启动 app.js 即可
app.js ↓
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 31 32 33 34
| var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser');
var indexRouter = require('./routes/index'); var usersRouter = require('./routes/users');
var app = express();
var http = require('http'); var server = http.createServer(app);
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.urlencoded({extended:true})) app.use(express.json())
app.use(cookieParser());
app.use('/', indexRouter); app.use('/users', usersRouter);
server.listen('3000',()=>{ console.log('正在运行') console.log('http://localhost:3000') })
|
public
这个目录用于存放静态资源,如图片,脚本,样式,在app.js 中已经将此目录引用,所以可以直接通过地址调用此文件夹下的资源
如 http://localhost:3000/images/download.png
routes
这是存放路由配置相关的目录,初始化后我们可以看到 index于users 两个文件
index 顾名思义就是入口文件,所有接口都需要在 Index 中导出,例如此处,我创建了controllers文件夹,并根据不同接口创建不同文件进行管理,并在 index 中使用
index ↓
1 2 3 4 5 6 7 8 9
| var express = require('express'); var router = express.Router(); var user = require('../controllers/userController')
router.get('/', user.getUser);
module.exports = router;
|
在 routes目录下,除index之外的文件 作为子路由,其中的接口前面必须加上自己的前缀
例如,在routes下有了 users文件,其中有一个 /login 接口,我需要访问 http://localhost:3000/users/login
users ↓
1 2 3 4 5 6 7 8 9 10 11 12
| var express = require('express'); var router = express.Router(); var User = require('../controllers/userController')
router.post('/sendCode',User.sendCode);
router.post('/login',User.codeToLogin)
module.exports = router;
|
util
这个目录一般由开发者自己创建,用于存放工具类,我这里创建了一个用于连接mysql的工具类
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 31 32 33 34 35
| const mysql = require('mysql')
module.exports = {
config:{ host:'localhost', prot:'3306', user:'root', password:'123456', database:'test' },
sqlConnect:function(sql,sqlArr,callBack){ var pool = mysql.createPool(this.config)
pool.getConnection((err,conn)=>{ console.log('连接') if(err){ console.log('连接失败') return } conn.query(sql,sqlArr,callBack)
conn.release()
}) }
}
|
controllers
这个目录一般由开发者自己创建,用于存放具体接口的实现,并暴露出去,在 routes/index 中引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| var dbConfig = require('../util/dbconfig')
getUser = (req, res) => { let sql1 = 'select * from user' let sqlArr = [] let callBack = (err, data) => { if (err) { console.log('连接失败') } else { res.send({ 'list': data }) } } dbConfig.sqlConnect(sql1, sqlArr, callBack) }
module.exports = { getUser, }
|