Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将两个或多个coffeescript文件与重复的函数名合并在一起?_Ruby On Rails_File_Merge_Coffeescript - Fatal编程技术网

Ruby on rails 如何将两个或多个coffeescript文件与重复的函数名合并在一起?

Ruby on rails 如何将两个或多个coffeescript文件与重复的函数名合并在一起?,ruby-on-rails,file,merge,coffeescript,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 =

我正在尝试将我所有的coffeescript文件合并到我的rails 3.1资产管道网站上,这样开发页面可以更快地加载。我从28秒降到了6秒。但是以前唯一的本地函数名现在都在同一个文件中,并且会遇到重复。我希望保持相同的函数名,但在某种名称空间中

这里有几个示例文件

文件a.js.coffee

root = exports ? this

$(document).ready -> 
  sayHi()

root.sayHi = ->
  greeting()

greeting = ->
  alert("Howdy")
root = exports ? this

$(document).ready -> 
  sayHello()

root.sayHello = ->
  greeting()

greeting = ->
  alert("Hi there")
#------------------
# 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")
文件b.js.coffee

root = exports ? this

$(document).ready -> 
  sayHi()

root.sayHi = ->
  greeting()

greeting = ->
  alert("Howdy")
root = exports ? this

$(document).ready -> 
  sayHello()

root.sayHello = ->
  greeting()

greeting = ->
  alert("Hi there")
#------------------
# 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")
如何将这两个文件的内容连接在一起,同时保持两个独立的
问候语
功能

新文件ab.js.coffee

root = exports ? this

$(document).ready -> 
  sayHi()

root.sayHi = ->
  greeting()

greeting = ->
  alert("Howdy")
root = exports ? this

$(document).ready -> 
  sayHello()

root.sayHello = ->
  greeting()

greeting = ->
  alert("Hi there")
#------------------
# 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")

命名函数名称空间的一种方法是只使用对象

#------------------
# 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

你用什么加入文件?默认情况下,coffee将每个文件包装在一个IIFE中(
(function(){…)()
)为了避免这些冲突。我正在物理上将每个单独的coffeescript文件的内容复制到一个大文件中。我的开发机器上的Rails服务器使用每个文件单独呈现一个页面的时间太长了。合并前完成一个页面需要28秒,合并后只需要4秒。我要尝试一下s、 “问候”是什么?我以前从未见过。啊,我知道“@”是“this”的别名。