2014-12-18 41 views
-1

問題:有沒有像'編譯時'在coffeescript中的__FILE__?

如何獲得財產以後一樣,在CoffeeScript中

modules_list[some_calculation(__FILE__)]=a_local_class.new 

我有一個模塊的經理,負責處理在運行時我都coffeescripts(JS) - 而在IE瀏覽器,這意味着:

  • 很多模塊,不是所有在所有情況下加載 '靜態'

  • 只有一些具有相關

  • 模塊管理解決之類的初始化和動態重裝(阿賈克斯) 和動態初始化

模塊看起來像這樣在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 

這一切工作(非常)令人滿意。

但我有我的邏輯一rendunancy,因爲一個「模塊」,有一個模塊名稱,一個類名和 - 那點 - 一個文件名

類的名字是 - 這就是明確的 - 不是問題,我可以命名所有'Foo'。它唯一不好的做法。

但是,在Rails CoC中,modulename(modules_list ['Book'])和coffee-(js-)文件名是多餘的。

任何想法如何獲得

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

我是there,並且there可能是一個解決方案,我,但如果我不明白它。

在此先感謝

PS:對於那些誰想要知道「爲什麼我這樣做」:

我有3個完全不同的3個不同的客戶應用程序,離我很遠的說是什麼所有的基地,2個應用程序真的很大的js大,這並不總是需要,所以我想要重新加載它動態。我「幫助」了一下資產管道,把所有文件(staticaly)都放在一個文件中,沒有我在最後的20分鐘(dynamicaly)中進行更好的調試,並且我擺脫了所有(down-)加載順序問題

+0

爲什麼它需要在編譯時發生? 'module.filename'工作嗎? –

+0

@AaronDufour:我認爲只有在編譯時才提供這些信息,因爲在那之後,它通常在「md5-somthing.js」中,並且該文件的原始名稱在註釋中是最大的。哎呀,這可能是一個解決方案?或者你想想一個發電機?沒有module.filename – halfbit

+0

我不確定你的意思是「沒有module.filename」。你在運行一些古代版本的節點嗎?甚至是[記錄](http://nodejs.org/api/modules.html#modules_module_filename)。 –

回答

0

在這種情況下,不需要__FILE__或類似的東西。我現在看到了。這將是錯誤的命名方向。

它與Rails自帶的問題一樣。如果你有

module Base 
    class Fun 

你的文件名應該是base/fun.rb反之亦然!

文件名解析出「其內容」而不是其他方向。