我正在使用coffeescript 开发一个Web 应用程序。
- 我将所有类都放在单独的文件中。
- 这些类引用了一些全局常量(声明了我的应用程序)。
我想从另一个文件 main.coffee 创建这些对象的实例。
如何在应用程序范围内拥有类和常量?
我正在使用coffeescript 开发一个Web 应用程序。
我想从另一个文件 main.coffee 创建这些对象的实例。
如何在应用程序范围内拥有类和常量?
我注意到 100% 知道 amd 是如何工作的,但是尽管有MyNamespace
和编译器的选项,--bare
你可以在使用 coffeescript 编译器编译之前将文件连接到一个“大”文件中。
其他答案建议这样做,但您可能不想使用 编译--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()
您要么需要使用该--bare
选项编译所有文件,这使得您的所有类都可以通过“全局”范围(window
浏览器环境中的变量)使用,或者您可以定义自己的window.MyNamespace = {}
并明确地使您的类可用,例如:
class MyClass
...
window.MyNamespace.MyClass = MyClass
你已经标记了你的帖子requirejs
,我相信它比我对你的问题给出的任何建议都有更好的解决方案,其中每个模块实例都被明确传递,但 requirejs 本身就是一个完整的主题。