2010-09-20 85 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