刚开始使用 backbone.js,我注意到的一件事是我的许多模型、集合和 View 共享一些非常相似的方法。我想重构它们并从提取的位置 (/lib?) 调用它们。我去搜索文档和/或示例,但对我发现的内容如此之少(具体来说,没有)感到惊讶。那么,有几个问题:
- 为什么我忽略了为什么很少有主干方法的例子被分解到公共(public)库中?
- Backbone 项目中是否有共享代码的标准/商定位置?
- 是否有主干类和/或通用插件来帮助存储通用方法?
任何想法表示赞赏 - 提前致谢。
(编辑)示例添加:
从 View 中获取此代码。 (不可否认,它太短了,实际上值得重构,但它的简单性使其成为一个简洁的例子)
destroy: () ->
@model.destroy()
@remove()
return false
假设我想将其重构为:
destroy: () ->
restful_destroy_method(this)
然后调用:
restful_destroy_method: (view) ->
view.model.destroy()
view.remove()
return false
来自公共(public)图书馆。似乎没有其他人这样做的原因是什么?
最佳答案
看情况,看你的常用代码是什么。
对于您的示例,我可能会创建一个更具体的 View 以进行扩展。
为直接的 JavaScript 道歉,我对 CoffeeScript 不是很流利,无法在答案中使用它。
DestroyableView = Backbone.View.extend({
destroy: function () {
this.model.destroy();
this.remove();
return false;
}
});
然后,我不会创建 new Backbone.View()
,而是创建 new DestroyableView()
。 DestroyableView
可以有其他常用函数,或者您可以创建多个不同的父定义并使用 _.extend()
将它们全部应用于单个对象。
关于javascript - 如何组织公共(public)代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8681166/