- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 expressjs
和 hoganjs
下面是我的 package.json
和 setup 。我有疑问是否必须检测 session 并仅在 Index.hjs
中的一部分提供不同的布局。
我应该怎么办?
我在hoganjs
中找不到任何关于session的文档,它似乎只处理无逻辑的模板?
那么这是否意味着我必须在 routes/Index.js
中检测并渲染不同的文件?如何做到这一点任何例子?
如果我必须使两个文件具有重复的部分,那么我尝试找到一种类似扩展、包含方法的方法,所以我发现 load other template file inside template但这似乎不太方便,所以我想知道通常人们如何做到这一点?
package.json
{
"name": "app",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.13.2",
"cookie-parser": "~1.3.5",
"debug": "~2.2.0",
"express": "~4.13.1",
"hjs": "~0.0.6",
"less-middleware": "1.0.x",
"morgan": "~1.6.1",
"pg": "^4.4.0",
"serve-favicon": "~2.3.0"
}
}
app.js
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hjs');
// end: view engine setup
...
// route handler to each routes
require('./RouteHandler.js')(app, express);
// end: route handler to each routes
...
RouteHandler.js
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var setupRoutes = function(app, express) {
// uncomment after placing your favicon in /assets
//app.use(favicon(path.join(__dirname, 'assets', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(require('less-middleware')(path.join(__dirname, 'assets')));
app.use(express.static(path.join(__dirname, 'assets')));
var routesIndex = require('./routes/Index');
var routesAccount = require('./routes/Account');
app.use('/', routesIndex);
app.use('/account', routesAccount);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
}
module.exports = setupRoutes;
路线/Index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
...
res.render('Index/Index', { title: 'Express' });
});
module.exports = router;
索引.hjs
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<!-- session exist -->
<!-- logged in layout -->
<!-- end: session exist -->
<!-- session exist -->
<!-- logged out layout -->
<!-- end: session exist -->
... both
</body>
</html>
最佳答案
I can't find any document about session in hoganjs, it seems only handle template?
Hogan是模板引擎。 它所做的只是处理模板。你是对的。 (参见:what is a template engine?)
So does that mean I have to detect in routes/Index.js and render different file?
不。
您应该做的是,渲染一个模板,但在该模板中,有条件地显示菜单项:
{{#user}}
<li><a href="/dashboard">Dashboard</a></li>
<li><a href="/logout">Logout</a></li>
{{/user}}
{{^user}}
<li><a href="/login">Login</a></li>
{{/user}}
在 Hogan 中,您可以使用上述语法来表达与 if
语句等效的内容。 (参见:Hogan If Statements。)
您需要某种方法将 user
实例传递给模板(如果有的话)。您可以在路由处理程序中执行此操作:
app.get('/', function(req, res) {
if (req.isAuthenticated()) {
res.render('home', { user: req.user });
} else {
res.render('home');
}
});
或者在可能的情况下,您希望在每个页面上显示菜单 - 可能在布局中 - 您可以创建 middleware :
app.use(function(req, res, next) {
if (req.isAuthenticated()) {
res.locals.user = req.user;
}
next();
});
在上面的示例中,我使用 Passport中间件。您将需要实现自己的身份和身份验证系统,但这超出了本问题的范围。
关于javascript - express + hogan 如何处理session?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31585177/
我使用 expressjs 和 hoganjs 下面是我的 package.json 和 setup 。我有疑问是否必须检测 session 并仅在 Index.hjs 中的一部分提供不同的布局。 我
我想使用 hogan.js,但我目前用 jade 编写所有 html。我如何设置一个工作流程,让我可以在 jade 中编写模板,但仍然可以使用 hogan 进行编译? 感谢您的帮助! 最佳答案 我想你
我有一个带有 lambda 的 mustache 模板,如下所示: {{#myfunc}}myvalue{{/myfunc}} 它由 hogan.js 预编译如下: define(['hogan'],
我从文档中了解到 Hogan 不支持很多逻辑 - 但是您可以通过一些方法来操纵此模板系统来执行您需要的操作。 基本上,这就是我需要的(在伪代码中——假设 people.length >= 1): {{
我正在尝试学习expressjs,我有一个查询数据库的 Controller ,并返回一个 JSON 对象,如下所示: [ { _id: 58cb851721c1c107ab436686,
我使用的是 Hogan.js,它与 Mustache 规范兼容。而且我在实现多元化的可靠方法时遇到了麻烦。我想继续使用 Hogan 并使用 http://i18next.com/用于国际化处理 做这样
不完全确定“持久模板”是否是我所追求的,这是我第一次使用 Javascript 模板引擎。我很好奇是否有一种方法可以保持模板数据完整,以便在渲染文档后重新渲染文档...... 一个例子——我定义了一个
我正在寻找使用 hogan.js在浏览器中创建 html 表单模板。我读过 hogan 支持 i18n,但我找不到它如何工作的示例。你如何将翻译后的文本传递给 hogan,你在模板中放置了什么标签,我
我正在使用 Express JS 和 Hogan JS 模板引擎。我知道 hogan 是无逻辑模板,但我需要在 View 代码中执行 for 循环 以生成表字段。 我已经做了很多谷歌搜索,但没有找到任
你们中有人有使用 gulp + browserify + browserify-hogan 的经验吗? 我正在尝试将 Mustache 模板包含到我的浏览器化 JS Controller 中,显然它工
有人知道如何获取 hogan.js 3.0.0 dist 文件吗? 文件位于https://github.com/twitter/hogan.js是应使用 Node.js 编译以创建可分发文件的源文件
首先我想说我是 Node.js 新手。 我的问题是这样的。有没有一种方法可以将单一布局用于 HTML?分别类似于 MCV 和 ASP 中的共享 View 和主布局。 例如: //。 hello_wor
编译模板中是否可以有部分内容?看起来这是可能的,因为编译对象中引用了部分名称,但我不知道如何让它工作。 我正在服务器端 (node.js) 预编译 Hogan.js 模板,并使它们在客户端可用。这是模
我非常熟悉 javascript console.log() 和 php_dump() 函数,它们允许我们查看变量中的内容,我想知道 hogan.js 中是否有类似的函数可以让我们检查变量的内容。 最
是否可以在我的 django html 文件中包含以下内容? ${{ salePrice }}
是否有可能以任何方式使用 hogan.js 作为模板引擎,布局类似于“.NET 中的 Razor 或母版页”?我会得到这样的结果: 布局.hjs:包含“页眉”和“页脚” 和 索引.hjs:将包含 la
我计划在我的下一个项目中使用 Hogan.js。我想尝试一下。我只是被困住了,无法找到如何使用 Hogan.js 的助手。我之前用过 Handlebars。有没有办法在 Hogan 上做类似的事情?
我使用 Hogan.JS作为 JavaScript 模板库。它应该从外部文件加载 JavaScript 模板。人们可能可以在一个外部 JavaScript 文件中外包多个模板。 有人知道怎么做吗? 我
我目前正在使用 Algolia + Hogan 进行模板化。但我经常遇到以下错误,我在 CraftCMS 上运行 Algolia。 var hitTemplate = Hogan.compi
我在解决这个问题时遇到了问题。我正在尝试在新的 expressjs 应用程序中使用 hogan.js(通过 hogan-express),但我也想在前端使用 hogan.js(我将在其中使用 Back
我是一名优秀的程序员,十分优秀!