《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 談頁面跳轉的路由技術
談頁面跳轉的路由技術
ZDNET網絡頻道
摘要:   這應該不算是一個很新的技術,但絕對是一個很有用的技術,這是我在前一個公司工作時學到的,當時實現的是對php頁面通過路由實現動態跳轉。沒想到現在這個項目又將用到。當我們的網站頁面很多,需要的跳轉很多,而我們又需要動態地在主頁面中加載子頁面時,就將用到這個技術。
關鍵詞: 路由交換 路由技術
Abstract:
Key words :

  這應該不算是一個很新的技術,但絕對是一個很有用的技術,這是我在前一個公司工作時學到的,當時實現的是對php頁面通過路由實現動態跳轉。沒想到現在這個項目又將用到。當我們的網站頁面很多,需要的跳轉很多,而我們又需要動態地在主頁面中加載子頁面時,就將用到這個技術。我們現在這個項目前臺由FLEX實現,整個系統可能只由幾個application組成,所有的功能點都由module實現,而module本身無法實現各module間的跳轉,只能通過application實現對各個module的動態加載來達到跳轉的功能。而一個項目中可能有上千個module,公司的每個人可能會分到上百個module乃至幾百個module的任務。所有的這些module如果不用路由技術,那么每次跳轉都要能過觸發一個不同的函數來實現,這樣每一個application就會有幾百個這樣的跳轉函數,想想那有多么恐怖吧,而且可維護性將變得極其差。
  如果我們使用了路由技術,那情況就會變得大不一樣了,路由技術的原理其實很簡單,就是通過字符串的拼接,拼接出一個我們需要跳轉的url,通過傳遞不同的參數,我們便可達到跳轉到不同頁面的目的。而在我們現在這個項目中,為了達到動態地在application加載module的目的,我把實現跳轉的函數從
application移到了module,由各個module自己決定自己要跳轉的目的地址,各個module把組裝完整的url傳遞給application,這樣在application中只要有一個函數便可實現頁面跳轉的功能。從幾百個函數到一個函數,我們的application將減少幾千行代碼。最有利的還不是這個,由于把頁面跳轉的任務權利分到了各個module,這樣各個模塊內的module將變得更加的獨立,每個人只需把自己的module做好便可以了,不用去考慮整個系統。而且系統的集成將變得極其簡單,維護也將變得更為獨立,更不會出現改動了一個module而牽一發而動全身的情況。
  由此,在我們的application中,如在mainFrame.mxml中,只需定義一個實現跳轉的函數
  如:
  public function jumpTo(toUrl:String):void
  {
  m1.url=toUrl;
  m1.loadModule();
  }
  在各個module中,必須要把url完全組裝好,包括需要傳遞類似ID的參數的情況,然后調用application中的jumpTo()函數便可。
  如,在我的一個module中點擊修改按鈕,在這個module中,加一個函數
  public function displayUpdate():void
  {
  var fromTable:String=this.DG.selectedItem.fromTable as String;
  if(fromTable=="large")
  {
  var url:String = "eqm/updateLarge.swf?eqmID="+ this.DG.selectedItem.eqmID as
String;
  }
  else if(fromTable=="small")
  {
  var url:String="eqm/updateSmall.swf?eqmID="+this.DG.selectedItem.eqmID as
String;
  }
  this.parentApplication.jumpTo(url);
  }
  這樣就把實現跳轉的任務分配到了各個module,由各個module自已決定跳轉!
  但這樣之后還可能會報一個
  FLEX:TypeError: Error #1034: 強制轉換類型失敗 的錯誤
  這時,在application中加上:
  import mx.managers.DragManager;
  import mx.managers.IPopUpManager;
  private var dragManager : DragManager;
  private var popUpManager : IPopUpManager;
  問題便會得到解決,具體原因如下:(原因轉自一臺灣網站,我改成了簡體中文)
  屬于ModuleLoader shared code problem.
  當Module中使用managers時(如PopUpManager,DragManager,
HistoryManager等)則可能出現這個問題(當application里在loader之前沒有引入這些manager的引用時)。
  manager的方法是靜態方法,整個應用程序中創建了一個該manager接口的singleton實例,但module僅在自己的 Application domain中使用該單例, 當多個module使用同一個單例,manager且main
application沒有使用時,就會出現這個空對象應用問題:第一個引入某manager的module不能將該manager接口的singleton跟其他module共享,其他module調用該Manager的方法時,應用程序不會再創建該manager接口的實例,這個module就無法引用到該manager接口的實例,就出現了空對象引用問題.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 18黄网站| 成人午夜视频免费观看 | 欧洲成人免费高清视频 | 欧美成人免费在线视频 | 美女网站18| aaa级精品久久久国产片 | 国产日本三级欧美三级妇三级四 | 亚洲精品综合一区二区 | 香港经典a毛片免费观看看 香港经典a毛片免费观看爽爽影院 | 日本xxxxx黄区免费看动漫 | 欧美日韩精品乱国产 | 亚洲欧美在线免费观看 | 成人午夜视频在线观看 | 成年女人看片免费视频播放器 | a级午夜毛片免费一区二区 a级性生活视频 | 久久国产乱子伦精品免费不卡 | 欧美午夜在线观看理论片 | 国产做国产爱免费视频 | 99精品国产一区二区三区 | 亚洲 中文 欧美 日韩 在线人 | 在线看国产 | 精品国产免费久久久久久 | 国产精品久久久久久久久99热 | 国产步兵社区视频在线观看 | 久操精品在线 | 国产成人一区二区三区 | 欧美一级va在线视频免费播放 | 国产亚洲精品一区二区在线播放 | 国产亚洲精品久久综合影院 | 国产成人在线视频网站 | 久久美女精品国产精品亚洲 | 99在线视频网站 | 爱啪网亚洲第一福利网站 | 久久99国产精一区二区三区 | 欧美成人免费香蕉 | 99秒拍福利大尺度视频 | 韩国一级淫片视频免费播放 | 99精品国产在现线免费 | 一国产一级淫片a免费播放口 | 国产精品爱久久久久久久小 | 97久久精品午夜一区二区 |