我们想开发一个浏览器(仅限客户端)使用的CoffeeScript库,特别是,我们倾向于使用“类”的能力CoffeeScript中的相当多,除了纯粹的功能。 图书馆将是比较大的,所以我们要开始了用一个定义良好的模块模式,而不是我们希望每一个CoffeeScript的“类”单咖啡的文件点。 我们不希望编译在飞行咖啡文件,而是作为一个具体的构建步骤,宁可不用所有的输出JS Concat的到一个文件中。 作为最后一个要求,我们将使用类似茉莉花进行测试。
有谁知道这种方式开发的一个很好的例子库,使用CoffeeScript的与作为RequireJS,CurlJS,Browserify等这样的东西? 我已经看过在Github上,也有一些例子,但我看不出具体到我需要什么。
我试过咖啡烤面包机 ,因为它似乎持有一些承诺,在作出简单定义依赖关系等,但它未能及时处理的Windows路径(老\ VS /),所以放弃了那个,主要是因为它似乎是对“光”的一面位 - 像RequireJS似乎有它背后的一个更好的社会的支持。
感谢您的任何帮助,您可以提供。 我真的在寻找可能的话工作的源代码示例。
首先,如果你使用RequireJS你将有一个不容易的时间从定义函数返回多个“东西”。 RequireJS采用了AMD(!不!CommonJS的)格式“标准”,其中不包含module.exports对象导出“东西”,而是依赖于一些回报。
随着中说,我不完全相信你正在寻找在这里,但有一类工作,RequireJS是很容易的。 事情是这样的:
define ['my/required/module'], (myModule) ->
class MyOtherModule
privateField = 0
constructor: ->
publicMethod: ->
return MyOtherModule
这可以就像任何其他脚本需要/定义函数中使用。 就拿这个例子:
require ['my/other/module'], (MyOtherModule) ->
instance = new MyOtherModule()
与“扩展”我们甚至可以用它
define ['my/other/module'], (MyOtherModule) ->
class MyThirdModule extends MyOtherModule
...
希望这有助于!
我使用的咖啡烤面包机过了,我发现几个帖子最近。
我认为这是值得阅读,也许我们可以工作了:
http://blog.toastymofo.net/2012/04/coffeescript-requirejs-and-you-part-one.html
http://24ways.org/2012/think-first-code-later/
和http://jamjs.org看起来很酷!
我还没有实际使用这种技术还没有,但是:
要记住这里的唯一的事情就是CoffeeScript的语句也返回值时,它们会在最后一个函数。 所以,基本上,下面的代码:
define [], () ->
class Main
翻译为:
define([], function() {
var Main;
return Main = (function() {
function Main() {}
return Main;
})();
});
和预期(我不明白为什么它会不是基于JavaScript的编译)应该工作。
对于管理的代码库,我相信CS插件应该派上用场。 它是由詹姆斯·伯克自己维护,并支持CoffeeScript中的建设项目,以同样的方式的JavaScript项目的构建。
文章来源: Example of using Coffeescript classes and RequireJS (or Curljs or similar) for client side browser library