2012-07-05 65 views
4

短版本:Node.js的網站/應用程序模板設計

模板使用AJAX /插座服務於一個HTML文件,然後加載特定頁的數據完全做到,與節點,我應該期待什麼樣的表現呢?設計方面的好還是壞?

龍版

我目前在學習寫更好的代碼節點的過程。我是一個很長一段時間的JavaScript粉絲,我目前正試圖弄清楚node.js中的好/壞做法

我在考慮模板,我正在努力如何分離我所呈現的內容我正在儲存什麼。我正在閱讀很多MVC文章,並且我真的很想分離查看邏輯而不用亂碼。

我的問題是:

比方說,我有一個網站,它包含多個文件代表「屏幕」的用戶看到,讓我們在這個簡單的例子說,用戶應該能夠看到:Index, About, Contact, Portfolio

現在我需要這些頁面來動態加載,這意味着我不想每次都更新這些文件的模板,但它們看起來都很相似。

由於節點完全基於異步操作 - 只是爲它們提供相同的.html頁面會有多好/多壞,然後根據我所在的頁面從服務器加載所有數據使用AJAX /網絡套接字?

(天真,遍歷所有與NAME =「查看」的部分,並獲取由ID或類似內容)

這一點,我覺得將提供網頁的異步加載,並且完全解耦從網站佈局該網站的其餘部分。這感覺非常節點,沒有阻礙,一切異步。我正在尋找有關該主題的經驗豐富的開發人員的意見。

此外,任何與使用node.js構建網站相關的提示,都將受到讚賞。我來自PHP背景,我很想在設計時避免類似於webmatrix的東西。

+0

我想你應該看看[gor.js項目](http://gorjs.org/)。它使用節點 – MilkyWayJoe 2012-07-05 20:18:25

+0

上的Ember.js(MVC)我已經看到了Railway.js和大量其他mvc框架。我主要是在尋找關於節點設計本身的建議,而不是現有的框架。在我使用別人爲它寫的一個庫之前,我寧願自己理解mvc模式。謝謝 – 2012-07-05 20:19:39

+0

與你概述的幾個陷阱(這就是我所知道的「單頁網站」)類似gmail:SEO是最大的一個 - 這個內容對於蜘蛛來說很難索引。它更適用於封閉的內容,例如用戶的電子郵件。還可以保留導航用戶的使用方式,但必須明確地考慮 - 書籤如何工作?後退按鈕怎麼樣? – Julian 2012-07-05 20:57:34

回答

2

幾個陷阱與這種「單頁網站」的:

SEO:此內容將是困難的蜘蛛索引。它更適用於封閉的內容,例如用戶的電子郵件。

導航:保留瀏覽器行爲用戶習以爲常是可能的,但您必須明確地考慮它 - 書籤如何工作?後退按鈕怎麼樣?

您可能會更好地以傳統方式發送頁面(沒有理由無法在後端的節點中呈現您的模板)。然後優化您的客戶端代碼和緩存系統,以便快速加載第二個頁面 - 不需要重新獲取.css或.js。

+0

SEO絕對是值得考慮的事情。這種方法對Web應用程序非常有用,但不適用於內容驅動的站點。無論入口點是什麼,導航都可以使用新的歷史API保存,應用程序將能夠加載所需的資源並進行渲染。但我同意,這並不容易,所有這些都必須在應用程序的設計/體系結構中考慮到。 – SMathew 2012-07-05 21:17:40

+0

感謝您的回答,我甚至沒有考慮SEO。 – 2012-07-06 09:33:47

1

這個簡單的概念是你有幾個佈局模板和一些局部。你會加載這些模板,就好像它們是JS文件一樣(它們在編譯時)。您可以將已編譯的模板設置爲某個地方的全局對象.. App.templates.portfolio = JST [「templates/portfolio」]。爲你的應用程序做一次。這些模板可以緩存到任何地方 - 瀏覽器的localStorage,反向代理等。

當用戶點擊「portfolio」時,服務器發送回JSON,並使用返回的數據在瀏覽器中編譯「portfolio」模板服務器。

https://github.com/sstephenson/eco/ 對此非常有用。還有很多其他人同樣優秀甚至更好。這都是個人喜好。玉是我最喜歡的。

大多數MVC框架包括其中之一。

如果你有一個簡單的基於頁面的網站,那麼Node可能不是最好的選擇。我相信你已經知道這一點。