單頁(yè)面優(yōu)化搜外總結了以下幾點(diǎn)希望可以幫到你:
1、定義區域性?xún)热?/p>
針對單頁(yè)面網(wǎng)站,我們可以先將頁(yè)面劃分為幾個(gè)特定的區域,將每一個(gè)區域作為一個(gè)單獨的頁(yè)面來(lái)優(yōu)化。為每一個(gè)區域選擇關(guān)鍵詞、定義內容、設置各種標簽等。當然要切記每個(gè)區域的關(guān)鍵詞都應具有相關(guān)性。
2、使用DIV分割區域
將每一個(gè)區域用DIV分割開(kāi)來(lái),這樣能夠使得網(wǎng)頁(yè)的結構更加清晰。
3、設置錨鏈接
搜索引擎都非常喜歡錨鏈接,與錨文本不同,錨鏈接能夠將用戶(hù)帶入同一頁(yè)面的特定區域。在單頁(yè)面網(wǎng)站優(yōu)化中,在每個(gè)區域設置特定的錨鏈接,正確為用戶(hù)導航,方便用戶(hù)在同一頁(yè)面內找尋目標信息。
4、為每一個(gè)區域設置H1 標簽
通常情況下,一個(gè)頁(yè)面最多設置一個(gè)H1 標簽,但是單頁(yè)面網(wǎng)站因為其獨特性,跟一般的網(wǎng)站不同。在單頁(yè)面網(wǎng)站的每個(gè)區域設置一個(gè)H1 標簽有利于突出頁(yè)面結構,有助于搜索引擎明白網(wǎng)站架構。但是切記每個(gè)區域設置一個(gè)H1 標簽即可,不可頻繁使用。
5、避免全是圖片展示
很多企業(yè)使用單頁(yè)面網(wǎng)站,希望展示給用戶(hù)一種酷炫或者簡(jiǎn)單的效果,所以網(wǎng)站里面添加很多圖片,但是這卻造成了網(wǎng)站文字內容太少,不利于搜索引擎對網(wǎng)站的抓取和索引。
6、高質(zhì)量的網(wǎng)站內容
作為單頁(yè)面網(wǎng)站,將用戶(hù)關(guān)注的需求點(diǎn)盡可能的完整的展示出來(lái),是十分有必要的,所以這就需要高質(zhì)量的網(wǎng)站內容,通過(guò)不同的區域展示相關(guān)的內容介紹,提高用戶(hù)體驗。
所謂單頁(yè)應用,指的是在一個(gè)頁(yè)面上集成多種功能,甚至整個(gè)系統就只有一個(gè)頁(yè)面,所有的業(yè)務(wù)功能都是它的子模塊,通過(guò)特定的方式掛接到主界面上。
它是AJAX技術(shù)的進(jìn)一步升華,把AJAX的無(wú)刷新機制發(fā)揮到極致,因此能造就與桌面程序媲美的流暢用戶(hù)體驗。開(kāi)發(fā)框架 ExtJS可以稱(chēng)為第一代單頁(yè)應用框架的典型,它封裝了各種UI組件,用戶(hù)主要使用JavaScript來(lái)完成整個(gè)前端部分,甚至包括布局。
隨著(zhù)功能逐漸增加,ExtJS的體積也逐漸增大,即使用于內部系統的開(kāi)發(fā),有時(shí)候也顯得笨重了,更不用說(shuō)開(kāi)發(fā)以上這類(lèi)運行在互聯(lián)網(wǎng)上的系統。 jQuery由于偏重DOM操作,它的插件體系又比較松散,所以比ExtJS這個(gè)體系更適合開(kāi)發(fā)在公網(wǎng)運行的單頁(yè)系統,整個(gè)解決方案會(huì )相對比較輕量、靈活。
但由于jQuery主要面向上層操作,它對代碼的組織是缺乏約束的。如何在代碼急劇膨脹的情況下控制每個(gè)模塊的內聚性,并且適當在模塊之間產(chǎn)生數據傳遞與共享,就成為了一種有挑戰的事情。
為了解決單頁(yè)應用規模增大時(shí)候的代碼邏輯問(wèn)題,出現了不少MV*框架,他們的基本思路都是在JS層創(chuàng )建模塊分層和通信機制。有的是MVC,有的是MVP,有的是MVVM,而且,它們幾乎都在這些模式上產(chǎn)生了變異,以適應前端開(kāi)發(fā)的特點(diǎn)。
這類(lèi)框架包括Backbone,Knockout,AngularJS,Avalon等。組件化 這些在前端做分層的框架推動(dòng)了代碼的組件化,所謂組件化,在傳統的Web產(chǎn)品中,更多的指UI組件,但其實(shí)組件是一個(gè)廣泛概念,傳統Web產(chǎn)品中UI組件占比高的原因是它的厚度不足,隨著(zhù)客戶(hù)端代碼比例的增加,相當一部分的業(yè)務(wù)邏輯也前端化,由此催生了很多非界面型組件的出現。
分層帶來(lái)的一個(gè)優(yōu)勢是,每層的職責更專(zhuān)一了,由此,可以對其作單元測試的覆蓋,以保證其質(zhì)量。傳統UI層測試最頭疼的問(wèn)題是UI層和邏輯混雜在一起,比如往往會(huì )在遠程請求的回調中更改DOM,當引入分層之后,這些東西都可以分別被測試,然后再通過(guò)場(chǎng)景測試來(lái)保證整體流程。
代碼隔離 與開(kāi)發(fā)傳統頁(yè)面型網(wǎng)站相比,實(shí)現單頁(yè)應用的過(guò)程中,有一些比較值得特別關(guān)注的點(diǎn)。 從單頁(yè)應用的特點(diǎn)來(lái)看,它比頁(yè)面型網(wǎng)站更加依賴(lài)于JavaScript,而由于頁(yè)面的單頁(yè)化,各種子功能的JavaScript代碼聚集到了同一個(gè)作用域,所以代碼的隔離、模塊化變得很重要。
在單頁(yè)應用中,頁(yè)面模板的使用是很普遍的。很多框架內置了特定的模板,也有的框架需要引入第三方的模板。
這種模板是界面片段,我們可以把它們類(lèi)比成JavaScript模塊,它們是另一種類(lèi)型的組件。 模板也一樣有隔離的需要。
不隔離模板,會(huì )造成什么問(wèn)題呢?模板間的沖突主要存在于id屬性上,如果一個(gè)模板中包含固定的id,當它被批量渲染的時(shí)候,會(huì )造成同一個(gè)頁(yè)面的作用域中出現多個(gè)相同id的元素,產(chǎn)生不可預測的后果。因此,我們需要在模板中避免使用id,如果有對DOM的訪(fǎng)問(wèn)需求,應當通過(guò)其他選擇器來(lái)完成。
如果一個(gè)單頁(yè)應用的組件化程度非常高,很可能整個(gè)應用中都沒(méi)有元素id的使用。代碼合并與加載策略 人們對于單頁(yè)系統的加載時(shí)間容忍度與Web頁(yè)面不同,如果說(shuō)他們愿意為購物頁(yè)面的加載等待3秒,有可能會(huì )愿意為單頁(yè)應用的首次加載等待5-10秒,但在此之后,各種功能的使用應當都比較流暢,所有子功能頁(yè)面盡量要在1-2秒時(shí)間內切換成功,否則他們就會(huì )感覺(jué)這個(gè)系統很慢。
從這些特點(diǎn)來(lái)看,我們可以把更多的公共功能放到首次加載,以減小每次加載的載入量,有一些站點(diǎn)甚至把所有的界面和邏輯全部放到首頁(yè)加載,每次業(yè)務(wù)界面切換的時(shí)候,只產(chǎn)生數據請求,因此它的響應是非常迅速的,比如青云的控制臺就是這么做的。 通常在單頁(yè)應用中,無(wú)需像網(wǎng)站型產(chǎn)品一樣,為了防止文件加載阻塞渲染,把js放到html后面加載,因為它的界面基本都是動(dòng)態(tài)生成的。
當切換功能的時(shí)候,除了產(chǎn)生數據請求,還需要渲染界面,這個(gè)新渲染的界面部件一般是界面模板,它從哪里來(lái)呢?來(lái)源無(wú)非是兩種,一種是即時(shí)請求,像請求數據那樣通過(guò)AJAX獲取過(guò)來(lái),另一種是內置于主界面的某些位置,比如script標簽或者不可見(jiàn)的textarea中,后者在切換功能的時(shí)候速度有優(yōu)勢,但是加重了主頁(yè)面的負擔。 在傳統的頁(yè)面型網(wǎng)站中,頁(yè)面之間是互相隔離的,因此,如果在頁(yè)面間存在可復用的代碼,一般是提取成單獨的文件,并且可能會(huì )需要按照每個(gè)頁(yè)面的需求去進(jìn)行合并。
單頁(yè)應用中,如果總的代碼量不大,可以整體打包一次在首頁(yè)載入,如果大到一定規模,再作運行時(shí)加載,加載的粒度可以搞得比較大,不同的塊之間沒(méi)有重復部分。路由與狀態(tài)的管理 管理路由的目的是什么呢?是為了能減少用戶(hù)的導航成本。
比如說(shuō)我們有一個(gè)功能,經(jīng)歷過(guò)多次導航菜單的點(diǎn)擊,才呈現出來(lái)。如果用戶(hù)想要把這個(gè)功能地址分享給別人,他怎么才能做到呢? 傳統的頁(yè)面型產(chǎn)品是不存在這個(gè)問(wèn)題的,因為它就是以頁(yè)面為單位的,也有的時(shí)候,服務(wù)端路由處理了這一切。
但是在單頁(yè)應用中,這成為了問(wèn)題,因為我們只有一個(gè)頁(yè)面,界面上的各種功能區塊是動(dòng)態(tài)生成的。所以我們要通過(guò)對路由的管理,來(lái)實(shí)現這樣的功能。
具體的做法就是把產(chǎn)品功能劃分為若干狀態(tài),每個(gè)狀。
引言 Web頁(yè)面是無(wú)狀態(tài)的, 服務(wù)器對每一次請求都認為來(lái)自不同用戶(hù),因此,變量的狀態(tài)在連續對同一頁(yè)面的多次請求之間或在頁(yè)面跳轉時(shí)不會(huì )被保留。在用ASP.NET 設計開(kāi)發(fā)一個(gè)Web系統時(shí), 遇到一個(gè)重要的問(wèn)題是如何保證數據在頁(yè)面間進(jìn)行正確、安全和高效地傳送,Asp.net 提供了狀態(tài)管理等多種技術(shù)來(lái)解決保存和傳遞數據問(wèn)題,以下來(lái)探討.NET 下的解決此問(wèn)題的各種方法和各自的適用場(chǎng)合。
1、ASP.NET頁(yè)面間數據傳遞的各種方法和分析
1.1 使用Querystring 方法
QueryString 也叫查詢(xún)字符串, 這種方法將要傳遞的數據附加在網(wǎng)頁(yè)地址(URL)后面進(jìn)行傳遞。如頁(yè)面A.aspx 跳轉到頁(yè)面B.aspx,可以用Request.Redirect("B.aspx?參數名稱(chēng)=參數值")方法,也可以用超鏈接:,頁(yè)面跳轉后,在目標頁(yè)面中可用Ruquest["參數名稱(chēng)"]來(lái)接收參數。使用QuerySting 方法的優(yōu)點(diǎn)是實(shí)現簡(jiǎn)單, 不使用服務(wù)器資源;缺點(diǎn)是傳遞的值會(huì )顯示在瀏覽器的地址欄上,有被篡改的風(fēng)險,不能傳遞對象,只有在通過(guò)URL 請求頁(yè)時(shí)查詢(xún)字符串才是可行的。
1.2 利用隱藏域
隱藏域不會(huì )顯示在用戶(hù)的瀏覽器中, 一般是在頁(yè)面中加入一個(gè)隱藏控件, 與服務(wù)器進(jìn)行交互時(shí)把值賦給隱藏控件并提交給下一頁(yè)面。隱藏域可以是任何存儲在網(wǎng)頁(yè)中的與網(wǎng)頁(yè)有關(guān)的信息的存儲庫。使用隱藏域存入數值時(shí)用:hidden 控件.value=數值,取出接收數值時(shí)用:變量=hidden 控件.value。使用隱藏域的優(yōu)點(diǎn)是實(shí)現簡(jiǎn)單, 隱藏域是標準的HTML 控件,不需要復雜的編程邏輯。隱藏域在頁(yè)上存儲和讀取,不需要任何服務(wù)器資源,幾乎所有瀏覽器和客戶(hù)端設備都支持具有隱藏域的窗體。缺點(diǎn)是存儲結構少,僅僅支持簡(jiǎn)單的數據結構,存儲量少,因為它被存儲在頁(yè)面本身,所以無(wú)法存儲較大的值,而且大的數據量會(huì )受到防火墻和代理的阻止。
網(wǎng)頁(yè)布局方法很多,根據各人不同的喜好布局也不同:通常的布局方法有以下幾種:
一.通過(guò)表格來(lái)布局
表格布局的優(yōu)勢在于它能對不同對象加以處理,而又不用擔心不同對象之間的影響。而且表格在定位圖片和文本上比起用CSS更加方便。表格布局唯一的缺點(diǎn)是,當你用了過(guò)多表格時(shí),頁(yè)面下載速度受到影響
二.通過(guò)層疊樣式表來(lái)布局
CSS(層疊樣式表)被提出來(lái),它能完全精確的定位文本和圖片。CSS對于初學(xué)者來(lái)說(shuō)顯得有點(diǎn)復雜,但它的確是一個(gè)好的布局方法。你曾經(jīng)無(wú)法實(shí)現的想法利用CSS都能實(shí)現
三.通過(guò)框架來(lái)布局
框架結構的頁(yè)面被許多人不喜歡,可能是因為它的兼容性。但從布局上考慮,框架結構不失為一個(gè)好的布局方法。它如同表格布局一樣,把不同對象放置到不同頁(yè)面加以處理,因為框架可以取消邊框,所以一般來(lái)說(shuō)不影響整體美觀(guān)
四.當然還有其他的布局方式,比如你可以在紙上布局,就是先在紙上畫(huà)草圖,然后再按照圖來(lái)做
<?php
$Action = $_GET['Action'];
switch ($Action) {
case '': action_1();break;
case '1': action_1();break;
case '2': action_1();break;
case '3': action_1();break;
}
第一個(gè)辦法適用于你調用你已經(jīng)定義好的方法。 而二個(gè)適用于控制頁(yè)面上不同的顯示。 你剛才無(wú)法運行的原因是action_1()方法你還沒(méi)有定義。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.427秒