nodejs项目中的路由写法

寻技术 JS脚本 / Node.Js 2023年07月19日 99
 //两种路由写法,一种封装成函数,返回结果,此种方法可以传递参数,
 "use strict";
 var _ = require("lodash");
 var express = require('express');
 var router = express.Router();
 var thenjs = require('thenjs');
 
 module.exports = function(utils) {
 
     //* 广告 API */
     router.get('/api/ads/:type', function (req, res) {
         res.setHeader("Expires", new Date(Date.now() + 60 * 60 * 1000 * 2).toUTCString());
         var start = utils.moment().startOf('day');
         var end = utils.moment().endOf('day');
 
         // 有时间限制且在时间限制内, 或者无时间限制的广告
         var or = [{start: {'$gte':start}, end: {'$lte': end}}, {start: {$exists: false}, end: {$exists: false}}, {start: null, end: null}];
         Ad.find({type:req.params.type}).or(or).sort('-start position').exec(function(err, ads) {
             res.json({items:ads});
         });
     });
 
     return router;
 };
 
 //第二种写法:
 var express = require('express');
 var router = express.Router();
 
 // 该路由使用的中间件
 router.use(function timeLog(req, res, next) {
     console.log('Time: ', Date.now());
     next();
 });
 // 定义网站主页的路由
 router.get('/', function(req, res) {
     res.send('Birds home page');
 });
 // 定义 about 页面的路由
 router.get('/about', function(req, res) {
     res.send('About birds');
 });
 
 module.exports = router;
 
 //第二种明显不能传递参数,
 
 //第一种比较巧妙,将全局都用到的变量收集到名为utlis的对象中;
 //模块再封装时,传入一个对象形参,完成功能配置;
 //将此页面引入到app.js中将参数传入进去,完成功能;

 

关闭

用微信“扫一扫”