0

我正在尝试将我的所有咖啡脚本文件合并到我的 rails 3.1 资产管道网站上,以便开发页面可以更快地加载。我从 28 秒缩短到 6 秒。但是以前唯一的本地函数名称现在都在同一个文件中,并且会出现重复。我想保持相同的函数名称,但在某种命名空间内。

这是几个示例文件。

文件 a.js.coffee

root = exports ? this

$(document).ready -> 
  sayHi()

root.sayHi = ->
  greeting()

greeting = ->
  alert("Howdy")

文件 b.js.coffee

root = exports ? this

$(document).ready -> 
  sayHello()

root.sayHello = ->
  greeting()

greeting = ->
  alert("Hi there")

我怎样才能将这两个文件的内容连接在一起,并且仍然保留这两个独立的greeting功能?

新文件 ab.js.coffee

#------------------
# from a.js.coffee
#------------------

root = exports ? this

$(document).ready -> 
  sayHi()

root.sayHi = ->
  greeting()

greeting = ->
  alert("Howdy")

#------------------
# from b.js.coffee
#------------------

root = exports ? this

$(document).ready -> 
  sayHello()

root.sayHello = ->
  greeting()

greeting = ->
  alert("Hi there")
4

1 回答 1

2

命名函数的一种方法是仅使用对象。

#------------------
# from a.js.coffee
#------------------

a = 
  sayHi: ->
    @greeting

  greeting: ->
    console.log('a')
    alert("Howdy")

#------------------
# from b.js.coffee
#------------------

b = 
  sayHello: ->
    @greeting

  greeting: ->
    console.log('b')
    alert("Hi there")


#------------------
# initializer
#------------------

$(document).ready -> 
  a.sayHi()
  b.sayHello()
  return
于 2012-05-01T18:59:31.043 回答