express3.x 无法使用layout模板解决方案
2013-07-08 16:49
381 查看
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());
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如以下代码所示。
学习资料:
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
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
相关文章推荐
- VS2010使用.net 4.0中的ASP.NET MVC 2 模板建立工程后无法提交HTML代码解决方案一则
- VS2010使用.net 4.0中的ASP.NET MVC 2 模板建立工程后无法提交HTML代码解决方案一则
- VS2010使用.net 4.0中的ASP.NET MVC 2 模板建立工程后无法提交HTML代码解决方案一则
- 淘宝宝贝描述模板DIV无法使用BACKGROUND属性的终极解决方案
- VS2010使用.net 4.0中的ASP.NET MVC 2 模板建立工程后无法提交HTML代码解决方案一则
- Windows Server 2008 R2中无法使用360免费Wifi的解决方案
- Win8.1操作系统上PLSQL Developer无法正常使用解决方案
- 32位linux中无法使用AVD的解决方案
- "无法使用前导 .. 在顶级目录上退出" 错误分析以及解决方案
- 【win7无法使用局域网共享的解决方案】
- bootstrap的popover插件在focus模式时在Safari浏览器无法使用的bug解决方案
- 关于MX5在Mac无法正常使用开发者模式的解决方案
- TabHost中使用startActivityForResult无法接收返回值的解决方案
- STL中使用模板在gcc中无法通过编译
- Win7下Qt5.2中使用OpenGL的glu函数库无法使用的解决方案
- LitePal无法使用自定义主键的临时解决方案
- Windows Phone 8.1 无法使用GB2312编码的解决方案
- Mac系统升级后eclipse菜单无法使用解决方案
- ubuntu 11.10升级到12.04键盘鼠标无法使用解决方案
- Kali Linux 2017.1 Armltage无法使用解决方案