node+express项目 render如何渲染views目录下的子目录的模板

在views下创建一个文件夹 back ,在back文件夹下创建模板index.jade,定义模板路由,访问模板404。

目录结构如下图
图片描述

app.js代码如下

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));  //设置模板相对路径(相对当前目录)
app.set('view engine', 'jade');  //设置模板引擎

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

users.js路由定义 back文件夹下的index.jade

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
    res.send('respond with a resource');
});
router.get('/back', function(req, res, next) {
  res.render('back/index',{title:'后台首页'});
});


module.exports = router;

顺便把index.js 代码也贴一下

var express = require('express');
var router = express.Router();


var  MongoClient = require('mongodb').MongoClient;
var  DB_CONN_STR = 'mongodb://localhost:27017/calutar';
var insertData = function (db,data,callback) {
    var collection = db.collection('calutar');
    collection.insert(data,function (err,result) {
        if(err){
            console.log('Error'+err);
            return;
        }
        callback(result);
    })
}
var getData = function (db,callback) {
    var collection = db.collection('calutar');
    collection.find().toArray(function (err,result) {
        if(err){
            console.log('Error:'+err);
            return;
        }
        callback(result)
    })
}

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: '公积金计算' });
});
router.get('/history',function (req,res,next) {
    res.render('history', { title: '查询历史' });
});

//接口  计算结果接口
router.post('/foot',function (req,res) {
    //  从表单取得数据
    var accountTemp = req.body.account; //账户余额
    var monthTemp = req.body.month/1; //每月缴费
    var ageTemp = req.body.age/1; //年龄
    var sexTemp = req.body.sex; //性别
    var termLimitTemp = req.body.termLimit; //贷款期限
    var typeTemp = req.body.type; //还款类型


    var ageLong; // -- 年龄段
    if(sexTemp == 0){ //=0男,=1女
        ageLong = (60 - ageTemp)*12;
    }else if(sexTemp == 1){
        ageLong = (55 - ageTemp)*12;
    }
    var maxGetTemp = accountTemp*8+monthTemp*ageLong;  // -- 最高可贷款
    var monthReturnTemp;
    if(typeTemp==0){ //等额还款
        monthReturnTemp = maxGetTemp/ageLong;
    }
    else if(typeTemp==1){ //逐月递减
        monthReturnTemp = maxGetTemp/ageLong+3000;
    }
    var dateTemp = new Date().getTime();
    var query_doc = {account:accountTemp,month:monthTemp,age:ageTemp,sex:sexTemp,termLimit:termLimitTemp,type:typeTemp,maxGet:maxGetTemp,monthReturn:monthReturnTemp,date:dateTemp}
    MongoClient.connect(DB_CONN_STR,function (err,db) {
        insertData(db,query_doc,function (result) {
            console.log("插入数据成功", result);
            db.close();
        })
    });
    var json ={code:0,msg:'request is ok',data:{maxGet:maxGetTemp,monthReturn:monthReturnTemp}};
    res.send(json);
});
router.post('/head',function (req,res) {
    MongoClient.connect(DB_CONN_STR,function (err,db) {
        getData(db,function (result) {
            console.log("获取数据成功",result);
            res.send({code:0,msg:'request is ok',data:result})
            db.close();
        })
    })
})
module.exports = router;

菜鸟初学者,很是迷茫,有没有大神解决下我的问题,不胜感激

阅读 5.5k
1 个回答

app.set('views', [path.join(__dirname, 'views'),path.join(__dirname, 'views/back')]);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题