从html文件中的coffeescript文件调用函数[重复]

Posted

技术标签:

【中文标题】从html文件中的coffeescript文件调用函数[重复]【英文标题】:Call function from coffeescript file in html file [duplicate] 【发布时间】:2015-08-24 05:12:10 【问题描述】:

我是 coffeescript 的新手。在包含我的咖啡脚本文件functions.coffee 后,会生成以下文件main.js:

(function e(t,n,r)function s(o,u)if(!n[o])if(!t[o])var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",fvar l=n[o]=exports:;t[o][0].call(l.exports,function(e)var n=t[o][1][e];return s(n?n:e),l,l.exports,e,t,n,r)return n[o].exportsvar i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s)(1:[function(require,module,exports)
'use strict';
require('../../modules/common/frontend/functions');



,"../../modules/common/frontend/functions":2],2:[function(require,module,exports)
//Link selection in menu
function setCurrentlink()
    var currenturl=window.location.href;
    var part=currenturl.match(/\n\/displaywizard\/(.*)$/g);
    alert(part);


...

,],,[1])
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2sv...

我一直试图从 html 文件中调用函数 setCurrentlink 为:

<script type="text/javascript">setCurrentlink();</script>

我尝试将指向 js 文件的链接放在页面底部的 head 部分,但我收到一条错误消息,提示“找不到变量 setCurrentlink”。请帮我找出我的错误或我遗漏的任何东西。

functions.coffee

#@export functions

#Link selection in menu

setCurrentlink = ->
  currenturl = window.location.href
  part = currenturl.match(/\n\/displaywizard\/(.*)$/g)
  alert currenturl
  return
...

【问题讨论】:

【参考方案1】:

您的函数是在函数中定义的,因此它的范围仅限于该函数。您需要全局定义函数才能使其正常工作。也就是说,您可能会以错误的方式处理此问题。如果我有更多关于您要完成的工作的信息,我可以提供进一步的建议。

【讨论】:

另外,看起来您正在使用一个打包实用程序来保护您免于发布到全局范围,正如我所提到的,这通常是一件好事。 谢谢@Shawn。我正在使用一个名为 I-tier 的框架,它由 node.js 和 coffeescript 支持。需要的 JS/coffee 文件的路径在 core/frontend/main.coffee 中提到 require /path/to/file ,然后使用 gulp watch 后,在 assets 中生成文件 main.js。我要做的就是调用在指定的咖啡或 js 文件之一中定义的函数。我该怎么做? 它需要您的脚本并将它们放在一个立即调用的函数表达式 (iife) 中,用于限制变量范围。如果您确定希望此函数全局可用,则可以将其添加到 Window 对象。但同样,请不要,你的方法是错误的。我对 I-Tier 一无所知,但您可能正在使用该框架。看来您指的是 Groupon 的交互层框架。如果您有指向框架主页的链接会有所帮助。 是的,你是对的。我正在使用 Groupon 的 I-Tier 框架。不幸的是,框架文档需要我无法提供的登录凭据。 明白了。我会查看这些文档并找出你应该如何做任何你想做的事情 - 很确定他们不希望你像这样在全局范围内操作。

以上是关于从html文件中的coffeescript文件调用函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

ERB模板内的另一个文件形式定义调用CoffeeScript的方法

无法访问另一个CoffeeScript文件中的函数?

如何从 Coffeescript 中的 Template.<template>.events api 调用 .hover

如何不封装 Coffeescript

从 JavaScript 文件或 REPL 中 require()'ing CoffeeScript 文件

是否可以在 html 文件的脚本标签中编译 Coffeescript 代码? [复制]