0

開発ページの読み込みを高速化できるように、すべての coffeescript ファイルを Rails 3.1 アセット パイプライン Web サイトにマージしようとしています。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")

これら 2 つのファイルの内容を結合し、2 つの別個の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

関数の名前空間を作成する 1 つの方法は、オブジェクトを使用することです。

#------------------
# 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 に答える