Tag: embedded javascript

embedded式JavaScript(EJS) – dynamic设置路由视图

我现在正在学习nodejs,而我的.ejs模板文件几乎是标准的(header,footer,js-defaults等等) – 唯一改变它在HTML div中的内容。 我以为我可以在我的路线中设置一个variables,并将其传递给视图(就像你将一个标题或另一个variables),然后包括它 – 但它不工作(下面的例子)。 在Ruby中,你可以用“yield”来做到这一点,我正在试图用EJS做同样的事情。 感谢您花时间阅读(请原谅我对此事的无知)。 示例路线 app.get('/fish', function(req, res) { res.render('fish' { title:"Fish", template:"view/partials/content/fish.ejs" }); }); 示例EJS <!DOCTYPE html> <html> <head> <title><%= title %></title> </head> <% include views/partials/template/header.ejs %> <body> <div class="container"> <!– Dynamic content here –> <% include template %> <!– tries to load template.ejs %> </div> </body> <% include […]

sails.js:只有当ejs模板没有testing它们的存在时才可以看到variables

我对整个nodejs生态系统很陌生,所以善言慢语,用小词。 在过去用PHP开发一个网站时,我通常会有header.php和footer.php包含。 头文件通常包含HTML头元素,所以要定义标题和元标签的默认值,在header.php中,我通常使用如下逻辑: if (title is not defined) { use some default title; } 这使我能够了解我没有为某些单独页面设置标题或元描述标记的情况,并使用一些默认的全局值。 我正在尝试在sails.js中做同样的事情,而且我得到了一些奇怪的结果。 在某些看法(例如“test.ejs”)我有: <% var pg_title = 'test'; %> <%- include header.ejs %> 然后在头上我有: <% console.log(pg_title); %> 这工作。 (即它回声“testing”) 但是,如果header.ejs包含了是否已经定义了pg_title的任何一种testing,那么在test.ejs中设置的pg_title的值总是被忽略(它回声“未定义”)。 目前,header.ejs包含下面的代码,但我已经尝试了几个不同的东西。 if (typeof pg_title == 'undefined') { var pg_title = __('pg_title_default'); } 上述条件将始终评估为真。 如果我删除header.ejs中的“var”,如下面的Ravi所示,我得到一个“pg_title is not defined”的错误。 我究竟做错了什么?

有没有办法创build一个由服务器处理产生的dynamic部分?

我已经开始使用NodeJS几个月了,我遇到了部分渲染的一个小问题。 我想在一些模板中包含部分视图,但是我希望这个部分是从服务器dynamic生成的(因为它取决于从数据库和其他东西中获取的数据)。 我试图创build一个模板助手做到这一点,但由于处理需要asynchronous完成,我不能得到一个HTML返回写在我的模板。 基本上最适合我的是类似的东西(这段代码显然不起作用): template_file.js … <div> <%- generatePartial(data) %> </div> … helper_middleware.js module.exports = function registerAppHelpers(request, response, next) { var appHelpers = {}; appHelpers.generatePartial = function generatePartial(data) { if (request.isAuthenticated()) { DB.findOne({ id: request.user.id }, function found(error, obj) { if (error) … if (obj) { return generatePartial1(data); } else { return generatePartial2(data); } }); […]

渲染时发送给EJS的空参数

林相当新Nodejs,我一直在努力解决这个问题,到目前为止,我不能find问题。 在我的应用程序的某个时候,我用一些参数来渲染一个EJS模板,但是看起来即使获得了参数,它们也是空的。 我testing了最基本的情况: console.log(req.user); res.render('menu.ejs', { user: String(req.user.username) }); 控制台输出: { id: 1, username: 'bob', password: 'secret', email: 'bob@example.com' } 所以我没有发送一个空值。 menu.ejs代码如下: <html> <body> <% user %> </body> </html> 真的很简单。 但是,当页面呈现,我所得到的是一个空的网页…即使有一个和更多的HTML,我只是不断获取和空的价值… 在我的应用程序的某个时候,我用护照来validation我的用户,并使用闪光,我设法得到一个消息: res.render('login.ejs', { message: req.flash('message') }); 但是,这仍然留下我的menu.ejs错误。 我重命名文件,重命名parameter passing,添加更多的参数,harcoded通过参数的值…我总是得到相同的结果=( 项目依赖: "dependencies": { "express": "~4.9.x", "express-session": "1.9.3", "mysql ": "2.5.3", "body-parser": "1.10.0", "passport": "0.2.1", "passport-local": […]

ejs中的多个variables声明

我正在尝试声明并将一个默认值分配给多个variables。 但是,价值只是分配给最后一个variables <% var scale_text,scale_image = 'free_transform'; %> 此打印空白: <%- scale_text %> 这将打印free_transform <%- scale_image %> 我错过了什么?