我有一个运行Jade模板引擎的node.js express服务器。
我有一个布局翡翠文件,它导入单个视图的主体,如下所示:
!!!
html
head
title= title || 'Title not set.'
body
#header
h1 Header.
#content!= body //- this renders the body of an individual view
#footer
p Footer.
例如,以下索引页:
p Welcome to the front page.
p This page serves as a now.js test.
这很好。但是,我现在要包括两个专门用于此索引页面的客户端javascript库(因此不是每个页面,因此不能将其放在布局的开头)。
这有效:
//- import jquery
script(type='text/javascript', src='./jquery-1.5.2.min.js');
//- import now.js (hosts itself)
script(type='text/javascript', src='/nowjs/now.js')
//- import the chat client
script(type='text/javascript', src='./indexChatClient.js')
p Welcome to the front page.
p This page serves as a now.js test.
但是,这会将脚本加载到整个页面的正文中,这是无效的HTML,对吗?
据我所知,如果我想正确执行脚本,则应该将其加载到头部,但是头部由布局文件处理。
那么,我如何适当地包含专门用于特定视图/页面的这些客户端javascript库?
使用此线程的解决方案,我已经完成了相同的操作:
http://groups.google.com/group/express-
js/browse_thread/thread/8c2006dc7bab37b1/f9a273c836e0a2ac
您可以在视图选项中声明一个“脚本”变量:
app.js:
app.set('view options', { locals: { scripts: ['jquery.js'] } }); // You can declare the scripts that you will need to render in EVERY page
比起拥有一个可以将脚本标签呈现到版面标题中的助手来说,
renderScriptTags()辅助代码:
app.helpers({ renderScriptTags: function(scripts) {
return scripts.map(function(script) {
return '<script src="scripts/' + script + '"></script>';
}).join('\n ');
在头部分的布局模板中,您将具有:
- renderScriptTags(scripts)
现在,要在head标签上添加脚本,只需要将脚本推入玉内容模板(body模板)上的“ scripts”变量中即可:
- scripts.push('myscript.js');
这样,页面会将jquery.js和myscript.js呈现到页面的顶部
更新
似乎最新的快速版本以不同的方式处理本地人,要使其正常工作,您可以执行此操作(虽然我不确定这是否是最佳解决方案,但我需要对此进行一点研究)
您可以像以前一样在布局模板中使用前一种方法的 renderScriptTags() 帮助器。
但是不要将scripts变量设置为locals,而是创建一个动态帮助程序,该 脚本 将使 scripts 变量在我们的模板中可用:
app.dynamicHelpers({
scripts: function(req, res){
return ['jquery.js']; //this will be available in all views
}
});
然后,从您的正文模板添加一个特定的脚本(与之前完全一样):
- scripts.push('myscript.js');
现在,对于此特定视图,应该正确呈现jquery.js和myscript.js
问题内容: 是否可以在 没有 任何模板引擎的 情况下 使用express ? 问题答案: 更新 有些人可能担心sendFile仅提供客户端缓存。有多种方法有服务器端缓存,并与OP的问题,一个保持直列可以发送回只是文字太发送: 以下是3年前的原始答案: 对于正在寻找PavingWays替代答案的任何人,也可以这样做: 无需写:
问题内容: 我想在客户端使用Jade模板。最好使用Rails 3.1资产管道生成。我真的不知道该怎么做。 有人偶然发现相同的问题并找到了解决方案的人吗?任何想法都非常感谢。 http://jade-lang.com/ http://ryanbigg.com/guides/asset_pipeline.html 问题答案: 浏览器 也许您可以使用https://github.com/substack
现代 Web 应用程序, 除了呈现并发送到浏览器的静态 HTML 页面外, 还包含 JavaScript, 用于通过操纵现有元素或通过 AJAX 加载新内容来修改浏览器中的页面。 本节介绍 Yii 提供的用于向网站添加 JavaScript 和 CSS 以及动态调整它们的方法。 注册脚本 使用 yii\web\View 对象时,可以动态注册前端脚本。 这里有两个专门的方法: registerJs(
问题内容: 我有外部API数据,这是用户生成的内容。客户希望使用此提要动态更新自己的站点,包括使用JavaScript的能力。 将显示任何HTML或CSS但不适用于JavaScript的内容: 我已经尝试过包括以及使用。 没有骰子。 问题答案: 您必须包括jQuery才能正常工作。 plunkr示例:http ://plnkr.co/edit/zEXXCB459Tp25VJiyyZb?p=prev
问题内容: 我正在尝试使用以下软件包使用TLS实现node.js mqtt客户端; https://www.npmjs.com/package/mqtt#client 在不使用TLS的情况下运行mqtt客户端的代码如下; 应该如何修改以上代码以在mqtt客户端上使用TLS? mosca MQTT代理是使用以下命令独立运行的; 问题答案: 应该足以将URL 的一部分更改为 。 自签名证书 使用自签名
mosca MQTT代理作为独立运行,使用下面的命令;