рд╣рдо рдмреИрдХрдмреЛрди рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВ

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкрд░рд┐рдЪрд┐рдд рдХреЛ рдмреИрдХрдмреЛрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЬреИрд╕реЗ рдХрдИ, рдЯреВрдбреВ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд╕рд╛рде , рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЖрдЧреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд▓реЗрдХрд┐рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдХреЛрдб рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ (рдЙрдкрд░реЛрдХреНрдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ):

window.AppView = Backbone.View.extend({ // Instead of generating a new element, bind to the existing skeleton of // the App already present in the HTML. el: $("#todoapp"), // Our template for the line of statistics at the bottom of the app. statsTemplate: _.template($('#stats-template').html()), ... 


рдЖрдЗрдП рдХрд░реАрдм рд╕реЗ рджреЗрдЦреЗрдВ:


рдмреЗрд╢рдХ, рдЫреЛрдЯреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рджрд░реНрдЬрдиреЛрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИрдВ?
рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЖрд░рдВрдн рдХреНрдпреЛрдВ рдХрд░реЗрдВ? рд╣рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЯреЗрдореНрдкрд▓реЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ



рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд▓реЛрдб рдХрд░реЗрдВ рдЬрдм рд╣рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╢ рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдмреВрдЯрд▓реЛрдбрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
  Core.Template = { cache: {}, //     pending: {}, //  callback-,       load: function(url, callback) { callback = callback || function() {}; if (this.cache[url]) { //   ,   callback callback(this.cache[url]); return; } //  callback   if (this.pending[url]) { this.pending[url].push(callback); return; } this.pending[url] = [callback]; jQuery.ajax({ //  url : url, dataType: 'text', complete: function(resp) { var cache = this.cache[url] = _.template(resp.responseText); //      _.each(this.pending[url], function(cb) { //   cb(cache); }); delete this.pending[url]; //   }.bind(this), error: function() { throw new Error("Could not load " + url); } }); } }; 


рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдкрд▓реЛрдб рдХрд░рдХреЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХреИрд╢ рдХрд░рдиреЗ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖рдорддрд╛ рд╣реИред
рдХрддрд╛рд░ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдХрд┐ рд▓реЛрдбрд░ рд╣рдорд╛рд░реЗ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдпрд╣ тАЛтАЛрд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирдП рддрд░реАрдХреЗ рд╕реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рд┐рдЦрд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдХреНрд▓рд╛рд╕



рд╣рдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд▓рд┐рдЦреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗред

  Core.View = Backbone.View.extend({ renderQueue: false, //     initialize: function() { if (this.templateUrl) { Core.Template.load(this.templateUrl, function(data) { this.template = data; //   if (this.renderQueue !== false) { //     _.each(this.renderQueue, function(item) { this._render.apply(this, item); }.bind(this)); this.renderQueue = false; } }.bind(this)); } }, _render: function() {}, //        render render: function() { if (!this.template) { //     -      this.renderQueue = this.renderQueue || []; this.renderQueue.push(arguments); return this; } return this._render.apply(this, arguments); //   } }); 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдпреВрдЖрд░рдПрд▓ рдХреЛ рджреГрд╢реНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди _render рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреБрдЫ рднреА рдЖрдкрдХреЛ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЛрдб рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ рдЬреЛ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рдкреЗрдЯрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕рд░рд▓ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

рдХреЗ рдЙрдкрдпреЛрдЧ



рдЕрднреНрдпрд╛рд╕ рдХреНрдпрд╛ рд╣реИ?
рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдХреЛрдб рдХрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рднрд╛рдЧ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:

 window.AppView = Core.View.extend({ el: $("#todoapp"), //    templateUrl: '/templates/app.html', initialize: function() { AppView.__super__.initialize.apply(this); //    ... }, //  render  _render  statsTemplate  template _render: function() { this.$('#todo-stats').html(this.template({ total: Todos.length, done: Todos.done().length, remaining: Todos.remaining().length })); }, ... 


рд╣реЛ рдЧрдпрд╛!

рдпрд╣рд╛рдВ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реИ ред
рд╕рдВрд╢реЛрдзрд┐рдд рдЯреВрдбреВ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдпрджрд┐ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдЯреВрдбреВ рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИ: рдЕрдВрддрд░

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/In138783/


All Articles