如何将两个或多个coffeescript文件与重复的函数名称合并?

时间:2012-05-01 18:10:57

标签: ruby-on-rails file merge coffeescript

我正在尝试将我的所有coffeescript文件合并到我的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")

1 个答案:

答案 0 :(得分: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