Mis*_*rev 3 javascript ruby-on-rails coffeescript ruby-on-rails-4
如果我想在app/assets/javascript下的不同文件之间共享一些JavaScript函数,那么组织目录结构的最佳方法是什么?
假设我有shared.js.coffee
sharedFunction = ->
'Hello '
Run Code Online (Sandbox Code Playgroud)
现在,我如何在其他地方使用它?就像这里一样,在welcome.js.coffee中
welcome = (name) ->
sharedFunction() + name
Run Code Online (Sandbox Code Playgroud)
如何使shared.js.cofee 始终首先加载?
我试着把它放在application.js的最开头,但它没有改变任何东西.似乎共享文件加载时间太长,欢迎管理开始执行并注意到未定义sharedFunction.
在application.js,首先负载共享:
//= require shared
//rest of code
Run Code Online (Sandbox Code Playgroud)
并在共享中,如果有必要,使您的变量可全局访问:
@sharedFunction = ->
'Hello '
Run Code Online (Sandbox Code Playgroud)
请注意,拥有这样的全局变量是一种不好的做法,至少尝试将它们保留在名称空间中。
我是这样做的:
require_tree示例:(假设我们在同一级别有application.js和shared.js.coffee)
的application.js
//= require ./shared
//= require_tree .
Run Code Online (Sandbox Code Playgroud)
shared.js.coffee
class MyNamespace
@mySharedFunc: () ->
doSomething()
root = exports ? this
root.MyNamespace = MyNamespace
Run Code Online (Sandbox Code Playgroud)
您现在可以通过以这种方式引用它来轻松访问其他coffeescript文件中的函数 MyNamespace.mySharedFunc()
PS
关于导出的神秘之处在这个stackoverflow问题中得到了很好的解释:如何在CoffeeScript中定义全局变量?
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |