使用CoffeeScript編寫backbone.js應用程序是否存在任何固有問題?你遇到了一些你無法解決的問題,或者不得不使用一些特別笨重的解決方法?backbone.js如何與CoffeeScript一起使用?
回答
CoffeeScript只是JavaScript上的一個語法層。它本質上是JavaScript。你可以在JavaScript中做任何事情,你可以在CoffeeScript中重現。
CoffeeScript和Backbone.js都是由同一作者(Jeremy Ashkenas)編寫的。 backbone-on-rails gem默認生成CoffeeScript。雖然某些插件(例如您提到的Backbone-relational)可能需要額外的設置,但Backbone本身與CoffeeScript搭配非常好。
沒問題,真的。至少,沒有哪個不容易解決。
使用CS的問題是你可能會在任何地方使用CS相同的問題:
- 調試是在生成的JS
- CS還是做需要一個預處理步驟,可以是有時尷尬
- 你的團隊的其餘部分可能不知道CS
- 大約有CS一些奇怪的事情(他們引入「類」,但他們不是真正的類)
此外,由於具有Coffeescript的Backbone dev是基於「class」的,因此您會發現自己希望將您的課程分爲單獨的文件夾和單獨的文件夾。正因爲如此,你可能會陷入這樣一種情況,那就是這些課程無序定義。例如,你的集合可能在你的模型之前被定義,這是不可能發生的。爲此,我建議使用可以管理依賴關係(導入)的東西。我使用coffee-toaster,但還有其他幾個選項(例如,Rails具有內置到資產管道的依賴管理)
這是我首選編寫Backbone代碼的方式。在我看來,BackScript.js開發在CoffeeScript中比在Javascript中更好。對我而言,他們像巧克力和花生醬一起走到一起。 (不是每個人都喜歡巧克力/花生醬......並不是所有人都喜歡BB/CS)
類語義 骨幹的發展在很大程度上依賴於擴大原型,這是內置有CoffeeScript的東西。所以,在這裏,你會在JS擴展視圖:
App.Models.MyModel = Backbone.View.extend({
render: function() {
...
}
});
的CS替代是土生土長的經驗:
class App.Models.MyModel extends Backbone.Model
render: ->
...
重寫功能 有的東西你在骨幹經常做,像重載函數變爲更簡單。在Javascript:
constructor: function (attributes, options) {
this.constructor.__super__.constructor.apply(this, arguments);
...
}
變爲:
constructor: (attributes, options) ->
super
當你需要聲明「此」語境中的CS綁定 「胖箭頭」是真正有用的一個功能的情況下是「這「
當函數被回調時,Javascript設置'this'的方式不同。有幾種方法來解決這個問題,但開箱即用,它是尷尬:
initialize: function() {
this.model.bind('reset', this.render);
},
render: function() {
this.$el.html("<ul></ul>");
this.model.each(this.renderItem); // <--- Fails on "reset" because 'this' is wrong
return this;
}
的CoffeeScript有=>
令牌時它就會被人稱爲將自動綁定「這個」的功能:
initialize: ->
@model.bind 'reset', @render
render: =>
@$el.html '<ul></ul>'
@model.each @renderItem # The fat arrow fixed it for you
@
當所有事情都說完之後,Backbone.js代碼更容易編寫,並且在使用CS編寫時更容易閱讀。至少,這是我的看法。
祝你好運!
- 1. 如何與Sinatra一起使用coffeescript
- 2. Require.js如何與Backbone.js一起使用
- 3. 與Coffeescript一起使用should.js
- 4. 將Coffeescript Underscore.js和Backbone.js放在一起
- 5. 與Backbone.js的使用CoffeeScript的問題
- 6. 如何使用coffeescript獲取模型值Backbone.js Coffeescript
- 7. 與Jekyll一起使用backbone.js路由
- 8. 如何將Haskell Snap與Backbone.js一起使用
- 9. 如何獲取Twitter Bootstrap Twipsy與Backbone.js一起使用
- 10. Backbone.js - Coffeescript延伸
- 11. 與Backbone.js一起使用鬍子時事件不起作用
- 12. TypeError在CoffeeScript中使用Jasmine測試Backbone.js
- 13. Backbone.js的帶的CoffeeScript
- 14. 的CoffeeScript/Backbone.js的:寫一個字符串
- 15. 如何在Windows中一起使用CoffeeScript和Eclipse?
- 16. Backbone.js比較不排序(Coffeescript)
- 17. CoffeeScript中的Backbone.js setTimeout()循環
- 18. 推薦哪些UI框架與Backbone.js一起使用?
- 19. Datepicker jqueryui不能與require.js和backbone.js一起使用
- 20. 與backbone.js一起使用下劃線模板
- 21. 如何使用SuperScrolloRama與Backbone.js查看
- 22. 如何與CoffeeScript的
- 23. Node.js與CouchDB和Backbone.js一起工作,json如何被服務?
- 24. 使用Backbone.js與_.noConflict()
- 25. 使用mers與backbone.js
- 26. 使用backbone.js與socket.io
- 27. 使用backbone.js與hammer.js
- 28. 如何使REFrostedViewController與UINavigationController一起使用
- 29. 如何使.hover()與.on()一起使用?
- 30. 如何使PdfLayer.SetPrint與PdfStamper一起使用?
參見例如https://github.com/PaulUithol/Backbone-relational/issues/91。我想知道CoffeeScript和主幹集成是否還有其他問題。 – ipavlic 2012-07-31 14:25:48