cnCt - рдХреНрд▓рд╛рдЗрдВрдЯ js рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди

рдЕрднреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдХрдИ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдЯреЗрдВрдкрд▓реЗрдЯрд░реНрд╕ ; рдпреЗ рдореВрдВрдЫреЗрдВ рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╣реИрдВред рдЯреЗрдордкреНрд▓реЗрдЯ рдпрд╛ рдРрд╕рд╛ рд╣реА рдХреБрдЫ (рдЖрдк рд╕рд░реНрдЧреЗрдИ рдмреЗрд░реЗрдЬрд╝реА рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд▓рд╛рдирд░реНрд╕ рдХреА рднрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рджреБрд░реНрд▓рдн рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдордд, рд▓реЛрдЕрд░рдХреЗрд╕ рд╣реИрдВред


рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдорд╕реНрдпрд╛рдПрдВ - рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдмрдВрдзрди


рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрдпрд╛рдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ , рдЯреЗрдореНрдкрд▓реЗрдЯ рдмреЗрдорд╛рдиреА рд╣реИрдВ (html рдХреЗ рд╕рдВрдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдФрд░ рджрд▓рд┐рдпрд╛ рдЬреИрд╕рд╛ред рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рднреА

var template = '<div class="entry"><h1>{{title}}</h1><div class="body">{{body}}</div></div>'; 

рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ рдореЗрдВ, рд╣рдо рдмрд┐рдирд╛ рдХрд┐рд╕реА HTML рдХреЗ, рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореЗрдЯрд▓рдЬреИрдЬ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рдорд░реНрдерди рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╣рдорд╛рд░реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╣рд┐рдкрд╕реНрдЯрд░ рдореЗрдЯрд▓рдВрдЧреЗрдЬ рдХреЗ рд╕рдордп рдкрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП JetBrains рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдзрдиреНрдпрд╡рд╛рдж рдирд╣реАрдВ)ред рдФрд░ рдпрд╣ рднреА, рдирд┐рдпрдорд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рдм рдЗрдирд░ HTML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдмрдбрд╝реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрд╡реЗрд╖рдг рдкреЗрдбрд╝ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдбреЙрдХреНрдпреВрдореЗрдВрдЯрдлреНрд░реЗрдЧрдореЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдЧрд░реНрдо рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдореЗрдВ рдЗрд╕реЗ рдХрдо рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЖрдВрддрд░рд┐рдХ HTML рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд░рдХ рд╣реИ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ)ред

рдпрджреНрдпрдкрд┐ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░реВрдкрдг рд╕рдорд╕реНрдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЧрдИ рдереА, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдПрдХ рдирдИ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рддреА рд╣реИ: рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ index.html (php?) рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрдиреНрд╣реЗрдВ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ phpStorm ' рдпрд╣ 32GB рд░реИрдо рдХреЗ рд╕рд╛рде рднреА рджреБрдЦреА рд╣реИред

рджреВрд╕рд░реЗ , рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ

рдХрд╣реАрдВ рдРрд╕рд╛ рд╣реИ

 {{#repo}} <b>{{name}}</b> {{/repo}} {{^repo}} No repos :({ {/repo}} 

рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ (рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ)

 var list = "<% _.each(people, function(name) { %> <li><%= name %></li> <% }); %>"; _.template(list, {people: ['moe', 'curly', 'larry']}); // "<li>moe</li><li>curly</li><li>larry</li>" 

рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрд╣реАрдВ

 {{#list people}}{{firstName}} {{lastName}}{{/list}} { people: [ {firstName: "Yehuda", lastName: "Katz"}, {firstName: "Carl", lastName: "Lerche"}, {firstName: "Alan", lastName: "Johnson"} ] } Handlebars.registerHelper('list', function(items, options) { var out = "<ul>"; for(var i=0, l=items.length; i<l; i++) { out = out + "<li>" + options.fn(items[i]) + "</li>"; } return out + "</ul>"; }); 

(рдореИрдВ Stepan Reznikov рд╕реЗ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЧреНрд░рд╛рд╣рдХ-рдЖрдзрд╛рд░рд┐рдд рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдЕрдиреБрднрд╡ рдХреЛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдпрд╛рдж рдХрд░рддрд╛ рд╣реВрдВ)

рддреАрд╕рд░рд╛ , рд╡рд╕реНрддреБрдУрдВ рдХреА рдЦреЛрдЬред рд╕рдорд╕реНрдпрд╛ рдЗрддрдиреА рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдиреА рдкрд╣рд▓реЗ рдХреА рджреЛ рдереА, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдореБрдЭреЗ рдмрд╕ рдЬреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рд╡рд╣ рдХреНрдпреЛрдВ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ

 var templateWrapper = document.getElementById('templateWrapper'); something.render(template, templateWrapper); var templateElemet = templateWrapper.getElementsByClassName('templateElement'); //      

_small_ (рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдареАрдХ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдХрдореА рд╕реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЧрд╣рд░реЗ рдирд┐рд░рд╛рд╢рд╛ рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред) _ / small_

cnCt


CnCt рдХреЗ рдореБрдЦреНрдп рд▓рд╛рдн рд╣реИрдВ DOM рддрд░реАрдХреЛрдВ рд╕реЗ DOM рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ json рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╡рд░реНрдгрдиред

jsfiddle рдЙрджрд╛рд╣рд░рдг

 //  var template = function(data){ // 'e'  ,   div return {c: 'user', C: [ {e: 'a', h: 'http://facebook.com/' + data.facebookId, c: 'user-avatar-wrapper', C: {e: 'img', c: 'user-avatar', S: 'http://graph.facebook.com/' + data.facebookId + '/picture?width=200&height=200'} }, {c: 'user-name', t: data.fristName + ' ' + data.lastName, n: 'userName'}, ]}; }; // .  tp     var build = cnCt.tp(template, {fristName: 'swf', lastName: 'dev', facebookId: '100005155868851'}, document.body); //       build.r.addEventListener('click', function(){console.log('hello')}); //build.r (r   root)  div.user build.userName.addEventListener('click', function(){console.log(this.textContent)}); //    n: 'userName' 

рдЬрдЯрд┐рд▓ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЯреИрдЧ рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо HTML рдХреЛ рд╡реНрдпреВ рдмреНрд▓реЙрдХреНрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ / a / input / textarea / (...) рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реНрдпреВ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖред

рд▓рдбрд╝рд╛рдИ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (jsfiddle)

 //    function dataToStr(_date){ var date = _date instanceof Date ? _date : new Date(_date); return date.getDate() + '/' + date.getMonth() + '/' + date.getFullYear(); } // function l10n(key){ return l10Keys[key] || key; } var l10Keys = { youFriendsList: '  ', sendMessage: ' ' }, //  templates = { // basis: function(){ return [ // {c: 'header', n: 'header', t: l10n('youFriendsList')}, {c: 'content-view', n: 'contentView'}, {c: 'footer', t: ' SoftWear LLC'} ]; }, //     icon: {c: 'icon'}, // button: function(data){ return {c: 'button', t: data.t, n: data.n, C: templates.icon, a: data.a}; }, //  friendsList: function(friends){ var items = [], i = 0, iMax = friends.length; // js   (  ,     ) for(; i < iMax; i += 1){ items[i] = {c: 'friend', C: [ {e: 'a', h: 'http://facebook.com/' + friends[i].facebookId, c: 'friend-avatar-wrapper', C: //     {e: 'img', c: 'friend-avatar', S: 'http://graph.facebook.com/' + friends[i].facebookId + '/picture?width=200&height=200'} }, {c: 'friend-name', t: friends[i].firstName + ' ' + friends[i].lastName}, //   {c: 'friend-birthday', t: dataToStr(friends[i].birthday)}, //   templates.button({n: 'sendMessage', t: l10n('sendMessage'), a: {'data-friend-id': friends[i].facebookId}}) ]}; } return {c: 'friend-list', C: items}; } }, //   friends = [ { facebookId: 1, firstName: '', lastName: '', birthday: 1 }, { facebookId: 2, firstName: '', lastName: '', birthday: 111111111 }, { facebookId: 3, firstName: '', lastName: '', birthday: 123123123 } ], build, $contentView, $buttons, i; //       (      ) cnCt.bindTemplates(templates); //  $contentView = cnCt.tp('basis', document.body).contentView; function getByFacebookId(id){ var i = friends.length; id = +id; for (; i-- ;){ if (friends[i].facebookId === id){ return friends[i]; } } return null; } $buttons = cnCt.tp('friendsList', friends, $contentView).sendMessage; //    ..   function sendMessage(){ var friend = getByFacebookId(this.getAttribute('data-friend-id')); console.log('hello ' + friend.firstName); } for (i = friends.length; i-- ;){ $buttons[i].addEventListener('click', sendMessage); } 


рдкреЗрд╢реЗрд╡рд░реЛрдВ:
  1. рд╢реБрджреНрдз рдЬреЗ.рдПрд╕.
  2. Html рд╕рд╛рд░
  3. рдореЛрдмрд╛рдЗрд▓ рдкрд░ рд▓реЛрдЕрд░рдХреЗрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ, рдУрдкреЗрд░рд╛ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╣рд░ рдЬрдЧрд╣ рддреЗрдЬ (рдореИрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ), рдФрд░ рдЯреАрд╡реА рдФрд░ рдХрд┐рдпреЛрд╕реНрдХ рдкрд░ рддреЗрдЬреА рд╕реЗ :)
  4. рдкреИрдЯрд░реНрди рдореЗрдВ рдкреИрдЯрд░реНрди
  5. рдЕрдВрджрд░ рдЦреЛрдЬреЗрдВ рдФрд░ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдпрд╛ рдЖрдИрдбреА рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ
  6. рд╕рднреА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд
  7. рдСрдЯреЛ рдмреИрдХрд▓рд╛рдЗрдЯ рдФрд░ рд╕рдм рдХреБрдЫ рдореЗрдВ рдЬреЗрд╕реА рдкреНрд▓рдЧ рдЗрди рдХреЗ рдмрд┐рдирд╛ рд╕рдордЭрддрд╛ рд╣реИ
  8. рдЗрдирд▓рд╛рдЗрди рдПрд╕рд╡реАрдЬреА рдФрд░ рд╡реАрдПрдордПрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
  9. рдПрдХреНрд╕рдПрдордПрд▓ рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ
  10. рдпрд╣ рдЬреАрд╡рди рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ( рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рддрдХ рдкрд╣реБрдВрдЪ ), рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд╣рдо рддрджрдиреБрд╕рд╛рд░ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗ

рд╡рд┐рдкрдХреНрд╖:
  1. рдЗрд╕рдореЗрдВ рдзреАрдореА рдЧрддрд┐ рд╕реЗ (рдореЛрдмрд╛рдЗрд▓ рдлреЛрди, рдХрд┐рдпреЛрд╕реНрдХ (рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреНрд░реЛрдо рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рдЯреЗрд▓реНрд▓реА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ)
  2. рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ (рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж, HTML рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд▓рдЧрддрд╛ рд╣реИ)
  3. рдХрдордЬреЛрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ (рдЬрд▓реНрдж рд╣реА рд╕рдм рдХреБрдЫ рд╣реЛрдЧрд╛)
  4. рдиреЛрдб рдкрд░ рдмреЗрдХрд╛рд░ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ / рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк cnCt json рдХреЛ str рдмреНрд░рд╛рдВрдЪ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ?)


рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

рдкреБрдирд╢реНрдЪ: рд╣рдо рдХреНрдпреЛрдВрдХрд┐ рдЦреЛрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВред

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


All Articles