<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavascriptMVC框架Backbone.js詳解_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 21:27:17
        文檔

        JavascriptMVC框架Backbone.js詳解_javascript技巧

        JavascriptMVC框架Backbone.js詳解_javascript技巧:隨著JavaScript程序變得越來越復雜,往往需要一個團隊協作開發,這時代碼的模塊化和組織規范就變得異常重要了。MVC模式就是代碼組織的經典模式。 (……MVC介紹。) (1)Model Model表示數據層,也就是程序需要的數據源,通常使用JSON格式表示。 (2)
        推薦度:
        導讀JavascriptMVC框架Backbone.js詳解_javascript技巧:隨著JavaScript程序變得越來越復雜,往往需要一個團隊協作開發,這時代碼的模塊化和組織規范就變得異常重要了。MVC模式就是代碼組織的經典模式。 (……MVC介紹。) (1)Model Model表示數據層,也就是程序需要的數據源,通常使用JSON格式表示。 (2)

        隨著JavaScript程序變得越來越復雜,往往需要一個團隊協作開發,這時代碼的模塊化和組織規范就變得異常重要了。MVC模式就是代碼組織的經典模式。

        (……MVC介紹。)

        (1)Model

        Model表示數據層,也就是程序需要的數據源,通常使用JSON格式表示。

        (2)View

        View表示表現層,也就是用戶界面,對于網頁來說,就是用戶看到的網頁HTML代碼。

        (3)Controller

        Controller表示控制層,用來對原始數據(Model)進行加工,傳送到View。

        由于網頁編程不同于客戶端編程,在MVC的基礎上,JavaScript社區產生了各種變體框架MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel)等等,有人就把所有這一類框架的各種模式統稱為MV*。

        框架的優點在于合理組織代碼、便于團隊合作和未來的維護,缺點在于有一定的學習成本,且限制你只能采取它的寫法。

        Backbone的加載

        代碼如下:

        在父視圖中可以調用子視圖。下面就是一種寫法。
        代碼如下:
        render : function (){
        this.$el.html(this.template());
        this.child = new Child();
        this.child.appendTo($.('.container-placeholder').render();
        }

        Backbone.Router

        Router是Backbone提供的路由對象,用來將用戶請求的網址與后端的處理函數一一對應。

        首先,新定義一個Router類。
        代碼如下:
        Router = Backbone.Router.extend({
        routes: {
        }
        });

        routes屬性

        Backbone.Router對象中,最重要的就是routes屬性。它用來設置路徑的處理方法。

        routes屬性是一個對象,它的每個成員就代表一個路徑處理規則,鍵名為路徑規則,鍵值為處理方法。

        如果鍵名為空字符串,就代表根路徑。
        代碼如下:
        routes: {
        '': 'phonesIndex',
        },
        phonesIndex: function () {
        new PhonesIndexView({ el: 'section#main' });
        }
        星號代表任意路徑,可以設置路徑參數,捕獲具體的路徑值。
        代碼如下:
        var AppRouter = Backbone.Router.extend({
        routes: {
        "*actions": "defaultRoute"
        }
        });
        var app_router = new AppRouter;
        app_router.on('route:defaultRoute', function(actions) {
        console.log(actions);
        })
        上面代碼中,根路徑后面的參數,都會被捕獲,傳入回調函數。

        路徑規則的寫法。
        代碼如下:
        var myrouter = Backbone.Router.extend({
        routes: {
        "help": "help",
        "search/:query": "search"
        },
        help: function() {
        ...
        },
        search: function(query) {
        ...
        }
        });
        routes: {
        "help/:page": "help",
        "download/*path": "download",
        "folder/:name": "openFolder",
        "folder/:name-:mode": "openFolder"
        }
        router.on("route:help", function(page) {
        ...
        });

        Backbone.history

        設置了router以后,就可以啟動應用程序。Backbone.history對象用來監控url的變化。
        代碼如下:
        App = new Router();
        $(document).ready(function () {
        Backbone.history.start({ pushState: true });
        });

        打開pushState方法。如果應用程序不在根目錄,就需要指定根目錄。
        代碼如下:
        Backbone.history.start({pushState: true, root: "/public/search/"})
        Backbone.Model

        Model代表單個的對象實體。
        代碼如下:
        var User = Backbone.Model.extend({
        defaults: {
        name: '',
        email: ''
        }
        });
        var user = new User();

        上面代碼使用extend方法,生成了一個User類,它代表model的模板。然后,使用new命令,生成一個Model的實例。defaults屬性用來設置默認屬性,上面代碼表示user對象默認有name和email兩個屬性,它們的值都等于空字符串。

        生成實例時,可以提供各個屬性的具體值。
        代碼如下:
        var user = new User ({
        id: 1,
        name: 'name',
        email: 'name@email.com'
        });

        上面代碼在生成實例時,提供了各個屬性的具體值。

        idAttribute屬性

        Model實例必須有一個屬性,作為區分其他實例的主鍵。這個屬性的名稱,由idAttribute屬性設定,一般是設為id。
        代碼如下:
        var Music = Backbone.Model.extend({
        idAttribute: 'id'
        });

        get方法

        get方法用于返回Model實例的某個屬性的值。
        代碼如下:
        var user = new User({ name: "name", age: 24});
        var age = user.get("age"); // 24
        var name = user.get("name"); // "name"

        set方法

        set方法用于設置Model實例的某個屬性的值。
        代碼如下:
        var User = Backbone.Model.extend({
        buy: function(newCarsName){
        this.set({car: newCarsName });
        }
        });
        var user = new User({name: 'BMW',model:'i8',type:'car'});
        user.buy('Porsche');
        var car = user.get("car"); // ‘Porsche'

        on方法

        on方法用于監聽對象的變化。
        代碼如下:
        var user = new User({name: 'BMW',model:'i8'});
        user.on("change:name", function(model){
        var name = model.get("name"); // "Porsche"
        console.log("Changed my car's name to " + name);
        });
        user.set({name: 'Porsche'});
        // Changed my car's name to Porsche

        上面代碼中的on方法用于監聽事件,“change:name”表示name屬性發生變化。

        urlroot屬性

        該屬性用于指定服務器端對model進行操作的路徑。
        代碼如下:
        var User = Backbone.Model.extend({
        urlRoot: '/user'
        });

        上面代碼指定,服務器對應該Model的路徑為/user。

        fetch事件

        fetch事件用于從服務器取出Model。
        代碼如下:
        var user = new User ({id: 1});
        user.fetch({
        success: function (user){
        console.log(user.toJSON());
        }
        })
        上面代碼中,user實例含有id屬性(值為1),fetch方法使用HTTP動詞GET,向網址“/user/1”發出請求,從服務器取出該實例。

        save方法

        save方法用于通知服務器新建或更新Model。

        如果一個Model實例不含有id屬性,則save方法將使用POST方法新建該實例。
        代碼如下:
        var User = Backbone.Model.extend({
        urlRoot: '/user'
        });
        var user = new User ();
        var userDetails = {
        name: 'name',
        email: 'name@email.com'
        };
        user.save(userDetails, {
        success: function (user) {
        console.log(user.toJSON());
        }
        })

        上面代碼先在類中指定Model對應的網址是/user,然后新建一個實例,最后調用save方法。它有兩個參數,第一個是實例對象的具體屬性,第二個參數是一個回調函數對象,設定success事件(保存成功)的回調函數。具體來說,save方法會向/user發出一個POST請求,并將{name: ‘name', email: ‘name@email.com'}作為數據提供。

        如果一個Model實例含有id屬性,則save方法將使用PUT方法更新該實例。
        代碼如下:
        var user = new User ({
        id: 1,
        name: '張三',
        email: 'name@email.com'
        });
        user.save({name: '李四'}, {
        success: function (model) {
        console.log(user.toJSON());
        }
        });
        上面代碼中,對象實例含有id屬性(值為1),save將使用PUT方法向網址“/user/1”發出請求,從而更新該實例。

        destroy方法

        destroy方法用于在服務器上刪除該實例。
        代碼如下:
        var user = new User ({
        id: 1,
        name: 'name',
        email: 'name@email.com'
        });
        user.destroy({
        success: function () {
        console.log('Destroyed');
        }
        });

        上面代碼的destroy方法,將使用HTTP動詞DELETE,向網址“/user/1”發出請求,刪除對應的Model實例。

        Backbone.Collection

        Collection是同一類Model的集合,比如Model是動物,Collection就是動物園;Model是單個的人,Collection就是一家公司。
        代碼如下:
        var Song = Backbone.Model.extend({});
        var Album = Backbone.Collection.extend({
        model: Song
        });

        上面代碼中,Song是Model,Album是Collection,而且Album有一個model屬性等于Song,因此表明Album是Song的集合。

        add方法,remove方法

        Model的實例可以直接放入Collection的實例,也可以用add方法添加。
        代碼如下:
        var song1 = new Song({ id: 1 ,name: "歌名1", artist: "張三" });
        var song2 = new Music ({id: 2,name: "歌名2", artist: "李四" });
        var myAlbum = new Album([song1, song2]);
        var song3 = new Music({ id: 3, name: "歌名3",artist:"趙五" });
        myAlbum.add(song3);

        remove方法用于從Collection實例中移除一個Model實例。
        代碼如下:
        myAlbum.remove(1);

        上面代碼表明,remove方法的參數是model實例的id屬性。

        get方法,set方法

        get方法用于從Collection中獲取指定id的Model實例。
        代碼如下:
        myAlbum.get(2))

        fetch方法

        fetch方法用于從服務器取出Collection數據。
        代碼如下:
        var songs = new Backbone.Collection;
        songs.url = '/songs';
        songs.fetch();

        Backbone.events
        代碼如下:
        var obj = {};
        _.extend(obj, Backbone.Events);
        obj.on("show-message", function(msg) {
        $('#display').text(msg);
        });
        obj.trigger("show-message", "Hello World");

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavascriptMVC框架Backbone.js詳解_javascript技巧

        JavascriptMVC框架Backbone.js詳解_javascript技巧:隨著JavaScript程序變得越來越復雜,往往需要一個團隊協作開發,這時代碼的模塊化和組織規范就變得異常重要了。MVC模式就是代碼組織的經典模式。 (……MVC介紹。) (1)Model Model表示數據層,也就是程序需要的數據源,通常使用JSON格式表示。 (2)
        推薦度:
        標簽: js javascript 模型
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品国产高清在线观看| 666精品国产精品亚洲| 老司机亚洲精品影院在线观看| 国产精品色拉拉免费看| 久久亚洲精品无码AV红樱桃| 亚洲免费在线视频| 亚洲一欧洲中文字幕在线| 毛片a级毛片免费观看品善网| 中文字幕亚洲综合久久综合| 天天摸天天操免费播放小视频 | a毛片在线还看免费网站| 亚洲AV无码精品色午夜果冻不卡 | 国产成人精品日本亚洲专区6| 无码永久免费AV网站| 亚洲乱妇熟女爽到高潮的片| 免费中文字幕在线| 两个人日本WWW免费版| 色婷婷六月亚洲婷婷丁香| 欧美好看的免费电影在线观看| 亚洲欧美熟妇综合久久久久| 亚洲成人一区二区| 在线播放免费人成毛片乱码| va天堂va亚洲va影视中文字幕 | 国产AV无码专区亚洲AV蜜芽| 伊人久久亚洲综合| 成人免费在线看片| 日日摸日日碰夜夜爽亚洲| 亚洲一区二区三区偷拍女厕 | 女人张腿给男人桶视频免费版 | 亚洲特级aaaaaa毛片| 国产高清视频在线免费观看| 国产精品小视频免费无限app| 亚洲综合小说久久另类区| 国产在线98福利播放视频免费| 精品国产呦系列在线观看免费| 亚洲黄色在线观看网站| 日本免费一区尤物| 一级毛片免费播放| 免费看一级一级人妻片| 亚洲国产模特在线播放| 激情97综合亚洲色婷婷五|