express的使用

188 阅读2分钟

创建服务

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 应用目录