有没有办法直接在jtml文件中包含jade文件?

时间:2016-06-28 03:36:53

标签: html node.js express pug

如何将其前端基于html的node.js网站与其前端基于jade模板引擎的另一个node.js网站相结合?我正在使用Express框架。

在前端有四个文件:index.html, index2.html, chat1.html, chat2.html,它们位于公共文件夹中。我要添加到此网站的博客网站只有jade template engine,它们位于views文件夹中。

index.html(位于公共文件夹中)是网站主页的入口点。从index.html开始,我引用index3.jade,这是第二个应用的主页,即博客jade应用,Chrome浏览器声明:" 404 Not Found"。但是,我可以去博客玉网站的另外两页,即添加帖子和添加类别。它只是博客jade应用程序的主页未显示。

因此,我无法仅查看从根目录开始的博客jade应用程序的主页。 html应用程序和博客jade应用程序都从根目录开始。我能够将博客jade应用程序显示在根目录中,但后来我看不到html应用程序,它也从根目录开始。

以下是我从index.html首页引用每个文件的方式:

`<li><a href="index2.html">gallery</a></li>`
`<li><a href="chat1.html">chat</a></li>`
`<li><a href="../views/index3.jade">blog</a></li>`   

有没有办法让博客jade app的主页显示在根目录以外的目录中?

以下是相关的app.js代码:

// Gallery HTML Code
var routes = require('./');
app.get('/public/index.html');

// Blog Code
var mongo = require('mongodb');
var db = require('monk')('localhost/nodeblog');

var routes = require('./');
var routes = require('./routes/index3');
var posts = require('./routes/posts');
var categories = require('./routes/categories');

var app = express();

app.locals.moment = require('moment');

app.locals.truncateText = function(text, length) {
    var truncatedText = text.substring(0, length);
    return truncatedText;
}

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

// Express Session
app.use(session({
    secret: 'secret',
    saveUninitialized: true,
    resave: true
}));

// Express Validator
app.use(expressValidator({
    errorFormatter: function(param, msg, value) {
        var namespace = param.split('.'),
            root = namespace.shift(),
            formParam = root;

        while (namespace.length) {
            formParam += '[' + namespace.shift() + ']';
        }
        return {
            param: formParam,
            msg: msg,
            value: value
        };
    }
}));

// Connect-Flash from Express-Messages
app.use(flash());
app.use(function(req, res, next) {
    res.locals.messages = require('express-messages')(req, res);
    next();
});

// Make our db accessible to our router
app.use(function(req, res, next) {
    req.db = db;
    next();
});

app.use('/index3', routes);
app.use('/posts', posts);
app.use('/categories', categories);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
   var err = new Error('Not Found');
   err.status = 404;
    next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
       res.status(err.status || 500);
       res.render('error', {
           message: err.message,
            error: err
        });
    });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
       message: err.message,
        error: {}
    });
});


module.exports = app;

以下是routes文件夹中index3.js的相关代码:

router.get('index3', function(req, res, next) {
    var db = req.db;
    var posts = db.get('posts');
    posts.find({}, {}, function(err, posts) {
        res.render('index3', { posts: posts });
    });
});

module.exports = router;

以下是routes文件夹中index.js的相关代码:

router.get('/', function(req, res, next) {
        res.render('public/index.html');
});

module.exports = router;

0 个答案:

没有答案