2011-11-14 27 views
0

我目前正在建設一個小測驗音樂Node.js的運行0.4.12和快遞框架動態node.js的內容

目前我的快速安裝是真的很基本的,只會是基礎URL

app.get('/', function(req, res){ 
res.render('index.jade'); 
}); 

我已經實現了一個小導航,它使用一個真正的大div與隱藏溢出和內部div與內容取決於您點擊什麼導航標題調整其左側值。

也是我得到它運行每當你點擊它的MongoDB查詢新聞欄目(該內容被通過socket.io交付)

當然

這不是搜索引擎友好的一切,我簡直新聞永遠不會是每次發現並運行查詢以獲取該消息不需要。 所以我需要一些存儲新聞信息的方式,只有當新的評論發佈或當我添加新的新聞時更新它...

它也很繁瑣的創建工作鏈接,目前我通過JavaScript使用文檔.location.href.replace ...

多一個問題是,我怕,這家網站變得過大,時間過長加載,如果我繼續把每一個內容我有一個單頁上...

因此,我如何維持頁面的感覺,因爲它現在是(一個無處不在的球員,除非你離開頁面,永遠不會停止),同時也服務於搜索引擎並保持頁面加載時間低?

+0

如果內容不斷被添加到您的「單個頁面」,那麼這對SEO也會有好處。我不確定是否有其他鏈接會產生重大影響。 – Clint

回答

3

讓我知道如果我在正確的軌道上,因爲我不完全理解你的問題,但在這裏我將如何完成你想做什麼:

有兩種方法可以做到這一點如果你正在尋找SEO的好處。

無論是從一個單一頁面服務器負載的一切,然後用CSS和Javascript它被加載後,操縱的內容...

OR

設置你的頁面以傳統的方式(每個導航標籤鏈接到一個新的完整頁面),然後使用Javascript通過AJAX加載您的內容,只要你喜歡。

在這兩種情況下,Google都可以抓取您的頁面/網站結構並獲取所需的所有內容,並且仍然可以使用JS爲用戶層層交互。無論你最終做什麼,SEO規則通常都是「對待它,就像我不需要JS加載所有內容」。

這聽起來像你有第一個場景覆蓋,雖然不是在你的鏈接中使用JS,我會讓他們使用標準的HTML錨鏈接使用id s。

如果你有興趣在第二種情況下,這是我建議:

首先,接近你的導航,就好像它並不需要JavaScript才能正常工作。這意味着每個導航元素鏈接到一個單獨的頁面(每個頁面都需要一個單獨的快速路徑)。

如果您使用Jade渲染您的模板,我會使用它的繼承功能來管理您的標記。基本上,你會把所有的html都放到layout.jade之內,並且在你用於頁面內容的大型div中,你會創建一個block,裏面有默認的內容。您爲每個導航元素設置的路線會調用不同的模板,這些模板將擴展index.jade並將頁面特定的內容寫入您創建的block

下面是一個例子:

app.get('/', function(req, res){ 
    res.render('index.jade'); 
}); 

app.get('/section1', function(req, res){ 
    res.render('section1.jade'); 
}); 

app.get('/section2', function(req, res){ 
    res.render('section2.jade'); 
}); 

這可確保每次訪問http://yoursite.com/section1時間,整個頁面呈現(頁眉,頁腳和所有),但你不必重複頁眉和頁腳代碼在每個模板中。它只是生活在index.jade,它被其他部分特定的模板所擴展。

設置新聞訂閱源時,除非它將實時新聞更新推送到客戶端,否則我會丟棄socket.io設置,並在頁面加載時從數據庫加載它。抓取頁面加載時從數據庫返回的任何內容,並通過局部變量將它傳遞給您的玉石模板。例如:

app.get('/news', function(req, res){ 
    res.render('news', { 
    newsArticles: newsArticles 
    }); 
}); 

最後,當你有這方面的工作像一個標準的網站將(傳統的HTTP頁面加載與JavaScript的加載),然後在你的JavaScript層的頁面轉變成一個加載通過AJAX的內容。我使用jQuery來做到這一點,它的作品非常漂亮。編寫一些jQuery代碼,將點擊事件附加到每個導航項目中。這個點擊事件會從鏈接中的href中獲取URL,然後將它傳遞給jQuery的'load'方法,然後它將用它通過ajax加載的頁面中的標記代替主內容區域中的內容。

+1

感謝您的好評!我能夠完成第二種情況,它運行平穩=] – Ezeke

+1

美麗!樂於幫助 :) – Jon