成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

avalon 單頁(yè)面程序 (種子工程)之二 按需加載和路由系統(tǒng)

fanux / 1365人閱讀

摘要:的成功離開(kāi)不這三個(gè)東西,分層架構(gòu),路由系統(tǒng),儲(chǔ)存系統(tǒng)。分層架構(gòu)是我們組織復(fù)雜代碼的關(guān)鍵,路由系統(tǒng)是將多個(gè)頁(yè)面壓縮在一個(gè)頁(yè)面的關(guān)鍵。在這個(gè)種子工程中,我都調(diào)用了同一個(gè)方法,就比較適合目錄動(dòng)態(tài)生成,需要按需調(diào)用不同的頁(yè)面的情況。

SPA的成功離開(kāi)不這三個(gè)東西,分層架構(gòu),路由系統(tǒng),儲(chǔ)存系統(tǒng)。分層架構(gòu)是我們組織復(fù)雜代碼的關(guān)鍵,路由系統(tǒng)是將多個(gè)頁(yè)面壓縮在一個(gè)頁(yè)面的關(guān)鍵。 其中avalon路由用到了兩個(gè)多帶帶獨(dú)立出來(lái)的類庫(kù) mmRouter 和 mmHistory。

路由有什么作用呢?

路由其實(shí)可以理解成 網(wǎng)站上不同的網(wǎng)頁(yè)地址, 如果不是SPA的網(wǎng)站, 瀏覽器的前進(jìn)后退,鏈接到了一個(gè)新的頁(yè)面,整個(gè)頁(yè)面重新刷新; 但如果是SPA網(wǎng)站,因?yàn)檎麄€(gè)頁(yè)面是不需要全部刷新的,網(wǎng)站的頁(yè)面也停留在當(dāng)前頁(yè)面,那么怎么解決瀏覽器的前進(jìn)后退問(wèn)題呢, 怎么解決需要定位到特定網(wǎng)頁(yè)地址的問(wèn)題呢,所以SPA就引入了路由系統(tǒng)。 下面我們看看路由是怎么實(shí)現(xiàn)的:

引入路由 用requriejs 引入avalon路由

mmRouter和mmHistory地址:https://github.com/RubyLouvre/mmRouter
用requirejs配置mmRouter和mmHistory在網(wǎng)站中的地址

require.config({//第一塊,配置
    baseUrl: "",
    paths: {
        avalon: ["js/avalon/avalon"],//必須修改源碼,禁用自帶加載器,或直接刪提AMD加載器模塊
        mmHistory: "js/avalon/mmHistory",
        mmRouter: "js/avalon/mmRouter",
    }
});
avalon路由代碼

"/sub1/index"為路由地址, 當(dāng)用戶在頁(yè)面點(diǎn)擊這個(gè)地址的時(shí)候,觸發(fā)callback回調(diào),每個(gè)路由可以多帶帶定義一個(gè)callback方法。在這個(gè)種子工程中,我都調(diào)用了同一個(gè)callback方法,就比較適合目錄動(dòng)態(tài)生成,需要按需調(diào)用不同的頁(yè)面的情況。 在這里執(zhí)行了callback回調(diào)之后, console.log(this.path)輸出了路徑的地址

//requirejs引用mmRouter
require(["mmRouter"],function(mmRouter){
    avalon.log("引入avalon");

    var model = avalon.define({
        $id: "root",
        name: "tangolivesky"
    })

    //路由的導(dǎo)航回調(diào)
    function callback() {
        console.log(this.path);
    }

    /*avalon路由方法 "/sub1/index"為路由地址, 當(dāng)用戶在頁(yè)面點(diǎn)擊這個(gè)地址的時(shí)候,觸發(fā)callback回調(diào),
    每個(gè)路由可以多帶帶定義一個(gè)callback方法。在這個(gè)種子工程中,我都調(diào)用了同一個(gè)callback方法,就比較適合
    目錄動(dòng)態(tài)生成,需要按需調(diào)用不同的頁(yè)面的情況*/
    avalon.router.get("/sub1/index", callback)
    avalon.router.get("/sub2/index", callback)
    avalon.history.start({
        basepath: "/avalon"
    })
    avalon.scan()
});

html頁(yè)面:
結(jié)構(gòu)比較簡(jiǎn)單,我們就定義了兩個(gè)a 標(biāo)簽,地址前面加上#!, 這個(gè)是avalon特有的寫(xiě)法,angularjs是#




    
    avalon工程
    


    


執(zhí)行結(jié)果

當(dāng)點(diǎn)擊導(dǎo)航1,或者導(dǎo)航2,分別在瀏覽器 控制臺(tái)中輸出了/sub1/index和 /sub2/index

按需加載js和子頁(yè)面html模板

一個(gè)項(xiàng)目都會(huì)由好多個(gè)子頁(yè)面和js組成, 就單頁(yè)面程序來(lái)講, 你可以把js進(jìn)行合并,然后按需加載部分子頁(yè)面html. 也可以按需加載js和html . 我在這里用的是按需加載js, 再由js中的requirejs text 類庫(kù)來(lái)加載html文件。

index.html增加子頁(yè)面替換標(biāo)簽

在首頁(yè)index.html中增加這段代碼

, avalon中ms-include-src是用來(lái)加載模板用的




    
    avalon工程
    


    

    
修改main.js中導(dǎo)航回調(diào)函數(shù)
    //導(dǎo)航回調(diào)
    function callback() {
        var jspath = "modules"; //這里改成您自己的網(wǎng)站地址 ,這個(gè)是js路徑的變量
        var pagepath = "";       //這個(gè)是網(wǎng)頁(yè)的變量

        //這段代碼的作用是按照路由path 得到需要加載的js路徑
        var paths = this.path.split("/");
        for (var i = 0; i < paths.length; i++) {
            if (paths[i] != "") {
                jspath += "/" + paths[i];
                pagepath += "_" + paths[i];
            }
        }

        //console.log(jspath);
        //console.log(pagepath);

        require([jspath], function (page) {
            //這段代碼的作用是把pagepath變量 賦給root controller下面的content
            avalon.vmodels.root.content = pagepath;
        });
    }
修改modules/sub1 下面的index.js

同理修改 modules/sub2下面的index.js

sub1下面index.js

define(["avalon", "text!./index.html",], function (avalon,_sub1_index) {
    avalon.templateCache._sub1_index = _sub1_index
})

sub2下面index.js

define(["avalon", "text!./index.html",], function (avalon,_sub2_index) {
    avalon.templateCache._sub2_index = _sub2_index
})

sub1下面index.html

第一個(gè)頁(yè)面
執(zhí)行結(jié)果

分別點(diǎn)擊導(dǎo)航1 和 導(dǎo)航2, 按需加載了sub1的index.js、index.html 和 sub2的index.js、index.html

例子我放在了github中 https://github.com/tangolivesky/avalonSPA_Sample

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/78582.html

相關(guān)文章

  • avalon 頁(yè)面程序種子工程)之一 用requirejs引入avalon

    摘要:現(xiàn)在微軟終于痛定思痛決定放棄了不支持的安全更新,對(duì)我們前端來(lái)說(shuō),真的是重大利好啊言歸正傳,這篇文章的目的就是把怎么用構(gòu)建一個(gè)單頁(yè)面程序介紹以下,是對(duì)自己的一個(gè)總結(jié),也喜歡對(duì)大家有一定的借鑒作用,寫(xiě)的不好不對(duì)的地方希望大家多評(píng)論評(píng)論謝謝。 這篇文章是寫(xiě)在公司項(xiàng)目結(jié)束之后的,因?yàn)槲覀€(gè)人不太會(huì)把沒(méi)有實(shí)踐過(guò)的東西寫(xiě)出來(lái),實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)么,用的怎么樣,好不好用,在成熟實(shí)踐過(guò)的項(xiàng)目上能體...

    solocoder 評(píng)論0 收藏0
  • 【轉(zhuǎn)】如何從前端工程師到前端架構(gòu)師

    摘要:之前人家寫(xiě)過(guò)的彈出層,富文本編輯器,語(yǔ)法高亮插件你一套也不能少,這樣你才能接觸到之前碰不到的原生與知識(shí)點(diǎn)。通過(guò)引入雙向綁定與分層架構(gòu),完全脫離進(jìn)行前端開(kāi)發(fā)。 原文:http://www.cnblogs.com/rubylouvre/p/3658441.html 作者:司徒正美 偶的《javascript框架設(shè)計(jì)》終于出版 歷時(shí)兩年多,我的書(shū)終于付梓出版了。應(yīng)各方面的要求,寫(xiě)軟文一篇...

    ShowerSun 評(píng)論0 收藏0
  • 發(fā)布基于 Avalon2 的 UI 組件庫(kù)與 SPA 腳手架

    摘要:使用前端框架開(kāi)發(fā)信息管理系統(tǒng)有三年了,最近半年花了些心血將這三年的積累凝聚起來(lái),誕生了兩個(gè)開(kāi)源項(xiàng)目和。,中文名安逸,是基于的端組件庫(kù)。有用于數(shù)據(jù)展示的組件用于數(shù)據(jù)提交的組件用于消息提示的與組件組件和用戶輸入組件等,并且還在不斷完善中。 使用 Avalon 前端框架開(kāi)發(fā)信息管理系統(tǒng)有三年了,最近半年花了些心血將這三年的積累凝聚起來(lái),誕生了兩個(gè)開(kāi)源項(xiàng)目 ms-bus 和 ane。 ms-b...

    Sike 評(píng)論0 收藏0
  • webpack2正式版

    摘要:正式版正式版,簡(jiǎn)單方便的構(gòu)建單頁(yè)和多頁(yè)用用。下一步是完善單元測(cè)試,代碼覆蓋率報(bào)告如果大家有更好的想法及建議請(qǐng)?zhí)?。開(kāi)啟測(cè)試并生成覆蓋率報(bào)告。頁(yè)面的其他資源文件,通過(guò)引入單元測(cè)試日后調(diào)整,待開(kāi)發(fā)樣式使用可添加替換預(yù)處理。 webpack2正式版 webpack2正式版,簡(jiǎn)單方便的構(gòu)建單頁(yè)和多頁(yè)用用。(啟用tree-shaking新技術(shù))地址:avalon-webpack-start 這個(gè)啟...

    WilsonLiu95 評(píng)論0 收藏0
  • webpack+vue項(xiàng)目實(shí)戰(zhàn)(三,配置功能操作頁(yè)組件的按需加載

    摘要:但是實(shí)際上,回款管理和開(kāi)票管理的組件文件也是加載了。所以下面引用按需加載來(lái)處理。是不是小很多了,然后和是按需加載的,就是需要的時(shí)候才加載。 1.前言 上篇文章(webpack+vue項(xiàng)目實(shí)戰(zhàn)(二,開(kāi)發(fā)管理系統(tǒng)主頁(yè)面)),實(shí)現(xiàn)了,側(cè)邊欄的一個(gè)操作,點(diǎn)擊側(cè)邊欄的一些操作,最重要的就是路由的切換??戳松弦黄幕锇橐膊浑y發(fā)現(xiàn),除了點(diǎn)擊側(cè)邊欄‘首頁(yè)’之外,點(diǎn)擊其它的都是白色的一片。原因我想大家都...

    endless_road 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<