将骨干网与require.js模块结合使用,为功能实现提供了很大的自由。骨干网稍微构造了一些数据,但仍然不明白我应该保存什么和保存在哪里。例如,我将model作为一种从内部initialize初始化的方法保持在模型内部,然后通知(通过事件'fetched'或'loaded')专用视图,以便在成功获取之后呈现。此外,我在view之外保留了一些冗长的功能,并添加了模块返回。
在这些问题上是否存在已知的做法/模式?
谢谢!
发布于 2014-06-17 03:07:51
这是个不错的话题。我总是喜欢单独承担责任。当我需要与服务器同步或验证某些属性时,我总是通过模型进行同步,并从视图中的事件进行侦听。
// coffeescript中的示例
//Inside the Backbone Model
saveContent:->
@save({},
success:=>
// Post Data succeeded.
@trigger "Succeeded"
error:=>
// Post Data error
@trigger "Error"
)
//Inside BackboneView
model.on("Succeeded", @renderMsgSucceeded,@)
model.on("Error", @renderMsgError,@)
model.saveContent()我真的相信这是,非常重要的是让数据逻辑保持在视图之外,数据是模型的响应性,他们必须知道这一点。
错误实现的示例
// BackboneView内部
saveContent:->
@model.save({},
success:=>
@renderMsgSucceeded()
error:=>
@renderMsgError()
)很明显,您违反了单一责任原则,因为如果有一天您需要更改模型将数据发布到服务器的方式,则需要更改视图,这是毫无意义的。
我有一个博客(不幸的是用葡萄牙语写的,但我正在写一个英文版本),在那里我有一篇关于使用骨干的技巧的文章。可能是个不错的读物。
www.rcarvalhojs.com
发布于 2014-06-14 02:39:34
通过搜索诸如“主干模式”之类的术语,您可以在web上找到一些资源;例如:
问题是,脊骨根本不是一个框架,它将所有的问题都留给开发人员去解决。不过,你列举的问题很重要。我发现解决这些问题的一个很好的方法是完成项目的一部分,然后看看你会做什么改变来更好地规划项目。没有“正确”的方式来组织你的项目。专注于生产一些东西,然后看看你如何用结构来改进你的产品。
https://stackoverflow.com/questions/24215701
复制相似问题