讓我知道如果我在正確的軌道上,因爲我不完全理解你的問題,但在這裏我將如何完成你想做什麼:
有兩種方法可以做到這一點如果你正在尋找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加載的頁面中的標記代替主內容區域中的內容。
來源
2012-01-10 21:25:52
Jon
如果內容不斷被添加到您的「單個頁面」,那麼這對SEO也會有好處。我不確定是否有其他鏈接會產生重大影響。 – Clint