zoukankan      html  css  js  c++  java
  • nodejs之express的使用

    Express是目前最流行的基于Node.js的Web开发框架,可以快速的搭建一个完整功能的网站。
    Express框架建立在内置的http模块上,http模块生成服务器的原始代码如下。

    var http = require("http");
    var app = http.createServer(function(request, response) {
      response.writeHead(200, {"Content-Type": "text/plain"});
      response.end("Hello world!");
    });
    app.listen(3000, "localhost");
    

    上面代码的关键是http模块的createServer方法,表示生成一个HTTP服务器实例。该方法接受一个回调函数,该回调函数的参数,分别为代表HTTP请求和HTTP回应的request对象和response对象。
    Express框架的核心是对http模块的再包装。上面的代码用Express改写如下。

    var express = require('express');
    var app = express();
    app.get('/', function (req, res) {
      res.send('Hello world!');
    });
    app.listen(3000);
    

    比较两段代码,可以看到它们非常接近。原来是用http.createServer方法新建一个app实例,现在则是用Express的构造方法,生成一个Epress实例。两者的回调函数都是相同的。Express框架等于在http模块之上,加了一个中间层。

    1.express组织结构

    app demo
    |---node_modules------用于安装本地模块。
    |---public------------用于存放用户可以下载到的文件,比如图片、脚本、样式表等。
    |---routes------------用于存放路由文件。
    |---views-------------用于存放网页的模板。
    |---app.js------------应用程序的启动脚本。
    |---package.json------项目的配置文件。

    2..创建express服务器

    //app.js文件
    var express = require('express');
    var app = express();
    
    //指定更目录显示的内容
    app.get('/', function(req, res){
      res.send('Hello World');
    });
    
    //指定监听端口
    var server = app.listen(3000, function() {
        console.log('Listening on port %d', server.address().port);
    });
    

    运行nodejs应用程序

    />node app.js
    

    3.中间件

    中间件(middleware)就是处理HTTP请求的函数.
    当一个HTTP请求进入服务器,服务器实例会调用第一个中间件,完成后根据设置,决定是否再调用下一个中间件.

    中间件的参数为:
    .四个的时候---第一个为错误处理,第二个为客户请求request,第三个为服务器响应respond,第四个为next中间件. 如function(error, request, response, next){}
    .三个的时候---第一个客户请求request,第二个为服务器响应respond,第三个为next中间件. 如function(request, response, next){}
    .两个的时候---第一个客户请求request,第二个为服务器响应respondfunction. 如function(request, response){}

    4.使用中间件use

    use是express调用中间件的方法,它返回一个函数.

    app.use(function(request, response) {
      response.writeHead(200, { "Content-Type": "text/plain" });
      response.end("Hello world!
    ");
    });
    

    5.错误内容显示

    app.use(express.bodyParser());//使用body参数
    app.use(express.methodOverride());//使用函数覆盖
    app.use(app.router);//使用路由
    app.use(function(err, req, res, next){
      console.error(err.stack);
      res.send(500, 'Something broke!');
    });//错误内容显示
    

    6.路由

    express路由的方式有多种,这里举例常用的几种:

    .app.use('/', middleware);//get/post时,对于路径/的处理
    .app.get("/", middleware);//http中get时,对于路径/的处理
    .app.post("/", middleware);//http中post时,对于路径/的处理
    .app.put("/", middleware);//http中put时,对于路径/的处理
    .app.delete("/", middleware);//http中delete时,对于路径/的处理
    

    7.路径通配符*

    .*表示所有路径
    app.get("*", function(request, response) {
      response.end("404!");
    });//所有路径都返回404
    
    .:捕获路径内容
    app.get("/hello/:who", function(req, res) {
      res.end("Hello, " + req.params.who + ".");
    });//如"/hello/alice”网址,网址中的alice将被捕获,作为req.params.who属性的值
    

    8.设置环境变量set

    set用于指定变量的值.

    app.set("view engine", "ejs");//使用ejs作为模版
    

    9.response对象方法

    .重定向redirect

        response.redirect("/hello/anime");//重定向到/hello/anime
    

    .发送文件sendFile

        response.sendFile("/path/to/anime.mp4");
    

    .渲染网页模板render,即把变换的内容加载到网页.

        response.render("index", { message: "Hello World" });//将message变量传入index模板,值为"Hello World"渲染成HTML网页
    

    10.requst对象方法

    .获取客户ip地址:request.ip

    .获取上传的文件:request.files

    11.启动脚本package.json

    package.json用于指定app信息,nodejs版本号和其他组件的依赖关系

    {
       "name": "demo",
       "description": "My First Express App",
       "version": "0.0.1",
       "dependencies": {
          "express": "3.x"
       }
    }
    

    12.app入口app.js

    app.js主要包含http的创建,基本路由,监听端口号

    13.动态网页模板views

    views文件夹,用于存放所有的放网页模板.

    //app.js
    app.get('/', function(req, res) {
       res.render('index',{title:"最近文章"});
    });
    
    //index.js
    this is <%=title%>!
    

    14.指定静态网页目录

    //app.js
    app.use(express.static('public'));//指定静态网页目录,当浏览器发出非HTML文件请求时,服务器端就到public目录寻找这个文件
    

    如:<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">, 服务器端就到public/bootstrap/css/目录中寻找bootstrap.css文件

    非常感谢:http://javascript.ruanyifeng.com/nodejs/express.html

  • 相关阅读:
    「转」xtrabackup新版详细说明
    微博MySQL优化之路--dockone微信群分享
    分享的好处
    DBA的技能图谱
    高效运维--数据库坐而论道活动
    MySQL的诡异同步问题-重复执行一条relay-log
    把信送给加西亚读后感
    一次由于字符集问题引发的MySQL主从同步不一致问题追查
    nginx解决浏览器跨域问题
    kubernetes之pod调度
  • 原文地址:https://www.cnblogs.com/aheizi/p/5034464.html
Copyright © 2011-2022 走看看