当前位置: 首页 > 面试题库 >

Node.js + Express + Hogan.js的部分

胥智
2023-03-14
问题内容

我正在使用Node.js + Express开发一个站点,并使用Hogan.js作为视图引擎。

这是我的文件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'));
});

该文件/routes/index.js是:

/*
 * 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'
    }
  );
};

/views文件夹中,有:

|- part.hjs

|- index.hjs

|- cv.hjs

该文件part.hjs是:

<h3>Hello {{ author }}</h3>

该文件index.hjs是:

<h1>Title: {{ title }} </h1>
{{> part }}
Welcome to Gotham City.

文件about.hjs是:

<h1>Title: {{ title }}</h1>
{{> part }}
I'm not Joker.

我有两个问题:

  1. 如何正确使用页面中的部分内容?(此代码无效)
  2. 我可以在两个或多个页面上使用相同的“标题”而不重复文件中的值分配/routes/index.js吗?

最好的问候,六。


问题答案:

我找到了第一个问题的解决方案。

首先,我删除了hjs

npm remove hjs

然后,我安装了软件包hogan-express

npm install hogan-express

此外,我编辑了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'));
});

routes/index.js

exports.index = function(req, res) {
  res.locals = {
    title: 'Title',
  };
  return res.render(
    'index',
    {
      partials:
      {
        part: 'part',
      }
    }
  );
};

现在,/viewsindex.htmlpart.html。该文件part.html包含:

<h1>{{ title }}</h1>

该文件index.html包含:

{{> part}}
Hello world!

因此,它工作正常。



 类似资料:
  • 来自 Twitter 的 JavaScript 模板引擎。 示例代码: var data = {  screenName: "dhg",};var template = Hogan.compile("Follow @{{screenName}}.");var output = template.render(data);// prints "Follow @dhg."console.log(output);

  • 问题内容: 我正在尝试使用Handlebars.js作为服务器模板引擎,使用Node.js | Express创建一个简单的HelloWorld项目。 问题是我找不到使用此类链的任何示例,尤其是在使用多视图时。 例如,我想定义标题视图: 并将其与其他视图一起用于每个页面。 也许我在以错误的方式考虑这些视图,我认为该视图是一种控件,可以在任何其他视图内的任何页面上重用。 我感谢我可以从中获得的指向教

  • 本文向大家介绍angular2+node.js express打包部署的实战,包括了angular2+node.js express打包部署的实战的使用技巧和注意事项,需要的朋友参考一下 Angular2我自己还在摸索学习中,本文介绍了angular2+node.js express打包部署的实战,分享给大家,也给自己留个笔记 angular是客户端js,Node.js 是服务端JS,建立SPA

  • Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。 使用 Express 可以快速地搭建一个完整功能的网站。 Express 框架核心特性: 可以设置中间件来响应 HTTP 请求。 定义了路由表用于执行不同的 HTTP 请求动作。 可以通过向模

  • Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。 使用 Express 可以快速地搭建一个完整功能的网站。 Express 框架核心特性: 可以设置中间件来响应 HTTP 请求。 定义了路由表用于执行不同的 HTTP 请求动作。 可以通过向模板传递参数来动态渲染 HTML 页面。

  • 问题内容: 是否可以在 没有 任何模板引擎的 情况下 使用express ? 问题答案: 更新 有些人可能担心sendFile仅提供客户端缓存。有多种方法有服务器端缓存,并与OP的问题,一个保持直列可以发送回只是文字太发送: 以下是3年前的原始答案: 对于正在寻找PavingWays替代答案的任何人,也可以这样做: 无需写: