express3.x 無法使用layout模板解決方案

express3.x 無法使用layout模板解決方案解決方案,測試可行。

1.安裝express-partials。
方法一:運行cmd用npm install express-partials
方法二:在package.json裏面的dependencies添加"express-partials": "*"。然後運行cmd並切換至項目目錄運行npm install獲得最新版。


2.app.js裏面引用express-partials。
步驟一:添加引用var partials = require('express-partials');
步驟二:在app.set('view engine', 'ejs');下面添加app.use(partials());

var express = require('express')
  , routes = require('./routes/index')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path')
  , partials = require('express-partials');//這裏
var app = express();
//all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(partials());//這裏

3.在需要引用模板的地方調用layout:'模版名稱'
app.get('/路徑', function (req, res) {res.render('.ejs文件的名字', {title: '定義標題',});});

按照以上方案執行後,確實可以正常引用layout模板了,在Express3.x中,新建一個layout.ejs後,通過<%-body %>來引用其它內容。

具體實例:

1、用WebStorm新建一個Express項目,可以看到Express版本是3.3.3。


2、修改app.js如以下代碼所示。

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path')
  , partials =require('express-partials');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(partials());//這裏
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});
3、根據路由規則修改index.js、user.js和index.ejs、user.ejs如下。
//index.js
exports.index = function(req, res){
    res.render('index', {title: '測試Express3.x使用Layout'});
};
//user.js
exports.list = function(req, res){
    res.render('user', {title: 'user頁面定義的title'});//轉到
};
<h1><%= title %></h1>
<p>這裏是index.ejs文件的內容<%= title %>,如果看到外部layout文件的內容,就說明成功了!</p>
<h1><%= title %></h1>
<p>這裏是user.ejs的內容,爲了區分和index.ejs各自的引用而建立的。</p>
4、新建layout.ejs頁面,作爲調用模板。

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <p>這裏是layout.esj文件內容,如果沒有看到其它內容就說明失敗了。</p>
    <%-body %>  <!-- -->
  </body>
</html>
以上代碼即完成了簡單的調用layout模板,通過不同路徑訪問不同頁面,顯示出的內容都調用了這個layout.ejs模板。顯示效果如下圖所示:




學習資料:

Express2.x to 3.x所做出的改變:https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x

Express中文入門引導手冊:http://www.csser.com/board/4f77e6f996ca600f78000936#/post/4f77e772be3baa0d78001470

Ejs快速入門教程:http://www.csser.com/board/4fddc4f0b28ed7d857001674

Mongoose-讓NodeJS更容易操作Mongodb數據庫:http://www.csser.com/board/4f3f516e38a5ebc9780004fe

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章