我可以在脚本中从JS中引用Node JS函数吗?标记在Jade模板中
Can I reference a Node JS function from JS within a <script> tag in a Jade template
我正在用Node.js, Express和MongoDB建立一个博客。在我的"create new post"模板中,我有一个标题字段和一个空格字段。
我正在使用来自NPM的Node.js的Slugs: https://npmjs.org/package/slugs
我想做的是:
- 使用EventListener动态地从标题文本输入中获取值,
- 通过slugs()函数过滤,
- 将其添加到文本输入的value属性中。
那么我将在标题字段中输入"My favorite character is &",别名字段中的值将动态更改为"My -favorite-character-is"。
我相信你必须像这个问题中公认的答案那样做:JADE + EXPRESS:迭代对象在内联JS代码(客户端)?
但是,这更多的是用于引用变量而不是执行函数。这似乎是预处理过的,然后你就不能再访问它了。
我想做的事情可能吗?
或者我应该这样做吗?https://github.com/stipsan/String.Slugify.js这是我想要的结果:
!= "<script>"
!= "var post_title = document.getElementById('title');"
!= "var post_alias = document.getElementById('alias');"
!=
!= "var aliasValidator = function() {"
!= " this.value = " + slug( + "this.value" ) + ";"
!= "};"
!= "var titleValidator = function() {"
!= " post_alias.value = " + slug( + "this.value" ) + ";"
!= "};"
!=
!= "post_title.addEventListener({'keyup': titleValidator, 'keydown': titleValidator, 'change': titleValidator});"
!= "post_alias.addEventListener({'change': aliasValidator});"
!= "</script>"
这里是传递变量的视图:
var slugs = require('slugs');
newPost: function(req, res) {
return res.render('add-post', {
title: "Write new post",
slug: slugs,
dayDateName: tools.dayName
});
}
这应该与一些东西拼凑在一起:
- 给自己找一个可以加载到浏览器和节点中的慢速函数。有一些简单的方法可以做到这一点,比如将代码复制/粘贴到
public/slugs.js
文件中,以及更复杂的方法,比如browserify或RequireJS。从简单开始,但直接回答你的问题,不,你不能直接从浏览器中神奇地调用存在于节点进程中的函数,但你可以使用上述技术之一在节点和浏览器中共享相同的函数。 - 在浏览器中,使用事件在输入标题时获取标题,对其进行转换,并填充填充字段。这都是浏览器端JS,与模板渲染或节点 无关在处理表单提交的节点代码中,你还需要确保通过sluggify函数再次运行slug是有效的(这里你可以使用npm模块)。
对于jade,你不需要所有那些疯狂的!=
前缀,只要这样做(这与你的问题没有直接关系,仅供参考)。
script
var put = "your raw javascript here";
var jade = "knows what to do and you don't need prefixes or escaping";
你写模板的方式,你似乎在暗示这个函数将在客户端执行。
这是不可能的
相反,您应该使用ajax回调到服务器来执行slug函数,或者预先计算所有值并将其发送给客户端。
相关文章:
- Jade-包含来自外部js文件的var
- 从.js文件中读取所有代码并插入到 Jade 模板中
- node.js中Jade模板的全局变量
- JavaScript node.js 中 pug (jade) 模板上的动态对象键
- 如何在Express JS中使用Bliss View Engine而不是Jade
- 在 Node.JS、Jade 模板和 Javascript Options 对象上
- 从 Node.js 访问 Jade 中的 Javascript 对象
- Node.js Jade:在 JavaScript 中使用条件语句
- Meteor JS Jade模板无法按预期工作
- 这是使用node.js和jade打开文件并读取每一行的方法吗
- 如何将变量从Jade传递到Node.js端点函数
- 为什么我的数据绑定到一个计算函数不起作用(使用knockout.js和jade)
- 在node.js中将数组传递到jade模板时出现问题
- 使用 Coffeescript 和 Express .js 将变量传递给 Jade 时遇到麻烦
- 如何使用Jade正确地将Fusioncharts.js包含在Node Express项目中
- 如何使用Jade和Node.js迭代JSON数组
- 节点 js + Express + Jade 迭代数组
- hogan.js + jade?
- Node.js/jade -我如何将mysql数据作为本地变量传递到内联javascript
- Node.js/jade语法错误:unexpected token;