这是一个设计问题。我希望你们能够帮助我解决这个问题。
我正在开发一个自动完成控件。它基本上是一个基于服务的控件,其中服务调用的职责是在用户输入几个单词时获取建议列表(下拉菜单)的 HTML。
服务器端代码在 C# 中,客户端在 JQuery/Javascript 中。
该控件已开发为使用两种模式:
-
一个 ASP.NET 控件(在生成的响应中初始化 jQuery 小部件)。
-
一个独立的jQuery小部件,使用服务器端HTML生成引擎。
我将建议菜单(下拉菜单)的HTML生成引擎保留在服务器上。控件用户可以选择在服务器上缓存其数据源。如果未启用缓存,则在每个服务请求中将数据源发送到服务器以进行 HTML 生成。
我的问题是 - 我也应该在客户端(JQuery/Javascript)编写HTML生成引擎吗?
到目前为止,我发现了"编写单独的客户端HTML引擎"的以下优点和缺点:
优点:
- 避免了对
服务器请求时,为小到平均大小的建议列表生成更快的 HTML 。
没有服务器端依赖,jQuery 小部件模式将是完全独立的,因为不需要服务器端代码。
缺点:
-
代码复制:C#和jQuery/javascript中的同代引擎。
-
增加维护:随着新特性/功能的添加,双方都必须进行更改。
我会在客户端生成所有必需的动态 html。这要快得多。
服务器或 Web 服务可以返回一组结果 (JSON)。我会用它来填充和显示 javascript 中的结果视图。
asp.net 控件也会将数据呈现为 JSON,并在客户端使用 JavaScript 根据需要显示它。
如果在 html 中使用数据,则不会出现您提到的代码重复和增加维护的缺点,无论它是由控件呈现还是从服务获取。