2010-09-20 58 views
3

我正在考虑尝试一个想法,主要是为了好玩,我的问题是如果这是合理的,如果有任何库或框架可以使这个实验更容易一些。只写一页客户端网页

所以,这个想法:基本上是为我开发的网站编写一个新的用户界面,但只用客户端代码。我可以使用ajax读取/写入数据,因为我现有的网站有一个API,可以执行各种查询。这使我可以在整个过程中使用JavaScript,理论上将所有代码放在一个文件中。

显然有规避的限制;书签,页面刷新,后退按钮等。但是这些限制让它变得有趣,对吗? :)我并不担心搜索引擎索引,因为无论如何都必须登录才能使用该网站。

该网站本身不是太复杂,但也不是很简单。有四种不同级别的用户,多种语言和相当多的数据要呈现。

这是一个坏主意吗?如果是这样,你为什么会反对呢?你知道任何JavaScript框架或库可以使这更容易吗? (不,我不是在寻找像谷歌Web工具包抽象;我想的东西纯粹的JavaScript)

回答

2

我的一个同事这样做了。这个概念的一个很好的特点是,当用户'改变页面'时,你没有大量的POSTS,因为他们实际上在他们最后一次提交数据之前不会改变页面。他这样做了产品注册软件,这很好。我们的服务器只在用户最初请求该页面时才受到攻击,然后在他们提交时才受到攻击。

专业,这个概念的主要缺点是大多数网络开发人员都没有预料到这一点。我的同事(和你)有一个很酷的想法 - 但除非它很好地实施,并且有评论,100%有效的HTML和其他一些好的设计原则,否则它可能会让人困惑,因为大多数Web开发人员基本上从未见过之前完成。他的网站与之合作是一场噩梦,因为他实际上并不知道工程网络软件的含义,而是全部掌控在一起。我的组织从未追求这个(潜在有用的)想法,因为他的实施如此糟糕。

所以,当我看着这个想法是在这里的权衡,我想出了:

1)您不能要求在中间页的任何服务器端的交互。 2.)初始页面加载时间较长,但没有中间页面请求(更好的优化)。 3)这与任何人通常做的事情有很大的不同,这意味着你需要特别小心文档。这个设计概念有助于完全独立的网络软件在没有网络的情况下轻松部署。 5.)您可能会增加复杂性以避免页面加载,但可能不会。我不确定。

所有在一起,我认为这取决于你想完成什么。我的同事真的只是想看看他是否可以做到,他可以做到。然而,他如何做到这一点真的很糟糕,到了所有人都把他糟糕的实现与一个糟糕的主意联系起来的时候,这真的很让人伤心。

大多数情况下,我认为如果你遵循良好的网页设计实践,这不会是一个追求的东西太糟糕。你的目标是什么?

对不起,我无法直接回答你所有的问题。如果我认为这是一个坏主意,我希望我的经验对回答有帮助。

布赖恩J. Stinar-

+0

伟大的观点,有用的答案!我确实想过如何看待其他开发者(这当然是我在这里询问的原因之一)。很高兴听到关于它的一些想法。 – Jakob 2010-09-20 22:46:26

0

我做我的网站一样,在jQuery的,由弹簧支持mvc 3.对我来说,它工作的很好,而且在它上面有一个轻巧,华丽的毡条。 如果你有时间认真地在javascript中挖掘...这是非常好的练习。 我真的需要添加的唯一东西是搜索引擎优化,因为蜘蛛只能看到intial html。如果它对你很重要,我认为后端静态文件和站点地图将是足够好的解决方案。

+0

顺便说一句,地址是www.milanaleksic.net,如果你想知道这是怎么看 - 仍在devel的。虽然 – 2010-09-20 21:01:03

+0

感觉有点像闪光,是的。感谢您的链接。 – Jakob 2010-09-20 22:48:42

2

SproutCore是最好的一个在那里,当涉及到真正被从地上爬起来的单页,潜在的复杂应用程序构建。与GWTCappucino不同,SproutCore真的是直接使用JavaScript。他们不是唯一的一个。你可能也想看看JavaScriptMVCqooxdoo

个人而言,我使用JavaScript构建了一个非常大且复杂的单页应用程序。目前约有100,000行(包括评论/空白)。为了增加规模感,jQuery大约有6000个。为了达到这个规模,我建立了自己的框架,构建工具等,并且它非常可维护。你问是否可以工作,并且我可以告诉你它确实可行,但是如果你正在考虑做一些大事,你确实需要一些基础设施。 (顺便说一句,有很多懒加载 - 它不是一次100000行!)

我也不会真的推荐此方法以外的任何Web应用程序。正如所指出的,它仍然很难搜索引擎优化,并且可能会让某些用户感到陌生。

+0

SproutCore看起来很有希望,我会深入研究它。谢谢! – Jakob 2010-09-20 21:50:43

0

我发现了一些非常轻量级的功能,可以在不影响整个框架的情况下提供所需的基本功能。它被称为Sammy,灵感来自Ruby的Sinatra:http://code.quirkey.com/sammy/

非常推荐!

0

替代方案:在Java中使用相同的代码。看看ItsNat

在JavaScript中考虑,但在服务器上使用相同的DOM API编码相同,在服务器上更容易管理您的应用程序,无需自定义客户端/桥梁,因为UI和数据在一起。

关于搜索引擎优化,在单页有解决方案书签等,看看到Single Page Interface Manifesto