欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
談?wù)凙SP.NET皮膚機制的實(shí)現

做一個(gè)WEB程序,能夠在盡量修改極少程序代碼的情況下,輕松制定皮膚以及切換皮膚,應該都是需要的,誰(shuí)也不想,在網(wǎng)站界面想要改版的時(shí)候,要改一大片邏輯代碼。

  一個(gè)合格的皮膚機制體系的實(shí)現,應該要做到以下幾點(diǎn):

  • ->頁(yè)面模板上要極少擁有邏輯代碼(如果模板上擁有大量邏輯代碼,那估計這個(gè)也不叫作模板了)。
  • ->能夠輕松改變頁(yè)面布局,同時(shí)不影響程序代碼(.cs)。
  • ->新模板的定制,基本上能由皮膚制作者參照舊模板自行完成,不需要開(kāi)發(fā)人員太多介入。
  • ->保持性能。

  然后,來(lái)看看,都有哪些方法大家用來(lái)實(shí)現所謂的皮膚機制,同時(shí)進(jìn)行各個(gè)方法的一些個(gè)人說(shuō)明。

  1.      改變頁(yè)面調用的CSS文件來(lái)?yè)Q膚。

  這一個(gè),嚴格上來(lái)講,不應該算作皮膚機制。雖然CSS非常強大,也能夠通過(guò)它來(lái)任意改變頁(yè)面元素布局,但它的HTML始終是不變的,所以局限性是非常大的。

  優(yōu)點(diǎn):完全不影響性能,甚至可以完全不由服務(wù)端代碼來(lái)管理它的變換,可以使用JS來(lái)切換皮膚(由此,在我們有一套完美皮膚機制的情況下,這種方法,可以完全不與此機制沖突,讓用戶(hù)在客戶(hù)端作更多的個(gè)性化)。

  缺點(diǎn):如果作為核心皮膚機制的話(huà),非常有局限性。

  示例:如QQ.COM, 114LA.COM上面的一些可點(diǎn)擊的小色塊,就是改變調用的CSS文件來(lái)實(shí)現換膚。

  2.      讀取模板文件,替換標識符為要顯示的內容與數據輸出。

      這一個(gè)方法的靈活性比較高,每套皮膚可以有自己的布局,有自己的個(gè)性。

  實(shí)現:比如模板中有一個(gè)標識$Subject,程序代碼會(huì )把它替換成文章標題,然后有一個(gè)標識塊<!—Loop[ArticleList]--><h1>$Subject</h1><div>$Content</div><!--/Loop-->,程序代碼會(huì )把它替換成一個(gè)文章列表,最后輸出處理完所有標識符的內容。

  通常,我們會(huì )緩存讀取到的模板內容,但字符串的替換始終不可避免,或者也會(huì )把替換過(guò)的內容也緩存起來(lái),但這樣子,就等于要緩存模板內容以及替換過(guò)的內容,占用了兩份似乎挺重復內容的內存(為什么?不然總不該每次數據有改變的時(shí)候就去作IO操作讀取操作讀模板文件吧,這似乎比字符串替換性能更差)。

  優(yōu)點(diǎn):模板靈活程度很高,可以隨便改動(dòng)頁(yè)面布局。

  缺點(diǎn):影響性能,開(kāi)發(fā)人員維護難,必須有特定的標識符來(lái)表示頁(yè)面變量,后期維護可能會(huì )帶來(lái)非常多的問(wèn)題。

  3.      使用ASP.NET的App_Themes。

  這一個(gè)方法,應該是極差的一個(gè)方法,根本只是ASP.NET的一個(gè)小纂頭,雞肋,基本上不實(shí)用。

  實(shí)現:比如,定制一個(gè)BUTTON的樣式是這樣子的,<asp:buttonrunat="server" BackColor="lightblue"ForeColor="black" />,類(lèi)似這樣的代碼,存在于.skin文件中。然后它的換膚機制如下,<%@ Page Language="C#" Theme="default" %>。在A(yíng)pp_Themes目錄下,是各套皮膚的獨立文件夾,各個(gè)文件夾包含皮膚的樣式以及圖片文件等等,也可以包含.skin文件。

  優(yōu)點(diǎn):只有ASP.NET才有

  缺點(diǎn):包含了第一種方法的缺點(diǎn),.skin的樣式定制方式還要嚴重依賴(lài)使用ASP.NET服務(wù)端控件,同時(shí)也影響性能,靈活性也極低。

  4.      動(dòng)態(tài)載入.ASCX文件(ASP.NET用戶(hù)控件)|| 使用.master(母版)。

  這個(gè)方法,應該也是很多使用ASP.NET的人使用的方法,有時(shí)候,它還會(huì )與第三種方法結合使用。如果對性能需求不是很?chē)栏竦脑?huà),中小型項目可以使用。

  實(shí)現:使用LoadControl()動(dòng)態(tài)載入.ASCX文件或(與)指定頁(yè)面的MasterPageFile(目標皮膚文件夾的)實(shí)現(通常.ascx與.master還會(huì )結合使用)。

  優(yōu)點(diǎn):靈活性極高,每個(gè)皮膚有獨立的布局,直接使用了.CS文件的變量與方法ETC…甚至每套皮膚還有自己獨立的代碼文件。

  缺點(diǎn):影響性能。有興趣可以自己去反編譯LoadControl方法。同時(shí),在頁(yè)面要使用<%%>這種代碼塊,有時(shí)候感覺(jué)也有點(diǎn)不雅。

  5.      Xml + xslt

  傳說(shuō)xml取代html是趨勢??不清楚,不了解。應該不可能。此種方法我沒(méi)有深入了解過(guò),不過(guò)大概實(shí)現應該是要這樣子?每一個(gè)XML(輸出數據)會(huì )有一個(gè)對應的XSL文件(控制樣式)。如下:

xml文件

  1. <?xml version="1.0"encoding="ISO-8859-1" ?> 
  2.  
  3. <breakfast_menu> 
  4. <food> 
  5. <name>Belgian Waffles</name> 
  6. <price>$5.95</price> 
  7. <description>two of our famous Belgian Waffles with plenty of real maplesyrup</description> 
  8. <calories>650</calories> 
  9. </food> 
  10.  
  11. <food> 
  12. <name>Cakes</name> 
  13. <price>$1.95</price> 
  14. <description>sweet cakes</description> 
  15. <calories>2650</calories> 
  16. </food> 
  17.  
  18. </breakfast_menu> 

xsl文件

  1. <?xmlversionxmlversion="1.0" encoding="ISO-8859-1" ?> 
  2.  
  3. <html xsl:version="1.0" xmlnsxmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns="http://www.w3.org/1999/xhtml"> 
  4. <body style="font-family:Arial,helvetica,sans-serif;font-size:12pt;background-color:#EEEEEE"> 
  5. <xsl:for-each select="breakfast_menu/food"> 
  6.  <div style="background-color:teal;color:white;padding:4px"> 
  7.  <span style="font-weight:bold;color:white"> 
  8. <xsl:value-of select="name" /> 
  9. </span> 
  10. <xsl:value-of select="price" /> 
  11. </div> 
  12.  <divstyledivstyle="margin-left:20px;margin-bottom:1em;font-size:10pt"> 
  13. <xsl:value-of select="description" /> 
  14.  <span style="font-style:italic"> 
  15. <xsl:value-of select="calories" /> 
  16. </span> 
  17. </div> 
  18. </xsl:for-each> 
  19. </body> 
  20.  
  21. </html>  

 

 這樣子做,有什么好處么,我沒(méi)有體驗到。

  6.      讀取模板文件,生成.aspx文件到每套皮膚的獨立文件夾下,通過(guò)地址重寫(xiě)指定到這些文件夾。

  這個(gè)方法的最終效果對于用戶(hù)來(lái)說(shuō),和第二種方法應該是差不多的,優(yōu)點(diǎn)就是性能比較高,而且還能直接使用.CS代碼里面的變量方法ETC…另外,也可以不會(huì )有<%%>代碼塊的存在,可以存在自己的模板語(yǔ)言,如同第二種方法的$Subject, <!—Loop-->標識符一般。

  優(yōu)點(diǎn):幾乎不影響性能,只有第一次讀取生成.ASPX文件需要損失性能。靈活性極高。模板代碼可讀性也可以實(shí)現到很高。

  缺點(diǎn):?jiǎn)?dòng)時(shí)需要讀取分析時(shí)間(不過(guò),這應該算是小問(wèn)題),另外,有一套皮膚,它就要生成與之對應的一套.ASPX文件(當然這個(gè)可以解決)。

  7.      利用ASP.NET2.0開(kāi)始才擁有的VirtualPathProvider來(lái)實(shí)現。

  虛擬文件機制。這個(gè),應該算是第六種方法的加強版。最終的效果,和第六種差不多,只是不會(huì )生成那些.ASPX文件而已,取而代之的,便是長(cháng)駐在內存中。

  實(shí)現:實(shí)現兩個(gè)類(lèi),一個(gè)繼承至VirtualPathProvider,一個(gè)繼承至SkinFile。VirtualPathProvider里有個(gè)FileExists方法,重寫(xiě)成判斷請求的路徑是否是皮膚文件路徑,如果是,GetFile就實(shí)例一個(gè)SkinFile(這一個(gè)SkinFile,我們會(huì )對模板進(jìn)行處理,可以擁有自己的模板語(yǔ)言)。另外有一個(gè)GetCacheDependency方法,可以來(lái)將模板文件作為虛擬文件機制的緩存依賴(lài)文件,一旦模板文件被修改了,它就會(huì )再重新解析模板文件。這里先不作贅述,具體的,查看MSDN的相關(guān)文檔,具可了解。

  優(yōu)點(diǎn):與6相同。

  缺點(diǎn):第一次啟動(dòng)需要損失性能(但這也不可避免)。

  8.       還有更多的實(shí)現方法,還沒(méi)用過(guò),個(gè)人先不發(fā)表觀(guān)點(diǎn),

  比如:使用BuildProvider,但這一個(gè),需要有比較強的詞法分析與語(yǔ)法分析能力。。。。。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ASP.NET簡(jiǎn)易教程2
ASP.NET技術(shù)網(wǎng)站
ASP.NET開(kāi)發(fā)實(shí)戰——(三)第一個(gè)ASP.NET應用《MyBlog》
.NET開(kāi)發(fā)中你可能會(huì )用到的常用方法總結(2)
如何解決Asp.Net中不能上傳壓縮文件的問(wèn)題
ASP.net 基于JQUERY的可分離服務(wù)端框架模板系列--Table數據列表模板
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久