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