我正在使用coffeescript处理Web应用程序。
我想从另一个文件main.coffee中创建这些对象的实例。
如何在应用程序范围内拥有类和常量?
答案 0 :(得分:0)
您需要使用--bare
选项编译所有文件,这样可以通过“全局”范围(浏览器环境中的window
变量)使所有类可用,或者您可以定义你自己的window.MyNamespace = {}
并明确地让你的课程可用:
class MyClass
...
window.MyNamespace.MyClass = MyClass
你已经标记了你的帖子requirejs
,我相信它有更好的解决方案来构建模块,而不是我给你的问题提出的任何建议,其中每个模块实例都被明确传递,但requirejs是它本身就是一个完整的主题。
答案 1 :(得分:0)
我注意到100%知道amd是如何工作的,但是尽管MyNamespace
和编译器选项--bare
,您可以在使用coffeescript编译器编译之前将文件连接成一个“大”文件。
答案 2 :(得分:0)
其他答案提示它,但您可能不希望使用--bare
进行编译,因为它会使所有文件中的顶级声明成为全局:不仅类,但也包括仅在该文件中使用的辅助函数,常量和事物,您可能不希望放入全局命名空间。
最好明确并使用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()