在我们的应用程序中,我们使用jquery进行所有客户端脚本编写。这些脚本最初是以简单的dom操作开始的,但随着时间的推移,它的数量已经增长,并且我们认为它可能更难以维护。感觉非常混乱,以至于脚本中的任何变化都会破坏某些功能。因此我们计划使用knockout.js清理我们构建的混乱。我的问题是为了适应需要进行多少结构更改knockout.js?我们是否必须重写所有内容?我知道在不查看代码的情况下回答这个问题很难,但我要求提出一般意见。如果你在这种情况下找到自己,你会怎么做?
编辑:
有关代码结构的一些细节:
我们正在使用Asp.net MVC框架
大约30%的客户端代码处理向服务器发出ajax请求,并根据它对Ui进行更改的响应
我们有很多代码根据用户操作显示和隐藏Ui元素。大部分内容都是重复的,我们应该为此自责。
这是关于它我们没有做任何计算或需要很多逻辑只是通过服务器响应或用户操作来操纵ui的东西。
答案 0 :(得分:4)
我曾经和ASP.NET MVC3项目一样,我开始使用jQuery进行一些简单的DOM操作,但随着时间的推移,我最终得到了很多客户端逻辑来管理使用jQuery - 所以我开始切换到淘汰赛。
在我开始迁移之前,我浏览了http://learn.knockoutjs.com/处的所有优秀语言 - 只是为了熟悉术语(视图模型,绑定,自定义绑定,可观察性,实用函数等)以及一些不同的术语。你可以做的绑定。
然后我开始以最适合我的应用程序的方式创建我的viewmodel - 该部分特别取决于您正在制作的应用程序类型。就我而言,我使用了很多ko.observable()
和ko.observableArray()
,以便在满足不同条件时轻松更新客户端。随着viewmodel的出现,我开始使用适当的绑定更新我的视图(foreach
,with
,text
,css
,attr
,{{1}等等) - 这样我就能一直看到一些进展。
总而言之 - 开始学习如何使用它 - 然后开始定义你的viewmodel并找出你需要代表客户端的状态。然后开始(重新) - 实现你的视图 - “逐个”替换你的一些“旧的”jQuery代码并开始保存一些行并获得更干的视图实现;)
顺便说一下 - StackOverflow和http://knockoutjs.com/documentation/introduction.html将成为你的朋友 - 如果你对文档中几乎总是存在任何疑问 - 如果它非常具体(或很难找到),我发现在StackOverflow上找到相关问题非常简单。
- 更新:
和我一样,我也有一系列的AJAX请求 - 机器人我也使用SignalR来向客户端发送一些异步实时消息 - 我肯定发现这些observable对于这个目的非常有用 - 所以如果我应该推荐特定的部分你应该非常注意并开始熟悉的淘汰赛,这将是observables,observable arrays和computed observables。