创建服务
const express = require('express')
// 不需要new,koa需要new
let server = express();
server.listen(8080);
路由
// 处理get请求
// 回调函数接收3个参数,调用next()执行后面的匹配url的路由
server.get('url', (req,res,next) => {
//发数据,也可以发json,自带end()
// res.json(), res.sendFile(), res.render()
res.send();
})
//处理post请求
server.post('url',fn);
//处理所有请求
server.use('url',fn);
//处理所有地址的所有请求
server.use(fn);
// 也可以使用express.router进行路由蓝图编写
// test.js
const router = app.Router()
router.get('/', (req, res) => {})
module.exports = router
// index.js
const test = require('./test.js')
app.use('/test', test)
中间件
中间件可以执行任何操作,运行任何代码,更改请求和响应对象,也可以结束“请求 - 响应”周期。 如果它没有结束循环,则必须调用 next() 将控制传递给下一个中间件函数(否则请求将成为悬挂请求)
// "body-parser": 用于解析处理post请求中的数据,处理后通过res.body获得
// "multer": 处理文件上传,处理后通过res.files获得
// "cookie-parser": 操作cookie, req.cookies(), res.cookie(key, val, [options])
// "cors": 处理跨域通讯
// ”cookie-session“: 配合cookie-parser使用,一种数据信息保密手段
数据库
- mongodb
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/animals', (err, client) => {
if(err) {
throw err;
}
let db = client.db('动物');
db.collection('哺乳动物').find().toArray((err, result) => {
if(err) throw err;
console.log(result);
client.close();
});
});
- mysql
var mysql = require('mysql')
var connection = mysql.createConnection({
host: 'localhost',
user: 'dbuser',
password: 's3kreee7',
database: 'my_db'
})
connection.connect()
connection.query('SELECT 1 + 1 AS solution', function (err, rows, fields) {
if (err) throw err
console.log('The solution is: ', rows[0].solution)
})
connection.end()
- redis
var redis = require('redis')
var client = redis.createClient()
client.on('error', function (err) {
console.log('Error ' + err)
})
client.set('string key', 'string val', redis.print)
client.hset('hash key', 'hashtest 1', 'some value', redis.print)
client.hset(['hash key', 'hashtest 2', 'some other value'], redis.print)
client.hkeys('hash key', function (err, replies) {
console.log(replies.length + ' replies:')
replies.forEach(function (reply, i) {
console.log(' ' + i + ': ' + reply)
})
client.quit()
})
视图/模板引擎
模板引擎可为输出文档的结构指定一个模板,在数据处先放置占位符,并于页面生成时填充。模板通常用于生成 HTML,也可以生成其它类型的文档
const express = require('express');
const app = express();
// 设置包含模板的文件夹('views')
app.set('views', path.join(__dirname, 'views'));
// 设置视图引擎,比如'some_template_engine_name'
app.set('view engine', 'some_template_engine_name');
app.get('/', (req, res) => {
res.render('index', { title: '关于狗狗', message: '狗狗很牛!' });
});
脚手架
express 应用生成器: npm install express-generator -g
cd 工作目录
express 应用目录
cd 应用目录