zoukankan      html  css  js  c++  java
  • Node.js Express WEB框架

    Express  官方介绍:

    1.Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用

    2.丰富的HTTP工具以及来自Connect框架的中间件随取随用,创建强健、友好的API变得快速又简单

    1.创建一个web服务

     首先安装express:

    cnpm install express --save //开发依赖
    

    创建一个express应用程序 

    var express = require('express'); //引入express
    var app = express(); //实例化
    
    app.get('/', function(req, res){ //接受一个get请求
      res.send('hello world');
    });
    
    app.listen(3000); //监听3000端口,这个随便换,一般建议3000,5000,8000,8080,8800等
    

    启动:node hello.js  

    浏览器输入;http://localhost:3000/   返回信息:hello world

    2.express 项目生成器

    通过应用生成器工具 express-generator 可以快速创建一个应用的骨架。

    全局安装

    npm install -g express-generator
    

    使用express 快速生成应用骨架:

    express --view=ejs myapp
    

     

    生成骨架后,必须执行下列操作,不然找不到依赖包: 

    然后安装所有依赖包:

    $ cd myapp
    $ npm install
    

    在 Windows 命令行中,使用如下命令:

    set DEBUG=myapp:* & npm start
    

    在 MacOS 或 Linux 中,通过如下命令启动此应用:

    $ DEBUG=myapp:* npm start
    

    启动浏览器:http://localhost:3000/

     3.基本路由

     get请求

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

     post请求

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

     put请求

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

     delete请求

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

    上面有四种http请求方式,get,post,delete,put。只是请求方式不同而已,经历了多年的使用,还是get和post 请求方式使用最多。

     

    4.中间件app.use()

    app.all('/', function (req, res, next) {
      console.log('Accessing the secret section ...')
      next() // pass control to the next handler
    })
    

     这里面有3点需要注意:

    1.以上“/”这种方式,任何请求都会优先到这里,在这里面我们可以进行一些初始化验证,权限验证,规则校验等

    2.第三个参数next, 必须显示next(),请求才会向后传递,否则一直在等待,或者之前返回。

    3.app.use() 放在所有路由开始,可以进行权限等问题验证,放到所有路由末尾,可以进行收尾工作,如:退出登录,注销session

    5.参数传递

      a).restful方式参数(具体实例)

    app.get('/user/:id', function (req, res, next) {
      res.end(req.params.id)
    })
    

     b).传递参数3种方法:

    Get方式:Checks route params (req.params), ex: /user/:id
    Get方式:Checks query string params (req.query), ex: ?id=12
    Post方式:Checks urlencoded body params (req.body), ex: id=
    

     以上就是展示如何传递和如何接收,都很简单。

    6.路由中间件

      路由中间件使用起来更加灵活,cb0,cb1 都是我们在“//user/:id”之前进行的业务操作。

      比如:在获取用户数据之前,cb0查看用户是否有权限,cb1查看访问规则是否正确

    var cb0 = function (req, res, next) {
      console.log('CB0')
      next()
    }
    
    var cb1 = function (req, res, next) {
      console.log('CB1')
      next()
    }
    
    app.get('/user/:id', [cb0, cb1], function (req, res, next) {
      console.log('the response will be sent by the next function ...')
      next()
    }, function (req, res) {
      res.send('Hello from D!')
    })
    

    7.Response methods

    res.download()	//下载文件
    res.end()	//结束返回.
    res.json()	//以json方式返回.
    res.jsonp()	//以jsonp方式返回
    res.redirect()	//res跳转.
    res.render()	//解析模板文件.
    res.send()	//返回
    res.sendFile()	//返回文件
    res.sendStatus()//设置返回状态
    

    以上返回,只需要有印象,知道用的时候在哪查。

    8.app.route()

       这种方式也是比较简洁,我个人还是很喜欢的:实现了增删改查,为以后的模块式开发提供条件。

    app.route('/book')
      .get(function (req, res) {
        res.send('Get a random book')
      })
      .post(function (req, res) {
        res.send('Add a book')
      })
      .put(function (req, res) {
        res.send('Update the book')
      })
    .delete(function (req, res) {
        res.send('deletethe book')
      }
    )

    9.express托管静态文件

    例如,通过如下代码就可以将 public 目录下的图片、CSS 文件、JavaScript 文件对外开放访问了:

    app.use(express.static('public'))
    

    现在,你就可以访问 public 目录中的所有文件了:

    http://localhost:3000/images/kitten.jpg
    http://localhost:3000/css/style.css
    http://localhost:3000/js/app.js
    http://localhost:3000/images/bg.png
    http://localhost:3000/hello.html
    

    如果要使用多个静态资源目录,请多次调用 express.static 中间件函数:

    app.use(express.static('public'))
    app.use(express.static('files'))
    

    起个别名:

    app.use('/static', express.static('public'))
    

    现在,你就可以通过带有 /static 前缀地址来访问 public 目录中的文件了。

    http://localhost:3000/static/images/kitten.jpg
    http://localhost:3000/static/css/style.css
    http://localhost:3000/static/js/app.js
    http://localhost:3000/static/images/bg.png
    http://localhost:3000/static/hello.html
    

    由于环境问题,导致路径找不到,大招来了,自动获取路径信息:

    app.use('/static', express.static(path.join(__dirname, 'public')))
    

     

    好了,今天先到这吧。express上面的这些内容,你了解了就可以说入门了,后面无非就是,多个模块的拆分和组合,路由中间件的使用,保证项目的高复用性,还有很多其他中间件,仅此而已。

    古稀话痨:我们不知道,我们努力是为了什么,只是在回头看时,不因我荒废光阴,而自责。其实官方文档,我看着就完全OK,没必要在总结一套,我这方式可能就和史记一样,岁岁时光,留下点回忆。

      

     

     

    专注:全栈开发工程师 | 独立开发者
  • 相关阅读:
    00 vue源码里面常见方法
    vue 组件
    vue 样式
    vue 表单
    网络技术:NAT 网络地址转换
    网络技术:ACL 访问控制列表
    网络技术:VLAN 虚拟局域网
    Java程序设计——购物车系统
    网络 2011-2012 C 语言第三次作业批改总结
    第一用CSS
  • 原文地址:https://www.cnblogs.com/wookong/p/14500298.html
Copyright © 2011-2022 走看看