express中間層搭建前端專案3

如果美是罪發表於2019-02-16

express中間層搭建前端專案2

建立路由

檔名稱以及路徑 routes/index.js

//獲取路由中介軟體
var getMoreMethod = require(`../method_routes/getMore-method`).getMoreMethod;
module.exports = function(app, domain) {
    //domain來處理異常
    app.use(function(req, res, next) {
        var d = domain.create();
        //監聽domain的錯誤事件
        d.on(`error`, function(err) {
            // res.statusCode = 500;
            res.statusCode = 404;
            res.render(`htmlerror`);
            d.dispose();
        });
        d.add(req);
        d.add(res);
        d.run(next);
    });
    //模板輔助方法
    //app.use(require(`../ejs_fun/index`));
    app.get(`/index`,getMoreMethod);
}

建立getMore-method

檔案路徑method_routes/getMore-method.js
這裡的點主要有兩方面1.async 2.request

var request = require(`request`);//nodejs請求中介軟體
var async = require(`async`);//流程控制中介軟體,有興趣可以自行讀取async的api
//引入全域性變數
require(`../config/config`);
exports.getMoreMethod = function(req,res,next){
    async.waterfall([
        function(callback) {
            var data = {};
            request.get({url:Config.url+"api/4", formData: {}}, function(err, res, body) {
                if (err) {
                    console.error(`failed:`, err);
                    callback && callback(err);
                }else{
                    data.f = JSON.parse(body);
                    callback(null, data);
                }
            });
        },
        function(data, callback) {
            request.get({url:Config.url+"api/test2", formData: {}}, function(err, httpResponse, body) {
                if (err) {
                    console.error(`failed:`, err);
                    callback && callback(err);
                }else{
                    data.t = JSON.parse(body);
                    callback(null, data);
                }
            });
        },
        function(data, callback) {
            request.get({url:Config.url+"test/pos", formData: {}}, function(err, res, body) {
                if (err) {
                    console.error(`failed:`, err);
                    callback && callback(err);
                }else{
                    data.p = JSON.parse(body);
                    callback(null, data);
                }
            });
        }
    ], function(err, result) {
        res.render("getMore", {
            "result": result,
            "first":result.f,
            "two":result.t,
            "three":result.p
        });
    });
}

全域性變數

檔案路徑config/config

//全域性變數
global.Config = {
    url:`http://192.168.43.201:3009/`//本地ip 
}

建立ejs檔案

檔案路徑 views/getMore.ejs

<!DOCTYPE html>
<html>
  <head>
    <title>getMore</title>
  </head>
  <body>
      <div class="container">
          <%for(var i in first){ %>
                <%if(i == `img`){%>
                    <img src="<%= first[i] %>" alt="">
                <%}else{%>
                    <div><%= first[i] %></div>
                <%}%>
          <%}%>
      </div>
  </body>
</html>

以上介面都是自行搭建mock資料,github地址node_api
搭建express專案已經差不多,歡迎大佬一起討論

相關文章