node.js养成计划(四)Express简单使用

  • Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。
    node中原生http比较麻烦,Express web框架可以大大提高效率
  • 使用您所选择的各种 HTTP 实用工具和中间件,快速方便地创建强大的 API。
  • Express 提供精简的基本 Web 应用程序功能,而不会隐藏 Node.js 功能,比如我们还可以使用http的功能。
  • 许多 流行的开发框架 都基于 Express 构建

一、入门案例

// 0. 安装
// 1. 引包
var express = require('express')

// 2. 创建你服务器应用程序
//    也就是原来的 http.createServer
var app = express()


// 在 Express 中开放资源就是一个 API 的事儿
// 只要这样做了,你就可以直接通过 /public/xx 的方式访问 public 目录中的所有资源了
app.use('/public/', express.static('./public/'))
app.use('/static/', express.static('./static/'))
app.use('/node_modules/', express.static('./node_modules/'))

// 模板引擎,在 Express 也是一个 API 的事儿

// 路由
app.get('/about', function (req, res) {
  // 在 Express 中可以直接 req.query 来获取查询字符串参数
  console.log(req.query)
  res.send('你好,我是 Express!')
})

app.get('/pinglun', function (req, res) {
  // req.query
  // 在 Express 中使用模板引擎有更好的方式:res.render('文件名, {模板对象})
  // 可以自己尝试去看 art-template 官方文档:如何让 art-template 结合 Express 来使用
})

// 当服务器收到 get 请求 / 的时候,执行回调处理函数
app.get('/', function (req, res) {
  res.send(`
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
<body>
  <h1>hello Express!你好</h1>
</body>
</html>
`)
})

// 相当于 server.listen
app.listen(3000, function () {
  console.log('app is running at port 3000.')
})

二、热部署

nodemon 基于nodejs的第三方命令行工具,需要独立安装

npm install modemon -g	

使用

node app.js  -> nodemon app.js

三、路由(中间件)

GET请求

app.get('/', function (req, res) {
  res.send('Hello World!')
})

Post请求

app.post('/', function (req, res) {
  res.send('Got a POST request')
})

Delete请求

app.delete('/user', function (req, res) {
  res.send('Got a DELETE request at /user')
})	

PUT 请求

app.put('/user', function (req, res) {
  res.send('Got a PUT request at /user')
})

USE 通用请求

//直接使用use方法可以处理四种请求方式
app.use((req, res)=>{
	res.send('ok');
});

四、Express中static-server静态资源服务

可以通过use暴露静态资源

//当以 /public/ 开头的时候,去 ./public/ 目录中找找对应的资源
app.use('/public/', express.static('./public/')) (推荐)
// 这种方式的好处就是可以省略 /public/
app.use(express.static('./public/'))

五、使用art-template模板引擎

  • 安装

      npm install express -s
      npm install express-art-template -s
    
  • 配置

      /*
      表示渲染以 .html结尾的文件的时候,使用 art-template 模板引擎
      express-art-template 是专门用来在 Express 中把 art-template 
      整合到 Express 中虽然外面这里不需要记载 art-template 但是
      也必须安装原因就在于 express-art-template 依赖了 art-template 
      */
      
      app.engine('html', require('express-art-template'))
    
  • 使用

      /**
    * Express 为 Response 相应对象提供了一个方法:render
    * render 方法默认是不可以使用,但是如果配置了模板引擎就可以使用了
    * res.render('html模板名', {模板数据})
    * Express 约定默认会去项目中的 views 目录查找该模板文件
    * /
      app.get('/', function (req, res) {
        res.render('index.html', {
          title: "test world"
        })
      })
    

如果想要修改默认的 views 目录,则可以

 app.set('views', render函数的默认路径)

六、在express中获取表单POST请求体数据

  • 安装
npm install body-parser -s
  • 配置
//配置 body-parser 中间件(插件,专门用来解析表单 POST 请求体)
//parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
  • 使用 req.body
/ 当以 POST 请求 /post 的时候,执行指定的处理函数
// 这样的话我们就可以利用不同的请求方法让一个请求路径使用多次
app.post('/post', function (req, res) {
  /**
   * 1. 获取表单 POST 请求体数据
   * 2. 处理
   * 3. 发送响
   * req.query 只能拿 get 请求参数
   * console.log(req.query)
   */
  var comment = req.body
  comment.dateTime = '2017-11-5 10:58:51'
  comments.unshift(comment)
  // 这些方法 Express 会自动结束响应
  res.redirect('/')
})

res.redirect(’/’)重定向

七、Express 路由设计

  • router.js 路由模块
  • 职责:
    ·· 处理路由
    · 根据不同的请求方法+请求路径设置具体的请求处理函数
  • 模块职责要单一,不要乱写
  • 我们划分模块的目的就是为了增强项目代码的可维护性,提升开发效率
1. 创建一个路由容器
var router = express.Router()
2. 把路由都挂载到 router 路由容器中

router.get(’/students’, function (req, res) { … }

3. 把 router 暴露出去
module.exports = router

在这里插入图片描述

4. 把路由容器挂载到 app 服务中
app.use(router)

八、异步调用回调值处理

请移步番外

app.use() 不仅仅是用来处理静态资源、还用来处理各种请求、还用来处理中间件(如家在路由、引入 bodyParse等)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值