部分与Node.js + Express + Hogan.js [英] Partials with Node.js + Express + Hogan.js
问题描述
我正在使用Node.js + Express开发一个网站,并将其用作视图引擎Hogan.js。
这是我的文件应用程序.js
:
/ **
*模块依赖关系。
* /
var express = require('express')
,routes = require('./ routes')
,user = require('./路由/用户')
,http = require('http')
,path = require('path');
var app = express();
app.configure(function(){
app.set('port',process.env.PORT || 3000);
app.set('views' __dirname +'/ views');
app.set('view engine','hjs');
app.use(express.favicon());
app.use(express .logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser ('你的秘密在这里));
app.use(express.session());
app.use(app.router);
app.use(require('中间件')({src:__dirname +'/ public'}));
app.use(express.static(path.join(__ dirname,'public')));
});
app.configure('development',function(){
app.use(express.errorHandler());
});
app.get('/',routes.index);
app.get('/ about',routes.about);
app.get('/ users',user.list);
http.createServer(app).listen(app.get('port'),function(){
console.log(Express server listening on port+ app.get 'port'));
});
文件 /routes/index.js
是:
/ *
* GET页面。
* /
exports.index = function(req,res){
res.render(
'index',
{
标题:'Home Page',
作者:'Bruce Wayne'
}
);
};
exports.about = function(req,res){
res.render(
'about',
{
title:'About Page' ,
作者:'Bruce Wayne'
}
);
};
在 / views
文件夹中,有:
| - part.hjs
index.hjs
| - cv.hjs
/ p>
文件 part.hjs
是:
< h3> Hello {{author}}< / h3>
文件 index.hjs
是: / p>
< h1>标题:{{title}}< / h1>
{{> part}}
欢迎来到高谭市。
文件 about.hjs
是:
< h1>标题:{{title}}< / h1>
{{>部分}}
我不是小丑。
我有两个问题:
- 如何正确使用我的网页中的部分? (此代码不起作用)
- 可以在两个或多个页面中使用相同的标题,而不会在文件
/ routes / index中重复执行值分配。 js
?
最好的问候,Vi。
我已经找到第一个问题的解决方案。
首先,我删除了 hjs
:
npm remove hjs
然后,我安装了包 hogan-express
:
npm install hogan-express
此外,我编辑 app.js
:
/ **
*模块依赖。
* /
var express = require('express')
,routes = require('./ routes')
,user = require('./路由/用户')
,http = require('http')
,path = require('path');
var app = express();
app.engine('html',require('hogan-express'));
app.enable('view cache');
app.configure(function(){
app.set('port',process.env.PORT || 3000);
app.set('views' __dirname +'/ views');
app.set('view engine','html');
app.use(express.favicon());
app.use(express .logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser ('你的秘密在这里));
app.use(express.session());
app.use(app.router);
app.use(require('中间件')({src:__dirname +'/ public'}));
app.use(express.static(path.join(__ dirname,'public')));
});
app.configure('development',function(){
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'));
});
和 routes / index.js
:
exports.index = function(req,res){
res.locals = {
title:标题',
};
return res.render(
'index',
{
partials:
{
part:'part',
}
}
);
};
现在,在 / views
code> index.html , part.html
。
文件 part.html
包含:
h1> {{title}}< / h1>
文件 index.html
包含: / p>
{{>部分}}
你好世界!
所以,它工作正常。
I'm developing a site with Node.js + Express and using as view engine Hogan.js.
This is my file app.js
:
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'hjs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
app.get('/', routes.index);
app.get('/about', routes.about);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
The file /routes/index.js
is:
/*
* GET pages.
*/
exports.index = function(req, res){
res.render(
'index',
{
title: 'Home Page',
author: 'Bruce Wayne'
}
);
};
exports.about = function(req, res){
res.render(
'about',
{
title: 'About Page',
author: 'Bruce Wayne'
}
);
};
In /views
folder, there are:
|- part.hjs
|- index.hjs
|- cv.hjs
The file part.hjs
is:
<h3>Hello {{ author }}</h3>
The file index.hjs
is:
<h1>Title: {{ title }} </h1>
{{> part }}
Welcome to Gotham City.
And the file about.hjs
is:
<h1>Title: {{ title }}</h1>
{{> part }}
I'm not Joker.
I've two questions:
- How can I use properly the partials in my pages? (this code doesn't work)
- Can I use the same "title" for two or more pages without repeat the values assignment in file
/routes/index.js
?
Best regards, Vi.
I've found a solution for the first question.
First of all, I removed hjs
:
npm remove hjs
Then, I installed the package hogan-express
:
npm install hogan-express
Furthermore, I edited app.js
:
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var app = express();
app.engine('html', require('hogan-express'));
app.enable('view cache');
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'html');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
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'));
});
And routes/index.js
:
exports.index = function(req, res) {
res.locals = {
title: 'Title',
};
return res.render(
'index',
{
partials:
{
part: 'part',
}
}
);
};
Now, in /views
there are index.html
, part.html
.
The file part.html
contains:
<h1>{{ title }}</h1>
The file index.html
contains:
{{> part}}
Hello world!
So, It works fine.
这篇关于部分与Node.js + Express + Hogan.js的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!