在“编译时”,coffeescript中有__FILE__之类的东西吗?

时间:2014-12-18 20:45:51

标签: ruby-on-rails node.js coffeescript

问题:

如何在coffeescript中获得类似的东西

modules_list[some_calculation(__FILE__)]=a_local_class.new  

我有一个模块管理器,它在运行时处理我的所有coffeescripts(js) - 即在浏览器中,这意味着:

我有

  • 许多模块,并非所有模块都在所有情况下加载'静态'

  • 只有一些人有依赖

  • 模块管理器解决了init和动态重载(ajax)之类的问题 和动态init

模块在prinzip中如下所示:

class Book
    constructor: ->
        ...

    init: =>
        $$$.get_module('BookReader') #<- ajax loaded if not already

    later_on: => 
        $$$.get_module('LetterCounter').count_letters(@) #<- ajax loaded if not already

    ...


@$$$.modules_list['Book'] = ->
    new Book

这一切都非常令人满意。

但是我的逻辑中有一个重要的东西,因为一个&#39;模块&#39;,有一个模块名称,一个类名和 - 这就是重点 - 一个文件名

班级名称 - 这很清楚 - 不是问题,我可以命名所有&#39; Foo&#39;。它唯一不好做。

但是模块名(modules_list [&#39; Book&#39;])和coffee-(js-)文件名在Rails CoC中是多余的。

任何想法如何获得

@$$$.modules_list[some_calc(__FILE__)] = -> new Book

我是therethere可能是我的解决方案,但如果,我不明白。

提前致谢

ps:对于那些想知道&#34;为什么我这样做&#34;:

我为3个不同的客户提供了3个完全不同的应用程序,我很遥远地说明所有人的基础是什么,2个应用程序真的很大,有大量的js,并不总是需要所以我想要动态重新加载它。我帮助&#34;资产管道有点把所有文件(staticaly)用在一个没有我在最后20分钟(动态)工作的文件以便更好的调试,我摆脱了所有(向下)负载排序问题

1 个答案:

答案 0 :(得分:0)

在这种情况下,不需要__FILE__或类似的东西。我现在看到了。这将是命名的错误方向。

它与你自己的Rails有同样的“问题”。如果你有

module Base
   class Fun

您的文件名应为base/fun.rb,反之亦然!

文件名解析出“其内容”而非另一个方向。