電子商務系統的設計與實現(十四):菜單高亮

來源:互聯網
上載者:User

標籤:web前端   菜單高亮   url匹配   

    菜單高亮,幾乎是所有Web網站都需要的一個功能。

   這個功能,說起來,簡單得很,給當前頁面的菜單增加一個高亮樣式,刪除其它菜單的高亮樣式。

   如果只高亮1個頁面的菜單, 太簡單了,但是如果菜單和頁面比較多,就產生了爭議。

   第1種方式:每個頁面單獨高亮。
  
<li id="indexli"><a href="${base}/">首頁</a></li>    <script type="text/javascript">function highlightIndex() {highlight("indexli");}      function highlight(id) {$("#" + id).addClass("liactive");}</script> 



   好處:靈活性非常強。
   壞處:每個頁面都需要增加一個高亮菜單的方法。

第2種方式:通過匹配URL, 唯寫一個高亮菜單的方法。
        
     var url = window.location.pathname;//預設為‘首頁’indexvar current = ‘index‘;if (url.indexOf(‘/service‘) != -1) {current = ‘service‘;} else if (url.indexOf(‘/case‘) != -1) {current = ‘case‘;} else if (url.indexOf(‘/article‘) != -1) {current = ‘article‘;} else if (url.indexOf(‘/code‘) != -1) {current = ‘code‘;} else if (url.indexOf(‘/about‘) != -1) {current = ‘more‘;} else if (url.indexOf(‘/news‘) != -1) {current = ‘more‘;} else if (url.indexOf(‘/help‘) != -1) {current = ‘more‘;} else if (url.indexOf(‘/ask‘) != -1) {current = ‘ask‘;} else {current = ‘index‘;}for (var i = 0; i < navList.length; i++) {if (i == map[current]) {navList[i].className = ‘liactive‘;} else {navList[i].className = ‘‘;}} 


好處:菜單高亮邏輯處理,都在一個地方。
壞處:靈活性很差,對URL有比較嚴格的要求。
簡單說就是,URL的規則越簡單越統一,匹配越簡單。但是URL如果有例外的情況,就必須做特別處理。
當再增加一個URL的時候,需要考慮新增的URL和已有的URL匹配規則是否產生衝突。

-----------------------------------------------------------
上述2種方法我都用過,說說我的感受。
如果URL比較隨意,就在每個具體的頁面單獨調用高亮函數。
如果URL非常統一,可以統一處理。

在實際過程中,比如公司的項目中,關於採用哪種方式就產生了爭議,前端希望統一處理,後端傾向於單獨定製。
後端開發過程中,url比較隨意。前端希望後端把url規範命名,按照菜單的組織來定義url。
而boss則不願意這麼做,他認為菜單和後端url並不需要嚴格統一,菜單和後端業務不應該有過強的依賴。

就我們公司的項目和我自己的項目,我更傾向於每個頁面單獨調用高亮函數,非常靈活。
有的頁面,只需要高亮最頂層菜單,有的頁面,還需要高亮左側的菜單。

至於高亮菜單的邏輯,可以封裝成方法。

無論你增加了多少頁面,每個頁面的高亮,都不會互相影響。
-----------------------------------------------------------
再吐槽幾句,封裝菜單邏輯,每個頁面調用一次高亮函數,分分鐘就搞定的事情。非要去寫統一的URL匹配,花費個把小時,還不能保證完全正確,並且, URL匹配也不能在多重專案之間複用。

團隊開發就經常存在這麼類似的很多問題, 導致開發效率非常低。

so,我認為,一個優秀的全棧式開發工程師,和5個人的小團隊開發效率差不多。 

電子商務系統的設計與實現(十四):菜單高亮

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.