本發(fā)明涉及軟件工程技術領域,更具體的說,是涉及一種頁面渲染方法及裝置。
背景技術:
軟件工程是研究和應用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護軟件的學科。從軟件開發(fā)的觀點看,它就是使用適當的資源(包括人員、軟硬件資源、時間等),為開發(fā)軟件進行的一組開發(fā)活動,在活動結束時輸入(即用戶的需求)轉化為輸出(最終符合用戶需求的軟件產品)。
在軟件開發(fā)過程中,需要盡量滿足DRY(Don’t repeat yourself,不要重復你自己)原則,針對頁面處理,通常情況下,有許多頁面是有一定的相似性的,這樣就要把多個頁面中重復的一些內容寫入到新的文件中。比如,要做一個網站,每個頁面中的頭部和尾部的內容都是相同的,僅僅是中間的內容部分有所區(qū)別,此時傳統(tǒng)的方式是把頭部的內容放到header資源中,把尾部的內容放到footer資源中,然后在需要引用這些內容的地方(比如,頁面渲染的時候),采用顯式聲明的方式(如:include<header>,include<footer>)進行內容引入。
但是,上述顯式聲明的引用方式,引入時需要給出引入資源的實際位置,當這些資源的位置或名稱有變化的時候,重構的成本及重構后的測試驗證的成本更高,容易造成引入缺陷。
而且,在特殊情況下,某些頁面渲染的時候,可能其要引入的資源中,大部分要引入的內容是相同的,但是又有一小部分內容是不同的,這個時候,傳統(tǒng)方式則只能把要引入的資源復制成一個新的資源,然后對新的資源局部修改,這樣,新的資源與之前要引入的資源則會存在大部分重復性內容,違 反了DRY原則,當有多個頁面存在上述特殊情況,則會導致修改許多資源的,增加了開發(fā)和維護的成本,還可能造成引入缺陷。
技術實現要素:
有鑒于此,本發(fā)明提供了一種,以克服現有技術中由于的問題。
為實現上述目的,本發(fā)明提供如下技術方案:
一種頁面渲染方法,預先以一個標示路徑標示多個資源,包括:
渲染所述多個資源中的模板資源獲取所述模板資源的內容;
根據所述標示路徑確定當前目錄;
當所述當前目錄不是根目錄時,執(zhí)行如下步驟:
在所述當前目錄下查找是否存在與所述模板資源同名的同名布局資源;
如果存在,則將所述模板資源的內容渲染到所述同名布局資源中;
如果不存在,則在所述當前目錄下查找是否存在默認布局資源;
如果存在,則將所述模板資源的內容渲染到所述默認布局資源中;
以所述當前目錄的上一目錄作為當前目錄。
可選的,所述標示路徑為/A1/…/An-1/An/filename,其中,A1、…、An-1、An為所述標示路徑中所包含的n個目錄的名稱,n為不小于0的整數;filename為所述標示路徑標示的資源的名稱。
可選的,布局資源內部設置有模板資源占位符。
可選的,所述將所述模板資源的內容渲染到所述同名布局資源中,具體包括:
將所述模板資源的內容渲染到所述同名布局資源中的模板資源占位符的位置。
可選的,所述將所述模板資源的內容渲染到所述默認布局資源中,具體包括:
將所述模板資源的內容渲染到所述默認布局資源中的模板資源占位符的位置。
一種頁面渲染裝置,包括:
標示單元,用于預先以一個標示路徑標示多個資源;
渲染單元,用于渲染所述多個資源中的模板資源獲取所述模板資源的內容;
以及,根據所述標示路徑確定當前目錄;
以及,當所述當前目錄不是根目錄時,執(zhí)行如下步驟:
在所述當前目錄下查找是否存在與所述模板資源同名的同名布局資源;
如果存在,則將所述模板資源的內容渲染到所述同名布局資源中;
如果不存在,則在所述當前目錄下查找是否存在默認布局資源;
如果存在,則將所述模板資源的內容渲染到所述默認布局資源中;
以所述當前目錄的上一目錄作為當前目錄。
可選的,所述標示路徑為/A1/…/An-1/An/filename,其中,A1、…、An-1、An為所述標示路徑中所包含的n個目錄的名稱,n為不小于0的整數;filename為所述標示路徑標示的資源的名稱。
可選的,布局資源內部設置有模板資源占位符。
可選的,所述渲染單元具體用于:
將所述模板資源的內容渲染到所述同名布局資源中的模板資源占位符的位置。
可選的,所述渲染單元具體用于:
將所述模板資源的內容渲染到所述默認布局資源中的模板資源占位符的位置。
經由上述的技術方案可知,與現有技術相比,本發(fā)明公開了一種頁面渲染方法及裝置,不論多個資源的實際位置在哪里,都預先以一個標示路徑標示上述多個資源,這樣資源引入時根據標示路徑即可,資源的實際位置變化將不會影響資源的正確引入。而且,將要引入的資源中不同的一小部分內容,分別設置了默認布局資源和同名布局資源的概念,在非特殊情況下,使用默認布局資源即可,而在特殊情況下,使用同名布局資源即可,默認布局資源和同名布局資源不重復,符合DRY原則。另外,當多個頁面存在特殊情況時,僅增加對應的同名布局資源即可,減少了開發(fā)和維護的成本,保證了資源引入的準確性。
附圖說明
為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例公開的一種頁面渲染方法的流程示意圖;
圖2為本發(fā)明實施例公開的另一種頁面渲染方法的流程示意圖;
圖3為本發(fā)明實施例公開一種頁面渲染裝置的結構示意圖。
具體實施方式
為了引用和清楚起見,下文中使用的技術名詞的說明、簡寫或縮寫總結如下:
DRY原則:Do not repeat yourself,不要重復你自己原則,旨在軟件開發(fā)中,減少重復的信息,當DRY原則被成功應用時,一個系統(tǒng)中任何單個元素的修改都不需要與其邏輯無關的其他元素發(fā)生改變,此外,與之邏輯上相關的其他元素的變化均為可預見的、均勻的,并保持同步。
資源路徑(PATH):在模板引擎中,需要用到各種的資源,這些資源在訪問時必須有唯一的路徑,為了屏蔽不同來源差異,給所有的資源都定義了統(tǒng)一的格式,這里采用Unix/Linux的文件路徑格式來描述資源路徑。資源路徑分成兩個部分,最后一個“/”后面的部分為資源名,前面,含“/”的部分為路徑名。比如:“/aa/bb/cc/def.abc”,表示這是一個資源,其資源名是“def.abc”,其路徑為“/aa/bb/cc/”
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的術語在適當情況下可以互換,這僅僅是描述本發(fā)明的實施例中對相同屬性的對象在描述時所采用的區(qū)分方式。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產品或設備不必限于那些單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它單元。
由背景技術可知,現有技術中,顯式聲明的引用方式,引入時需要給出引入資源的實際位置,當這些資源的位置或名稱有變化的時候,重構的成本及重構后的測試驗證的成本更高,容易造成引入缺陷。而且,在特殊情況下,某些頁面渲染的時候,可能其要引入的資源中,大部分要引入的內容是相同 的,但是又有一小部分內容是不同的,這個時候,傳統(tǒng)方式則只能把要引入的資源復制成一個新的資源,然后對新的資源局部修改,這樣,新的資源與之前要引入的資源則會存在大部分重復性內容,違反了DRY原則,當有多個頁面存在上述特殊情況,則會導致修改許多資源的,增加了開發(fā)和維護的成本,還可能造成引入缺陷。
為此,本發(fā)明公開了一種頁面渲染方法及裝置,不論多個資源的實際位置在哪里,都預先以一個標示路徑標示上述多個資源,這樣資源引入時根據標示路徑即可,資源的實際位置變化將不會影響資源的正確引入。而且,將要引入的資源中不同的一小部分內容,分別設置了默認布局資源和同名布局資源的概念,在非特殊情況下,使用默認布局資源即可,而在特殊情況下,使用同名布局資源即可,默認布局資源和同名布局資源不重復,符合DRY原則。另外,當多個頁面存在特殊情況時,僅增加對應的同名布局資源即可,減少了開發(fā)和維護的成本,保證了資源引入的準確性。
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和具體實施方式對本發(fā)明作進一步詳細的說明。
請參閱附圖1,為本發(fā)明實施例公開的一種頁面渲染方法的流程示意圖。
在進行頁面渲染之前,需要預先以一個標示路徑標示多個資源,即,不論上述多個資源的實際位置是在本地文件中,還是在FTP服務器中,還是在Web服務器中,還是在Jar、zip等壓縮文件中、還是在關系數據庫、NoSql數據庫等數據庫中,最后都必須以一個唯一的標示路徑來進行標示。。在以一個標示路徑標示多個資源之后,不管某個資源的原始路徑在哪里,只要其標示路徑相同,則表示是同一個資源。
在預先以一個標示路徑標示多個資源之后,所述頁面渲染方法具體包括如下步驟:
S101:渲染所述多個資源中的模板資源獲取所述模板資源的內容。
資源的類型有兩種,一種叫布局資源,一種叫模板資源,模板資源進行渲染后,根據渲染規(guī)則進行布局資源查找,找到合適的布局資源之后,把模板資源的內容渲染到布局資源中。
S102:根據所述標示路徑確定當前目錄。
S103:在所述當前目錄下查找是否存在與所述模板資源同名的同名布局資源,如果不存在,在執(zhí)行步驟S104,如果存在,則執(zhí)行步驟S105。
在本實施例中,需要提前將要引入的資源中不同的一小部分內容,分別設置默認布局資源和同名布局資源,在大多數的情況下(即非特殊情況下),使用默認布局資源即可,在個別情況下(即特殊情況下),使用同名布局資源即可,默認布局資源和同名布局資源不重復,符合DRY原則。另外,當多個頁面存在特殊情況時,僅增加對應的同名布局資源即可,減少了開發(fā)和維護的成本,保證了資源引入的準確性。
S104:在所述當前目錄下查找是否存在默認布局資源,如果存在,則執(zhí)行步驟S106,如果不存在,則執(zhí)行步驟S107。
在頁面渲染的過程中,先判定是否是特殊情況,如果是特殊情況,則按特殊情況的方式處理,如果是非特殊情況,才按非特殊情況處理。
S105:將所述模板資源的內容渲染到所述同名布局資源中。
S106:將所述模板資源的內容渲染到所述默認布局資源中。
S107:判斷所述當前目錄是否為根目錄,如果不是,則以所述當前目錄的上一目錄作為當前目錄,并返回執(zhí)行步驟S103,如果是,則渲染結束。
本實施例公開了一種頁面渲染方法,不論多個資源的實際位置在哪里,都預先以一個標示路徑標示上述多個資源,這樣資源引入時根據標示路徑即可,資源的實際位置變化將不會影響資源的正確引入。而且,將要引入的資源中不同的一小部分內容,分別設置了默認布局資源和同名布局資源的概念,在非特殊情況下,使用默認布局資源即可,而在特殊情況下,使用同名布局 資源即可,默認布局資源和同名布局資源不重復,符合DRY原則。另外,當多個頁面存在特殊情況時,僅增加對應的同名布局資源即可,減少了開發(fā)和維護的成本,保證了資源引入的準確性。
請參閱附圖2,為本發(fā)明實施例公開的另一種頁面渲染方法的流程示意圖。
在進行頁面渲染之前,需要預先以一個標示路徑標示多個資源,即,不論上述多個資源的實際位置是在本地文件中,還是在FTP服務器中,還是在Web服務器中,還是在Jar、zip等壓縮文件中、還是在關系數據庫、NoSql數據庫等數據庫中,最后都必須以一個唯一的標示路徑來進行標示,在本實施例中,以“/A1/…/An-1/An/filename”的形式來進行標示,其中,A1、…、An-1、An為所述標示路徑中所包含的n個目錄的名稱,n為不小于0的整數;filename為所述標示路徑標示的資源的名稱。在以一個標示路徑標示多個資源之后,不管某個資源的原始路徑在哪里,只要其標示路徑相同,則表示是同一個資源。
在以一個標示路徑標示多個資源之后,上述多個資源最后的上層路徑(即,根目錄)一定是“/”,這樣就帶來一個好處,可以方便的進行資源路徑的層次結構的比較。如果兩個資源的標示路徑相同,則表示它們在同一個目錄中。比如:“/aa/bb/aa.page”和“/aa/bb/default.layout”這兩個資源,就可以認為是在同一個目錄中。
在預先以一個標示路徑標示多個資源之后,所述頁面渲染方法具體包括如下步驟:
S201:渲染所述多個資源中的模板資源獲取所述模板資源的內容。
資源的類型有兩種,一種叫布局資源,一種叫模板資源,布局資源和模板資源本質上沒有區(qū)別,唯一的區(qū)別是在布局內部有一個模板資源占位符,模板資源占位符的形式可以為“#pageContent”,當然也可以是其它形式。模板資源占位符實際上是標示布局資源的一個插入點,也就是模板資源進行渲 染后,根據渲染規(guī)則進行布局資源查找,找到合適的布局資源之后,把模板資源的內容渲染到布局資源中這個模板資源占位符的位置。
另外在布局資源內還可以通過#layout(或類似)指令定義0到多個模板資源占位符,在模板資源占位符的位置可以設置默認顯示內容,如果在頁面資源中通過#@layout(或類似)指令聲明最終要顯示的內容(即,同名局部資源),則顯示頁面資源中聲明的內容,否則顯示布局資源中默認內容(即,默認局部資源)。
S202:根據所述標示路徑確定當前目錄。
以“/A1/…/An-1/An/filename”這種形式的標示路徑來說,當前目錄可以為An/、An-1/、……、A1/、/中的任意一個,在頁面渲染的時候,一般從最底層目錄(即An/)開始處理,直至處理到根目錄為止。
S203:在所述當前目錄下查找是否存在與所述模板資源同名的同名布局資源,如果不存在,在執(zhí)行步驟S104,如果存在,則執(zhí)行步驟S105。
在本實施例中,需要提前將要引入的資源中不同的一小部分內容,分別設置默認布局資源和同名布局資源,在大多數的情況下(即非特殊情況下),使用默認布局資源即可,在個別情況下(即特殊情況下),使用同名布局資源即可,默認布局資源和同名布局資源不重復,符合DRY原則。另外,當多個頁面存在特殊情況時,僅增加對應的同名布局資源即可,減少了開發(fā)和維護的成本,保證了資源引入的準確性。
S204:在所述當前目錄下查找是否存在默認布局資源,如果存在,則執(zhí)行步驟S206,如果不存在,則執(zhí)行步驟S207。
在頁面渲染的過程中,先判定是否是特殊情況,如果是特殊情況,則按特殊情況的方式處理,如果是非特殊情況,才按非特殊情況處理。
S205:將所述模板資源的內容渲染到所述同名布局資源中的模板資源占位符的位置。
S206:將所述模板資源的內容渲染到所述默認布局資源中的模板資源占位符的位置。
S207:判斷所述當前目錄是否為根目錄,如果不是,則以所述當前目錄的上一目錄作為當前目錄,并返回執(zhí)行步驟S203,如果是,則渲染結束。
本實施例公開了一種頁面渲染方法,不論多個資源的實際位置在哪里,都預先以一個標示路徑標示上述多個資源,這樣資源引入時根據標示路徑即可,資源的實際位置變化將不會影響資源的正確引入。而且,將要引入的資源中不同的一小部分內容,分別設置了默認布局資源和同名布局資源的概念,在非特殊情況下,使用默認布局資源即可,而在特殊情況下,使用同名布局資源即可,默認布局資源和同名布局資源不重復,符合DRY原則。另外,當多個頁面存在特殊情況時,僅增加對應的同名布局資源即可,減少了開發(fā)和維護的成本,保證了資源引入的準確性。
上述本發(fā)明公開的實施例中詳細描述了方法,對于本發(fā)明的方法可采用多種形式的裝置實現,因此本發(fā)明還公開了一種裝置,下面給出具體的實施例進行詳細說明。
請參閱附圖3,為本發(fā)明實施例公開一種頁面渲染裝置的結構示意圖。
該頁面渲染裝置,包括如下單元:
標示單元10,用于預先以一個標示路徑標示多個資源;
渲染單元11,用于渲染所述多個資源中的模板資源獲取所述模板資源的內容;
以及,根據所述標示路徑確定當前目錄;
以及,當所述當前目錄不是根目錄時,執(zhí)行如下步驟:
在所述當前目錄下查找是否存在與所述模板資源同名的同名布局資源;
如果存在,則將所述模板資源的內容渲染到所述同名布局資源中;
如果不存在,則在所述當前目錄下查找是否存在默認布局資源;
如果存在,則將所述模板資源的內容渲染到所述默認布局資源中;
以所述當前目錄的上一目錄作為當前目錄。
需要說明的是,所述標示路徑為/A1/…/An-1/An/filename,其中,A1、…、An-1、An為所述標示路徑中所包含的n個目錄的名稱,n為不小于0的整數;filename為所述標示路徑標示的資源的名稱。
進一步需要說明的是,布局資源內部設置有模板資源占位符。
則所述渲染單元11具體用于:
將所述模板資源的內容渲染到所述同名布局資源中的模板資源占位符的位置。
所述渲染單元11具體用于:
將所述模板資源的內容渲染到所述默認布局資源中的模板資源占位符的位置。
上述各個單元的具體功能實現已在方法實施例中詳細說明,本實施例不再贅述,具體請參見方法實施例中的相關內容。
綜上所述:
本發(fā)明公開了一種頁面渲染方法及裝置,不論多個資源的實際位置在哪里,都預先以一個標示路徑標示上述多個資源,這樣資源引入時根據標示路徑即可,資源的實際位置變化將不會影響資源的正確引入。而且,將要引入的資源中不同的一小部分內容,分別設置了默認布局資源和同名布局資源的概念,在非特殊情況下,使用默認布局資源即可,而在特殊情況下,使用同名布局資源即可,默認布局資源和同名布局資源不重復,符合DRY原則。另外,當多個頁面存在特殊情況時,僅增加對應的同名布局資源即可,減少了開發(fā)和維護的成本,保證了資源引入的準確性。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
另外需說明的是,以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯式的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。另外,本發(fā)明提供的裝置實施例附圖中,模塊之間的連接關系表示它們之間具有通信連接,具體可以實現為一條或多條通信總線或信號線。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,所屬領域的技術人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現,當然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲器、專用元器件等來實現。一般情況下,凡由計算機程序完成的功能都可以很容易地用相應的硬件來實現,而且,用來實現同一功能的具體硬件結構也可以是多種多樣的,例如模擬電路、數字電路或專用電路等。但是,對本發(fā)明而言更多情況下軟件程序實現是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在可讀取的存儲介質中,如計算機的軟盤,U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
綜上所述,以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照上述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應 當理解:其依然可以對上述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的精神和范圍。