這篇文章主要講解了“Javascript中如何實現(xiàn)前端路由”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Javascript中如何實現(xiàn)前端路由”吧!
創(chuàng)新互聯(lián)專注于垣曲企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),成都做商城網(wǎng)站。垣曲網(wǎng)站建設(shè)公司,為垣曲等地區(qū)提供建站服務(wù)。全流程定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
頁面中有一個導(dǎo)航菜單ul,和一個p#result用來顯示結(jié)果,當(dāng)點擊導(dǎo)航菜單時,#result中會顯示不同的結(jié)果內(nèi)容。
說一下前端路由實現(xiàn)的簡要原理,以 hash 形式(也可以使用 History API 來處理)為例,當(dāng) url 的 hash 發(fā)生變化時,觸發(fā) hashchange 注冊的回調(diào),回調(diào)中去進行不同的操作,進行不同的內(nèi)容的展示。
function Router(){ this.routes = {}; this.curUrl = ''; this.route = function(path, callback){ this.routes[path] = callback || function(){}; }; this.refresh = function(){ this.curUrl = location.hash.slice(1) || '/'; this.routes[this.curUrl](); }; this.init = function(){ window.addEventListener('load', this.refresh.bind(this), false); window.addEventListener('hashchange', this.refresh.bind(this), false); } }
上面代碼中路由系統(tǒng)Router對象實現(xiàn),主要提供三個方法:
init 監(jiān)聽瀏覽器 url hash 更新事件。
route 存儲路由更新時的回調(diào)到回調(diào)數(shù)組routes中,回調(diào)函數(shù)將負責(zé)對頁面的更新。
refresh 執(zhí)行當(dāng)前url對應(yīng)的回調(diào)函數(shù),更新頁面。
Router調(diào)用方式如下:點擊觸發(fā) url 的 hash 改變,并對應(yīng)地更新內(nèi)容,運行后你會發(fā)現(xiàn)每次點擊菜單時,#result中會變換背景色和內(nèi)容。
var R = new Router(); R.init(); var res = document.getElementById('result'); R.route('/', function() { res.style.background = 'blue'; res.innerHTML = '這是首頁'; }); R.route('/product', function() { res.style.background = 'orange'; res.innerHTML = '這是產(chǎn)品頁'; }); R.route('/server', function() { res.style.background = 'black'; res.innerHTML = '這是服務(wù)頁'; });
感謝各位的閱讀,以上就是“Javascript中如何實現(xiàn)前端路由”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Javascript中如何實現(xiàn)前端路由這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!