在Jade中,如何在外部Javascript中调用函数

在Jade中,如何在外部Javascript中调用函数,javascript,node.js,pug,Javascript,Node.js,Pug,在/javascripts/showlist.js中我有(还有一些没有显示的) 我的showlist.jade文件如下所示:(大大简化了,它在变量“shows”的dogshows数组中传递) 将getInterest代码内联,两者都没有成功 请注意,此扩展的基本布局的第一行是doctype 5 如何从Jade调用外部(或者,我甚至满足于内部)javascript函数。还是我错过了一些简单而愚蠢的事情?我也尝试了“./javascripts/showlist.js”。您正在尝试调用服务器端的客户端

在/javascripts/showlist.js中我有(还有一些没有显示的)

我的showlist.jade文件如下所示:(大大简化了,它在变量“shows”的dogshows数组中传递)

将getInterest代码内联,两者都没有成功

请注意,此扩展的基本布局的第一行是
doctype 5


如何从Jade调用外部(或者,我甚至满足于内部)javascript函数。还是我错过了一些简单而愚蠢的事情?我也尝试了“./javascripts/showlist.js”。

您正在尝试调用服务器端的客户端函数。这就是为什么它会以未定义的形式出现。这里没有

您的jade
script()
标记只是将
标记输出到页面-它没有在服务器端运行。为此,您将使用
require()

因为您指的是localStorage,所以不能简单地复制服务器端的函数并在那里执行

但是,您可以更新您的
showlist.js
,以便在dom就绪时使用它们的兴趣值更新
td
s。使用show id向td添加html5数据属性

td(data-show-id=show._id)
然后找到需要更新的
td
s并调用getInterest():


假定您正在运行jQuery。

是否可以从此文件访问您的公共目录?我们讨论的是客户端函数
getInterest()
,对吗?不是服务器端功能?是的,是客户端功能。(因为它读取的是本地存储,所以必须是客户端)。信息技术它只是在我正在开发的家用计算机上运行,所以应该没有可访问性问题,对吗?您是否将http服务器设置为可以访问相对于应用程序的静态目录,甚至可以访问应用程序文件夹中的静态目录??你在用express.js吗?我在用express。不确定第一个问题是什么意思,或者为什么它与客户端相关。但是,对于404这样的静态文件,它是带有公用文件夹的标准Express设置。缺少静态公用配置是一个常见的问题。这里不是你的情况,只是问一些初步的问题。看看我的答案。谢谢!我会尝试一下@Seth的答案,但是,唉,这感觉是正确的。我现在以2比0的成绩认识到我在翡翠世界的位置(服务器或客户端)。我能得到一个铜版的自由女神像和齐柏林飞艇来帮助他们区分吗?在内容块中点击<代码>脚本<代码>标签可能会在页面的中间,在你的<代码>正文> /COD>标签中输出,这取决于你的布局是如何被配置的。您应该添加一个
块js
,并将其添加到
标题或布局末尾,以便在结束
/body
标记之前输出它。我没有使用这个确切的代码,但这个概念是有效的。谢谢
extends layout

script(src='/javascripts/showlist.js')

block content

  table#showtable.sortable
    thead
      tr
         td... (column headers such as date and location, many are sortable)
    tbody
      each show in shows
         - var interest = getInterest(show._id);  <<< JADE problem here
         tr
           td... (various values, including)
           td =interest   // maybe this should be #{interest}
var getInterest = function(id) { ... }
td(data-show-id=show._id)
$('td[data-show-id]').each(function(index){
    var $el = $(this);
    $el.val(getInterest($el.data('show-id')));
});