部分与Node.js + Express + Hogan.js [英] Partials with Node.js + Express + Hogan.js

查看:130
本文介绍了部分与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> 
{{>部分}}
我不是小丑。

我有两个问题:


  1. 如何正确使用我的网页中的部分? (此代码不起作用)

  2. 可以在两个或多个页面中使用相同的标题,而不会在文件 / 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:

  1. How can I use properly the partials in my pages? (this code doesn't work)
  2. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆