Барои тезонидани ҳамкорӣ Backbone.js -ро истифода баред

Муаллиф: Monica Porter
Санаи Таъсис: 13 Март 2021
Навсозӣ: 15 Май 2024
Anonim
Барои тезонидани ҳамкорӣ Backbone.js -ро истифода баред - Эҷодӣ
Барои тезонидани ҳамкорӣ Backbone.js -ро истифода баред - Эҷодӣ

Мундариҷа

Агар шумо хоҳед, ки ба зудӣ як асбоби каме JavaScript созед, шумо эҳтимол дар бораи истифодаи чаҳорчӯба фикр намекунед. Ба осонӣ ба ҳам задани баъзе коди jQuery ба ҷои насб кардан ва омӯхтани чаҳорчӯбаи нав осонтар аст, дуруст аст? Нодуруст, Backbone.js як чаҳорчӯбаи ширеши супервазн аст, ки ба монанди JavaScript-и кӯҳнаи оддие мебошад, ки ҳангоми навиштан истифода мешуд.

Мо бисёр прототипҳои статикиро дар ин ҷо дар ZURB анҷом медиҳем, зеро ба мо маъқул аст, ки саҳифаҳоро бидуни навиштани ягон рамзи пуштибонӣ клик кунем. Аксар вақт, мо тасвирҳои хокистарӣ бо хокистарӣ афтондем ё баъзан барои ҷустуҷӯи тасвирҳои намуна ба ҷустуҷӯи Flickr мерафтем, то ба мо тасаввур кунем, ки чӣ чизҳо метавонанд дар лоиҳаи ниҳоӣ ворид шаванд. Ин то як рӯзи ҷумъаи ҷодугарӣ, вақте ки мо қарор додем, ки навиштани чанде JavaScript барои ҳалли мушкилоти мо олӣ аст. Мо мехостем, ки аксҳоро дар Flickr мустақиман аз худи тасвирҳои ҷойнишин ҷустуҷӯ ва интихоб карда тавонем. Мо онро FlickrBomb меномем ва ин ҳикоятест, ки мо онро бо истифода аз Backbone.js сохтаем.


Пеш аз хондан тавсия дода мешавад, ки ба FlickrBomb зуд назар андозед. Ин яке аз он намуди "як клик ба ҳазор калима аст". Ба пеш, мо интизор мешавем.

Дар ин рӯзҳо бисёр блокҳои JavaScript мавҷуданд, SproutCore, JavaScriptMVC, Spine, Sammy, Knockout. Аммо ба мо Backbone.js барои ин лоиҳаи мушаххас бо чанд сабабҳои гуногун писанд омад:

1. Ин сабук аст (дарвоқеъ 100% фарбеҳ нест)

  • дар вазн, бо версияи охирини бастабандишуда тақрибан 4.6kb
  • дар рамз, ки каме бештар аз 1000 сатр рамз аст, пайравӣ аз стек ба дохили дохил бе ақли худро гум кардан душвор нест

2. Ин ба JavaScript монанд аст

  • зеро он JavaScript аст, ин аст ва он чизе
  • он jQuery -ро истифода мебарад, ки онро ҳатто бибии шумо имрӯзҳо медонад

3. Истодагарии супер содда


  • берун аз қуттӣ он маълумотро ба пуштибонӣ нигоҳ медорад (тавассути REST), аммо бо партофтани як плагини ягона ба ҷои он ба захираи маҳаллӣ сарфа карда мешавад
  • азбаски он API-и доимиро бартараф мекунад, мо метавонистем онро бо бекор кардани плагини маҳаллии нигаҳдорӣ ба REST backend монем.

Биёед он вақт оғоз кунем

Азбаски Backbone.js танҳо JavaScript аст, мо бояд танҳо онро дар якҷоягӣ бо Underscore.js дар саҳифа дохил кунем. jQuery вобастагии шадид барои Backbone нест, аммо мо онро истифода мебарем, то онро дар ин ҷо дохил кунем. Мо инчунин плагини нигаҳдории маҳаллиро пайваст хоҳем кард, зеро мо намехоҳем бо ташкили backend душворӣ кашем. Аҳамият диҳед, ки бевосита файлҳоро дар ин ҷо барои соддагӣ пайванд мекарданд, аммо шумо бояд ҳамеша дороиҳои худро дар истеҳсолот ҷойгир кунед.

script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"> / script> script src = "http://documentcloud.github.com/backbone/ backbone-min.js "> / script> script src =" http://documentcloud.github.com/underscore/underscore-min.js "> / script> script src =" https://raw.github.com/ jeromegn / Backbone.localStorage / master / backbone.localStorage-min.js "> / script>

Ҳама рамзҳои зерин дар ин мақола барои барномаи мо хосанд, бинобар ин мо метавонем онро ба файли app.js дохил кунем, ё танҳо дар сатр, агар ин чизи шумо бошад. Танҳо фаромӯш накунед, ки онро пас аз Backbone дохил кунед. Магистраль имкон медиҳад, ки қисмҳои абстрактии аризаи мо, онҳоро ҳам модулӣ созанд ва ҳам барои дигарон хонданӣ шаванд. Барои тасвири беҳтарини ин абстраксия, тарҳи FlickrBomb-ро аз поён то боло, аз моделҳо сар карда, то бо нуқтаи назар, мефаҳмондем.


Модели якуми мо

Вазифаи аввалине, ки бояд ҳал мешуд, кашидани аксҳо аз Flickr буд. Моделсозии FlickrImage дар сутунмӯҳра ба қадри кофӣ содда аст, мо як модели навро бо номи FlickrImage эҷод мекунем ва баъзе усулҳоро илова мекунем, ки ба мо ангуштони ҳаҷмҳои гуногун мерасонанд.

var FlickrImage = Backbone.Model.extend ({fullsize_url: function () {return this.image_url ('medium');}, thumb_url: function () {return this.image_url ('square');}, image_url: function ( size) {var size_code; switch (size) {case 'square': size_code = '_s'; break; // 75x75 case 'medium': size_code = '_z'; break; // 640 дар парвандаи дарозтарин дар канори 'калон ': size_code =' _b '; break; // 1024 дар тарафи дарозтарин бо нобаёнӣ: size_code =' ';} return "http: // farm" + this.get (' farm ') + ".static.flickr.com / "+ this.get ('server') +" / "+ this.get ('id') +" _ "+ this.get ('secret') + size_code +" .webp ";}})

Моделҳои Backbone ин объектҳое мебошанд, ки мондан мумкин аст ва баъзе функсияҳо бо онҳо алоқаманд мебошанд, ба монанди моделҳои дар чаҳорчӯби дигари MVC. Қисми ҷодугарии моделҳои Backbone аз он иборат аст, ки мо метавонем рӯйдодҳоро ба атрибутҳо пайвандем, то вақте ки ин сифат тағир ёбад, мо метавонем назари худро барои инъикоси он навсозӣ кунем. Аммо мо каме аз худамон пеш гузашта истодаем.

Вақте ки мо аксҳоро аз Flickr мекашем, мо маълумоти кофӣ барои сохтани URL барои ҳама андозаҳо мегирем. Аммо ин маҷлис ба ихтиёри мо гузошта шудааст, бинобар ин мо функсияи .image_url () -ро амалӣ кардем, ки параметри андоза мегирад ва пайванди ҷамъиятиро бармегардонад. Азбаски ин модели магистралӣ аст, мо метавонем this.get () -ро барои дастрасӣ ба атрибутҳо дар модел истифода барем. Пас, бо ин модел, мо метавонем дар ҷойҳои дигар дар кодекси зерин кор кунем, то URL-и тасвири Flickr-ро ба даст орем.

flickrImage.image_url ('калон')

Хеле кӯтоҳ, ҳа? Азбаски ин модел барои барномаи мо хос аст, мо баъзе вазифаҳои бастабандиро барои андозаи пурра ва андозаи тасвирҳо илова мекунем.

Маҷмӯаи тасвирҳо

FlickrBomb бо коллексияҳои тасвирҳо сарукор мекунад, на тасвирҳои ягона ва Backbone роҳи мувофиқ барои моделсозӣ дорад. Маҷмӯаи мувофиқ ном дорад, ки мо онро барои гурӯҳбандии тасвирҳои Flickr барои як ҷойнишини ягона истифода хоҳем кард.

var FlickrImages = Backbone.Collection.extend ({model: FlickrImage, key: flickrbombAPIkey, page: 1, fetch: function (keywords, муваффақият) {var self = this; муваффақият = муваффақият || $ .noop; this.keywords = калимаҳои калидӣ || ин калидвожаҳо; $ .ajax ({url: 'http://api.flickr.com/services/rest/', маълумот: {api_key: self.key, format: 'json', method: 'flickr. photos.search ', барчаспҳо: this.keywords, per_page: 9, саҳифа: this.page, иҷозатнома: flickrbombLicenseTypes}, dataType:' jsonp ', jsonp:' jsoncallback ', муваффақият: function (response) {self.add (response .photos.photo); муваффақият ();}});}, nextPage: function (бозхонд) {this.page + = 1; this.remove (this.models); this.fetch (null, callback);}, prevPage: function (callback) {if (this.page> 1) {this.page - = 1;} this.remove (this.models); this.fetch (null, callback);}});

Дар ин ҷо якчанд чизро қайд кардан лозим аст. Аввалан, модел атрибут ба коллексияҳо мегӯяд, ки кадом намуди он ҷамъ оварда мешавад. Мо инчунин баъзе атрибутҳоро дорем, ки барои истифода дертар оғоз кардем: калиди калиди Flickr API аст, шумо мехоҳед flickrbombAPIkey -ро бо сатри калиди Flickr API -и худ иваз кунед. Гирифтани калиди Flickr API ройгон ва осон аст, танҳо ба ин истинод муроҷиат кунед: www.flickr.com/services/api/misc.api_keys.html. Хусусияти саҳифа саҳифаи ҷории аксҳои Flickr мебошад, ки мо дар он қарор дорем.

Усули калон дар ин ҷо .fetch () аст, ки тафсилоти кашидани аксҳоро аз Flickr API реферат мекунад. Барои пешгирӣ кардани мушкилот бо дархостҳои байнисоҳавӣ, мо JSONP-ро истифода мебарем, ки ҳам Flickr API ва ҳам jQuery дастгирӣ мекунанд. Параметрҳои дигаре, ки мо ба API мегузарем, бояд худ тавзеҳ бошанд. Функсияҳои Backbone, ки дар инҷо даъват карда мешаванд, таваҷҷӯҳи хоса доранд. Дар бозгашти муваффақ, ки мо .add () -ро истифода мебарем, вазифае, ки массиви атрибутҳои моделро мегирад, аз он атрибутҳо намунаҳои моделӣ месозад ва сипас онҳоро ба ҷамъоварӣ илова мекунад.

Функсияҳои .nextPage () ва .prevPage () аввал сафҳаро, ки мехоҳем намоиш диҳем, иваз мекунанд,
истифодаи функсияи ҷамъоварӣ .remove () -ро истифода баред, то ҳамаи моделҳои мавҷудбударо аз
ҷамъоварӣ кунед ва пас ба овардан занг занед, то аксҳоро барои саҳифаи ҷорӣ гиред (ки мо танҳо)
иваз карда шуд).

FlickrBombImage

Бо роҳи бозгашт ба мо, боз як модели дигар лозим аст, то тасвири ҷойнишинро, ки аз маҷмӯаи FlickrImages ва FlickrImage ҷории интихобшуда иборат аст, пешниҳод кунем. Мо ин моделро FlickrBombImage меномем.

var localStorage = (support_local_storage ())? Store нав ("flickrBombImages"): null; var FlickrBombImage = Backbone.Model.extend ({localStorage: localStorage, initialize: function () {_.bindAll (this, 'loadFirstImage'); this.flickrImages = FlickrImages (); this.flickrImages.fetch (this.get ('калимаҳои калидӣ'), this.loadFirstImage); this.set (id: this.get ("id")); this.bind ('change: src', this.changeSrc) ;}, changeSrc: function () {this.save ();}, loadFirstImage: function () {if (this.get ('src') === undefined) {this.set ({src: this.flickrImages). аввал (). image_url ()});}}});

Азбаски ин модел барои пайгирии тасвири ҷории интихобшуда дар байни бори саҳифа масъул аст, он бояд донад, ки кадом мағозаи мағозаи маҳаллӣ бояд истифода шавад.Сатри аввал кафолати дастгирии localstorage -ро таъмин мекунад ва он гоҳ мағозаро эҷод хоҳем кард, то тасвири интихобшударо нигоҳ дорем.

Бунёдӣ ба мо имкон медиҳад, ки функсияи .initialize () -ро муайян кунем, ки ҳангоми офаридани намунаи модел даъват карда мешавад. Мо ин функсияро дар FlickrBombImage барои эҷоди як мисоли нави маҷмӯаи FlickrImages истифода мебарем, калимаҳои калидии барои ин тасвир истифодашавандаро мегузаронем ва пас тасвирҳоро аз Flickr меорем.

Функсияи .loadFirstImage () ҳамчун баргардонидани занг барои иҷро ҳангоми қабули тасвирҳо аз Flickr қабул шудааст. Тавре ки шумо эҳтимолан тасаввур карда метавонед, ин функсия тасвири ҷориро аввалин дар коллексия аз Flickr таъин мекунад. Агар тасвири ҷорӣ аллакай танзим шуда бошад, ин корро намекунад.

Мо инчунин ҳангоми бозгашти атрибути src ин модел бозгашти хусусиятҳои Backbone -ро барои оташ задани функсияи .changeSrc () истифода хоҳем кард. Ҳамаи ин бозгаштан ин даъват .save (), функсияи модели Backbone мебошад, ки атрибутҳои моделро ба ҳама қабати мағоза иҷро мекунад (дар ҳолати мо localstore). Ҳамин тавр, вақте ки тасвири интихобшуда тағир дода мешавад, он фавран нигоҳ дошта мешавад.

Қабати Намоиш

Ҳоло, ки мо ҳамаи рамзҳои backend (хуб, backend backend) -ро навиштаем, мо метавонем Дидаҳоро ҷамъ кунем. Нигоҳҳо дар Backbone назарҳо дар дигар чаҳорчӯбаи анъанавии MVC каме фарқ мекунанд. Гарчанде ки намоиш одатан танҳо ба презентатсия дахл дорад, Намуди Backbone барои рафтор низ масъул аст. Ин маънои онро дорад, ки Назари шумо на танҳо муайян мекунад, ки чизе чӣ гуна аст, балки инчунин ҳангоми кор бо он бояд чӣ кор кунад.

Намоиш одатан ба баъзе маълумотҳо пайваст карда мешавад (аммо на ҳамеша) ва аз се марҳила мегузарад, то аз он маълумот нишонаи муаррифӣ эҷод кунад:

1. Объекти View ибтидоӣ карда шуда, унсури холӣ сохта мешавад.
2. Функсияи тасвиркунӣ номида мешавад, ки нишонаеро барои намуд бо гузоштани он ба унсури дар қадами қаблӣ сохташуда тавлид мекунад.
3. Элемент ба DOM замима карда мешавад.

Ин метавонад як кори зиёде барои эҷоди баъзе аломатҳо ба назар расад ва мо ҳатто ба қисми рафтори View нестем, аммо ин муҳим аст ва аз ин сабаб аст. Ҳар вақте, ки шумо унсурҳои дар DOM ҷойгиршударо тағир медиҳед, шумо чизе меномед, ки ҷараёни браузер ном дорад. Reflow ин браузер ҳисоб кардани он аст, ки чӣ гуна ҳама чиз дар саҳифа ҷойгир аст. Бозгашти браузер метавонад барои иҷрои кораш бад бошад, агар онро дар сурати кашолакунӣ ё тағир додани андозаи ҳодисае даъват кунанд, ки дар фосилаи хеле кӯтоҳ оташ гирад, аммо бадтараш, онҳо сустанд. Ҳангоми коркарди мураккаби саҳифа, шумо воқеан мебинед, ки унсурҳо ба саҳифа илова карда мешаванд ва ҷойгузини унсурҳо ба амал омадааст. Пас аз намунаи ибтидоӣ, нишон додан ва замима кардани Backbone, шумо як ҷараёни ҷориро кафолат медиҳед ва тағиротҳо дар саҳифа сарфи назар аз мураккабии сӯистеъмоли элементҳо фаврӣ хоҳанд буд.

FlickrBombImageView

var FlickrBombImageView = Backbone.View.extend ({tagName: "div", className: "flickrbombContainer", lock: false, template: _.template ('div id = "% = this.image.id.replace (" ", "")%> "... / div> '), initialize: function (options) {_.bindAll (this,' addImage ',' updateSrc ',' setDimentions ',' updateDimentions '); var keywords = options. img.attr ('src') .replace ('flickr: //', ''); ин. $ el = $ (this.el); this.image = new FlickrBombImage ({keywords: keywords, id: options. img.attr ('id')}); this.image.flickrImages.bind ('add', this.addImage); this.image.bind ('change: src', this.updateSrc);}, рӯйдодҳо: { "click .setupIcon": "clickSetup", "click .flickrbombFlyout a.photo": "selectImage", "click .flickrbombFlyout a.next": "nextFlickrPhotos", "click .flickrbombFlyout a.prev": "prevFlickrPhotos"}, render: function () {$ (this.el) .html (this.template ()); this.image.fetch (); this.resize (); инро баргардонед;}, ...});

Функсияҳои ин назар барои кӯтоҳӣ бароварда шудаанд, коди сарчашма пурра дар GitHub дастрас аст: github.com/zurb/flickrbomb

Дар болои View, мо як ҷуфти Backbone атрибутҳои хос дорем. tagName ва className барои муайян кардани барчасп ва синфе, ки ба унсури ин View истифода мешавад, истифода мешаванд. Дар хотир доред, ки қадами якуми офариниши View ин объект сохтан аст ва азбаски он офаринишро Backbone идора мекунад, мо бояд унсур ва синфро муайян кунем. Дар хотир доред, ки Backbone дорои пешфарзҳои оқилона аст; агар мо ин атрибутҳоро сарфи назар кунем, бо нобаёнӣ див истифода мешавад ва агар шумо ягонтои онро муайян накунед, ягон синф татбиқ карда намешавад.

Хусусияти шаблон як конвенсия аст, аммо талаб карда намешавад. Мо онро дар ин ҷо барои мушаххас кардани функсияи қолаби JavaScript истифода мебарем, ки барои эҷоди нишонаҳои худ барои ин намуд истифода хоҳем кард. Мо функсияи _.template () - ро, ки ба Underscore.js дохил карда шудааст, истифода мебарем, аммо шумо метавонед истифода баред, ки кадом муҳаррики ҷаззоберо, ки ҳамеша дӯст медоред, дӯст медоред, мо шуморо доварӣ намекунем

Дар функсияи .initialize () мо сатри калимаҳои калидиро аз теги тасвир берун оварда, сипас бо истифода аз он калимаҳои калидӣ модели FlickrBombImage месозем. Мо инчунин вазифаи .addImage () -ро ҳатмӣ мекунем, ки ҳангоми илова ба FlickrImage ба коллексияи FlickrImages иҷро карда шавад. Ин функсия FlickrImage нав илова кардашударо ба парвози интихобкунандаи тасвир илова мекунад. Хатти охирин ва муҳимтарин вазифадор аст, ки вазифаи .updateSrc () -ро барои оташ задан ҳангоми тағир додани FlickrImage-и ҳозира интихобшуда қатъ кунад. Вақте ки тасвири ҷорӣ дар модел тағир дода мешавад, ин функсия иҷро мешавад, атрибути src-и унсури тасвирро навсозӣ мекунад ва CSS андозаи худро тағир медиҳад ва тасвирро ба андозаи андозае, ки корбар муайян кардааст, мувофиқат мекунад.

рӯйдодҳо: {"click .setupIcon": "clickSetup", "click .flickrbombFlyout a.photo": "selectImage", "click .flickrbombFlyout a.next": "nextFlickrPhotos", "click .flickrbombFlyout a.prev": "prevFlickrPhotos "}

Пас аз .initialize () мо қисми рафтори View дорем. Магистраль усули муносиби пайваст кардани рӯйдодҳоро бо истифода аз объекти рӯйдодҳо фароҳам меорад. Объекти рӯйдодҳо усули jQuery .delegate () -ро барои ҳатмии воқеии унсури View истифода мебарад, то новобаста аз он, ки шумо бо унсури дохили намуд чӣ гуна амалиётро анҷом медиҳед, ҳамаи рӯйдодҳои бастаи шумо то ҳол кор хоҳанд кард. Он ба монанди jQuery .live () кор мекунад, ба истиснои он ки ба ҷои воқеаҳои ҳатмӣ бо тамоми ҳуҷҷат, шумо метавонед онҳоро дар доираи ягон унсур бандед. Калиди ҳар як вуруд дар объекти рӯйдодҳо аз ҳодиса ва интихобкунанда иборат аст, қимат он функсияеро нишон медиҳад, ки бояд бо он рӯйдод баста шавад. Дар хотир доред, ки .delegate () бо баъзе чорабиниҳо ба монанди пешниҳод кор намекунад, ба рӯйхати jQuery .live () барои рӯйхати пурраи рӯйдодҳои дастгиришаванда нигаред.

render: function () {$ (this.el) .html (this.template ()); this.image.fetch (); this.resize (); инро баргардонед;}

Дар ниҳоят, мо функсияи .render () дорем, ки масъули эҷоди аломатгузории мо ва иҷрои ҳама гуна корҳои иловагӣ мебошад, ки то ба унсури View илова кардани тамғаи View иҷро карда намешавад. Пас аз он ки мо қолаби худро пешниҳод мекунем, мо бояд ба .fetch () дар FlickrBombImage мо занг занем. .fetch () функсияи Backbone аст, ки нусхаи охирини моделро аз қабати устуворӣ мегирад. Агар мо ин моделро қаблан сабт мекардем, .fetch () ин маълумотро ҳоло ҳосил мекунад. Пас аз кашидани тасвир ба мо лозим аст, ки андозаи худро тағир диҳем, то онро дуруст ҷойгир кунем.

Дарозии хона

Бо гузоштани ҳама қисмҳо, акнун танҳо ба мо лозим аст, ки пайдо кардани тасвирҳои ҷойнишин дар саҳифа ва иваз кардани онҳо бо намудҳои пешниҳодшудаи FlickrBombImage.

$ ("img [src ^ = 'flickr: //']") .each (function () {var img = $ (this), flickrBombImageView = new FlickrBombImageView ({img: img}); img.replaceWith (flickrBombImageView) ". render (). el);});

Ин снайпери хурдро дар поёни саҳифа ё дар бозгашти омодашудаи ҳуҷҷат иҷро кардан лозим аст, то тавонад тасвирҳои ҷойнишинро иваз кунад. Мо конвенсияи мушаххас кардани flickr: // [KEYWORD] -ро дар атрибути src теги тасвир истифода бурда, нишон медиҳем, ки он бояд бо тасвирҳои Flickr пур карда шавад. Мо унсурҳои тасвирро бо атрибути мувофиқи src пайдо мекунем, FlickrBombImageView нав эҷод мекунем ва сипас тасвирро бо тасвири худ иваз мекунем. Мо нусхаи тасвири аслиро мегирем ва ба FlickrBombView мегузаронем, то ки мо баъзе имконоти конфигуратсияи иловагиро, ки шояд дар унсур нишон дода шуда буданд, кашем.

Натиҷаи ниҳоии ҳама кори душвор API барои одамоне, ки аз китобхона истифода мебаранд, хеле содда аст. Онҳо метавонанд танҳо бо истифода аз flickr: // Convention барчаспҳои тасвирро муайян кунанд, рамзи FlickrBomb -ро дар поёни сафҳаи худ партоянд ва bam, онҳо тасвирҳои ҷойнишинро аз Flickr гирифтанд.

Бо барномаҳои калони веб ol низ хуб кор мекунад

Мо як веб барномаи бузурги олӣ дорем, ки бо номаш назаррас аст, ки бидуни нигаронӣ барои тавлиди мундариҷа аз ҷониби муштариён навишта шудааст. Вақте ки мо хостем қисматҳои турбои барномаро тавассути тавлиди ҷониби муштарии мундариҷа ситонем, мо Backbone ро интихоб кардем. Сабабҳо якхела буданд: мо мехостем, ки чаҳорчӯбаи сабуке барои нигоҳ доштани рамз кӯмак расонад, аммо моро маҷбур намекунад, ки тамоми барномаро аз нав дида бароем.

Мо тағиротро дар аввали соли равон бо муваффақияти калон оғоз кардем ва аз он вақт инҷониб сурудхониҳоро месароидем.

Захираҳои иловагӣ

Ба Backbone аз он чизе, ки ман дар ин мақола овардам, чизи бештаре вуҷуд дорад, ки қисми C (контроллер) -и MVC (назораткунандаи намуна) барои шурӯъкунандагон аст, ки воқеан R (роутер) дар версияи охирин аст. Ва ин ҳама дар ҳуҷҷатҳои Backbone фаро гирифта шудааст, субҳи сабуки шанбе хонда мешавад:
documentcloud.github.com/backbone/

Агар омӯзишҳои анъанавии бештар чизи шумо бошанд, пас коди хеле хуби ҳуҷҷатгузории ин барномаи todo-ро, ки дар Backbone навишта шудааст, санҷед:
documentcloud.github.com/backbone/docs/todos.html

Шавқовар
Бо Анима саҳнаҳои мураккаби издиҳомро ба осонӣ эҷод кунед
Бештар

Бо Анима саҳнаҳои мураккаби издиҳомро ба осонӣ эҷод кунед

Баъзе замимаҳои эҷоди мундариҷаи рақамӣ қобилияти илова кардани издиҳоми мардумро ба саҳна доранд, аммо аксарияти онҳо чунин нестанд. Дар ин ҷо Anima by AXYZ De ign ворид мешавад, зеро он як воситаи о...
10 сабабе, ки бо дизайнер шиносоӣ намекунад
Бештар

10 сабабе, ки бо дизайнер шиносоӣ намекунад

Он вақтест, ки муҳаббат дар гирду атроф аст. Шояд шумо дар бораи пурсидани як тарроҳие фикр мекунед, ки чанде қабл чашми худро дидаед? Зеро ҳама тарроҳонро дӯст медоранд, дуруст аст? Чӣ тавр онҳо ната...
РОЙГОН! Мавзӯи истисноии WordPress Cameron Moll -ро бо хушмуомилагӣ аз WooThemes гиред
Бештар

РОЙГОН! Мавзӯи истисноии WordPress Cameron Moll -ро бо хушмуомилагӣ аз WooThemes гиред

WooTheme беҳтарин мавзӯъҳои WordPre ва дастгирии баландтаринро пешниҳод мекунад, то вебсайти шумо дар муддати кӯтоҳ аҷоиб ва муосир ба назар расад.Ин ҳафта ширкат саховатмандона ба ҳамаи хонандагони C...