当web应用程序通过javascript生成大多数标记时。。。

当web应用程序通过javascript生成大多数标记时。。。,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我见过一个web应用程序,它通过javascript+jquery生成页面的大部分标记。服务器只生成一个只有1个DIV的网页。其余的都是通过javascript+jquery+AJAX在客户端创建的 这种以javascript为中心的方法的优缺点是什么? 缺点:非常大的javascript文件 缺点:如果javascript关闭,你的网站就不能工作 缺点:很难形成风格 缺点:返回给客户端的大型javascript文件可能包含更多 代码超出了需要 缺点:可能很难调试 如果您的界面返回大列表,您是

我见过一个web应用程序,它通过javascript+jquery生成页面的大部分标记。服务器只生成一个只有1个DIV的网页。其余的都是通过javascript+jquery+AJAX在客户端创建的

这种以javascript为中心的方法的优缺点是什么?

  • 缺点:非常大的javascript文件
  • 缺点:如果javascript关闭,你的网站就不能工作
  • 缺点:很难形成风格
  • 缺点:返回给客户端的大型javascript文件可能包含更多 代码超出了需要
  • 缺点:可能很难调试

如果您的界面返回大列表,您是否也需要返回该列表并在JS中循环该列表,然后构建控件并添加它们?

当您说“使用jquery+ajax从javascript生成”时,您并不是很清楚。这可能意味着只需加载平面HTML页面,而不需要刷新浏览器。构造动态HTML和静态HTML没有对错之分;每件事都必须结合实际情况来考虑


广泛使用这种技术。

服务器应该承担繁重的工作,因为这就是它的作用所在。客户的参与应该是最小的。客户端开发应该专注于增强用户体验,并确保在许多浏览器上都能很好地工作。除非有令人信服的理由,否则它不应该涉及像以某种方式重新构造DOM、对数据进行排序和过滤等任务

因此,在我看来,将太多的演示逻辑转移到客户端可能是个坏主意。

优点:

当整个前端都使用javascript时,您可以获得很大的灵活性。所有内容都是动态生成的,更容易按需加载数据。它还可以更容易地将元素绑定到数据,从而允许元素在服务器上发生变化时自动更新(无需用户重新加载浏览器!)。查看Backbone.js或Knockout.js,了解构建大量javascript应用程序的有趣方法

走这条路线还可以使服务器保持非常轻的重量。通常,服务器只需实现一个简单的RESTful/JSON接口。实际上,前端是一个静态文件,它调用您的接口。由于用户在站点上时,您以异步方式进行这些调用,因此它会感觉更快,更像一个本地应用程序(如GMail)

另一个好处是,让客户端做更多的工作通常可以减少服务器上的负载。客户机甚至不会注意到额外的工作,因为它发生得太快了,但是您的服务器可能会感激节省下来的费用。如果你对服务器呼叫很精明,你也可能会使用更少的带宽

缺点:

有些人禁用了javascript(尽管实际上它只占用户的一小部分)。此外,在某些边缘情况下,浏览器的交叉兼容性可能会更加困难(但jQuery让这变得更容易接受)。最大的缺点是很多网络爬虫不会在你的网站上抓取任何东西,因为爬虫通常不执行javascript。他们只是解析html(谷歌可能是个例外?)

根据我构建web应用程序的经验,任何面向公众的内容(即营销材料)都应该是静态内容,以便网络爬虫能够看到。一旦用户登录到应用程序中,我希望一切都是100%客户端的,可以通过RESTful调用我的服务器。

你是在对比

 Server produces data (usually JSON) -> Client-side Java Script creates HTML
 Server produces data, server formats HTML -> Client renders HTML
应用程序可以使用这些技术的某些组合,前者可以轻松地提供具有丰富用户体验的动态更新页面。您会注意到,前者也会将更多的工作卸载到客户端(我假设JSON比生成的HTML更简洁),因此从长远来看,一旦下载并缓存JavaScript,网络带宽就会减少


以JavaScript为中心的方法更复杂,通常需要更多的努力来编写

始终以分离关注点为目标:

  • 标记中的信息
  • CSS中的样式
  • Javascript中的行为
如果你开始单独用Javascript做所有事情,你就破坏了这个模型。到目前为止,这个模型在网络上运行得非常好

也就是说,一定要使用javascript来逐步增强站点。例如,如果您可以通过ajax显示某些内容,而不是重新加载页面,则可以继续,但正常的页面请求也应该仍然有效


查看github的repository browser,了解渐进增强的一个很好的示例。如果您使用的浏览器支持它,它将通过ajax加载页面,并更改地址栏中的url以匹配。否则,它将执行它一直执行的操作,只需使用普通链接转到页面即可。所以里面有javascript,做了一些很酷的技巧,但是没有它一切都能正常工作。

这是事实,你的源代码是公开的。不是我。我的选票还在那里。我不知道为什么有人会投反对票,因为你几乎涵盖了所有要点。编辑:好吧,我想可能有人投了否决票的原因是你没有按照原始问题中的要求涵盖专业人士。我只是希望ppl能对否决票kwim发表评论。“非常大的javascript”可能不比相应的HTML和压缩缩小的图像大,而且几乎没有没有没有javascript的网站可以工作;这是一个虚幻的要求,因为他们在1995年听到了一些东西,可怜的软件开发人员会把它强加给别人。如果你做得好,即使是现代的屏幕阅读器也可以通过javascript密集型网站。“需要的代码太多”。这到底是什么意思?难以调试?我不确定你是否理解你的意思。我猜@Stefan Downvoted我看到的例子几乎是你提到的前一种/顶级方法的100%。一致性是有价值的。如果您的所有数据都以JSON服务的形式公开,并且您能够流利地使用javaScript并拥有一个易于理解的框架,那么使用JavaScri做任何事情都会带来额外的开销