0

我正在使用coffeescript 开发一个Web 应用程序。

  • 我将所有类都放在单独的文件中。
  • 这些类引用了一些全局常量(声明了我的应用程序)。

我想从另一个文件 main.coffee 创建这些对象的实例。

如何在应用程序范围内拥有类和常量?

4

3 回答 3

0

我注意到 100% 知道 amd 是如何工作的,但是尽管有MyNamespace和编译器的选项,--bare你可以在使用 coffeescript 编译器编译之前将文件连接到一个“大”文件中。

于 2013-02-21T19:47:27.487 回答
0

其他答案建议这样做,但您可能不想使用 编译--bare,因为它会使文件中的所有顶级声明都是全局的:不仅是类,还有辅助函数、常量和仅用于该文件,您可能不想放入全局命名空间。

最好是显式的和 use class window.MyClass,这会将那个类放在全局命名空间中。

或者更好的是,如果您的应用程序有一个命名空间,例如,在您声明的文件中:

# Namespace for application stuff.
window.App = {}

然后,您可以通过以下方式将类放入该命名空间:

# In another file; make sure the first file gets executed before so `App` exists.
class App.MyClass

然后,您可以通过引用它(包括其命名空间)从任何地方实例化和使用该类:

c = new App.MyClass
c.someMethod()
于 2013-02-21T23:51:02.760 回答
0

您要么需要使用该--bare选项编译所有文件,这使得您的所有类都可以通过“全局”范围(window浏览器环境中的变量)使用,或者您可以定义自己的window.MyNamespace = {}并明确地使您的类可用,例如:

class MyClass
   ...

window.MyNamespace.MyClass = MyClass

你已经标记了你的帖子requirejs,我相信它比我对你的问题给出的任何建议都有更好的解决方案,其中每个模块实例都被明确传递,但 requirejs 本身就是一个完整的主题。

于 2013-02-21T19:35:02.373 回答