3

在我们的应用程序中,我们使用 jquery 来编写所有客户端脚本。这些脚本一开始只是简单的 dom 操作,但随着时间的推移,它的数量越来越大,而且我们认为它可能更难以维护。感觉很混乱脚本中的任何更改都会破坏某些功能。因此,我们计划使用 knockout.js 来清理我们构建的混乱。我的问题是必须进行多少结构更改才能适应 knockout.js ?我们是否必须重写所有内容?我知道不看代码就很难回答这个问题,但我想征求一般意见。如果你发现自己处于这种情况,你会怎么做?

编辑:

关于代码结构的一些细节:

我们正在使用 Asp.net MVC 框架

大约 30% 的客户端代码处理向服务器发出 ajax 请求并根据响应对 Ui 进行更改

我们有很多代码根据用户操作显示和隐藏 Ui 元素。其中大部分是重复的,我们应该为此责备自己。

这就是我们没有做任何计算或需要大量逻辑的事情,只是通过服务器响应或用户操作来操作 ui。

4

1 回答 1

4

我从事过一个 ASP.NET MVC3 项目,和你一样,我开始使用 jQuery 进行一些简单的 DOM 操作,但随着时间的推移,我最终有了很多客户端逻辑来使用 jQuery 进行管理 - 所以我开始切换到 knockoutJS .

在开始迁移之前,我浏览了http://learn.knockoutjs.com/上的所有优秀教程- 只是为了熟悉术语(视图模型、绑定、自定义绑定、可观察对象、实用程序函数等)和一些您可以制作的不同绑定。

然后我开始以最适合我的应用程序的方式创建我的视图模型——这部分特别取决于你正在制作的应用程序类型。就我而言,我使用了很多ko.observable()' 和ko.observableArray()' 以便在满足不同条件时轻松更新客户端。随着视图模型的出现,我开始使用适当的绑定(foreachwithtextcssattrenable等)更新我的视图——这样我就可以一直看到一些进展。

所以总结一下——开始学习如何使用它——然后开始定义你的视图模型并找出你需要代表客户端的状态。然后开始(重新)实现您的视图 - 一个接一个地替换您的一些“旧”jQuery 代码并开始保存一些行并获得更干的视图实现;)

顺便说一句 - StackOverflow 和http://knockoutjs.com/documentation/introduction.html将成为你的朋友 - 如果你有任何疑问,它几乎总是在文档中 - 如果它非常具体(或很难找到),我发现在 StackOverflow 上找到已经提出的相关问题非常简单。

- 更新:

和你一样,我也有一系列 AJAX 请求——机器人我也使用 SignalR 向客户端发送一些异步实时消息——我确实发现 observables 对此非常有用——所以如果我应该推荐 knoutJS 的特定部分你应该非常注意并开始熟悉,那就是observablesobservable arrayscomputed observables

于 2012-08-28T18:09:15.690 回答