完璧なJavaScriptフレームワークを見つける

現在、フロントエンド開発用の多くのフレームワークとライブラリがあります。 良いものはありますが、あまり良いものではありません。 多くの場合、ある種の概念、モジュール、または構文のみが好きです。 ユニバーサルツールは存在しません。 この記事では、将来のフレームワークについて説明します-まだ存在しないフレームワークです。 よく知られているフレームワークの長所と短所を集め、理想的なソリューションを夢見ています。



抽象化は危険です



誰もがシンプルさが好きです。 複雑さは殺します。 それは作業を複雑にし、急な学習曲線につながります。 プログラマは、それがどのように機能するかを理解する必要があります。 複雑なシステムで作業する場合、「私はそれを使用する」と「それがどのように機能するかを知っている」との間に大きな距離があります。 たとえば、次のコードは複雑さを隠します。



var page = Framework.createPage({ 'type': 'home', 'visible': true });
      
      







これが本当のフレームワークだとしましょう。 createPageは、htmlテンプレートホームをロードする新しいViewクラスをどこかに作成します。 visibleパラメーターに基づいて、作成されたDOM要素をツリーに追加します。 開発者の観点からは、抽象化であるため、すべてがどのように詳細に機能するのかわかりません。



一部のフレームワークには1つではなく、多くの抽象化レベルがあります。 時々、彼の作品の詳細を知る必要があります。 抽象化は、機能のラッパーを作成し、設計上の決定をカプセル化するため、強力なツールです。 しかし、追跡が困難なプロセスにつながるため、賢明に使用する必要があります。



例を次のように変更した場合:



 var page = Framework.createPage(); page .loadTemplate('home.html') .appendToDOM();
      
      







今、何が起こっているのかが明らかになります。 テンプレートのロードと添付は、APIメソッドとして示されます。 つまり、プロセスを理解して制御することができます。



Ember.jsを取得します。 フレームワークは素晴らしいです。 数行で、1ページのアプリケーションを作成できます。 しかし、価格があります。 彼は舞台裏でクラスを定義します。 例:



 App.Router.map(function() { this.resource('posts', function() { this.route('new'); }); });
      
      







フレームワークは3つのパスを作成し、それぞれがコントローラーに接続されます。 それらは使用される場合も使用されない場合もありますが、使用されています。 フレームワークでは、それらが機能する必要があります。



多くの場合、プロジェクトには独自の機能が必要です。 すべての場合に設計されたフレームワークはありません。 そして、単純な解決策がないタスクに直面しています。 問題を解決する正しい方法を見つけるには、すべてがどのように機能するかを把握する必要があります。 多くの場合、私たちが行う必要があるのは、フレームワークをハッキングするようなものです。



たとえば、Backbone.jsにはいくつかの定義済みオブジェクトがあります。 それらは基本的な機能を持ち、その実装はプログラマーにかかっています。 DocumentViewクラスは、Backbone.Viewを拡張します。 それだけです。 コードとフレームワークのコア機能の間には1つのレベルしかありません。



 var DocumentView = Backbone.View.extend({ 'tagName': 'li', 'events': { 'mouseover .title .date': 'showTooltip', 'click .open': 'render' }, 'render': function() { … }, 'showTooltip': function() { … } });
      
      







私は多くの抽象化レベルを持たないフレームワークが好きです-透明性が判明したものです。



消えたコンストラクター



一部のフレームワークは、クラス定義を受け入れますが、コンストラクターを作成しません。 フレームワーク自体が、オブジェクトをいつどこでインスタンス化するかを決定します。 私たちがこれを自分で行うことを可能にするフレームワークを見たいです。 たとえば、Knockoutの場合:



 function ViewModel(first, last) { this.firstName = ko.observable(first); this.lastName = ko.observable(last); } ko.applyBindings(new ViewModel("", ""))
      
      







モデルを定義して初期化します。 AngularJSでは、状況は少し異なります。



 function TodoCtrl($scope) { $scope.todos = [ { 'text': ' angular', 'done': true }, { 'text': '   angular', 'done': false } ]; }
      
      







クラスを定義しますが、実行しません。 これがコントローラーであり、フレームワークがそれをどのように操作するかを決定するだけです。 これは混乱する可能性があります アプリケーション内を移動できるようにするコードの重要なポイントを失います。



DOM操作



いずれにしても、DOMと対話する必要があります。 そして、これがどのように起こるかを正確に知る必要があります-通常、ページノードを使用するすべてのアクションは、再描画につながります。 たとえば、次のクラスを考えます。



 var Framework = { 'el': null, 'setElement': function(el) { this.el = el; return this; }, 'update': function(list) { var str = '<ul>'; for (var i = 0; i < list.length; i++) { var li = document.createElement('li'); li.textContent = list[i]; str += li.outerHTML; } str += '</ul>'; this.el.innerHTML = str; return this; } }
      
      







このフレームワークは、指定されたデータから順序付けられていないリストを作成します。 リストを含むDOM要素を送信し、画面にデータを表示するupdateを呼び出します。



 Framework .setElement(document.querySelector('.content')) .update(['JavaScript', '', '']);
      
      







結果は次のとおりです。



画像



これがなぜ悪いのかを示します。 ページにリンクを追加し、イベントトラッキングを終了します。 この関数は、他のパラメーターを使用して既にupdateを呼び出します。



 document.querySelector('a').addEventListener('click', function() { Framework.update(['', '', '']); });
      
      







非常に類似したデータを送信し、配列の最初の要素のみを変更します。 しかし、innerHTMLの使用により、リスト全体が毎回再描画されます。 OperaのDevToolsでこれを見てみましょう。



画像



クリックするたびに、コンテンツ全体が再描画されます。 これは問題です。



ノードのみを使用した方が良いでしょう
 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .



DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });



, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.
















. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });



, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.












. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>



go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.












. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>



, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.












. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;



, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.












. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .



Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });



HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.
















. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });



HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.












. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .



JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });



React, , .



-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.




















. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });



React, , .



-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.
















. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .



-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.












. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








 .       ,    . ,    –  setElement: 
      



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.








. , . , – setElement:



setElement: function(el) { this.list = document.createElement('ul'); el.appendChild(this.list); return this; }








. .



, , update:



'update': function(list) { for (var i = 0; i < list.length; i++) { if (!this.rows[i]) { var row = document.createElement('LI'); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }








for . this.rows . , textContent. , , .



:



画像



.



React DOM. . .



, .







DOM

JavaScript DOM. , . Backbone.js, :



var Navigation = Backbone.View.extend({ 'events': { 'click .header.menu': 'toggleMenu' }, 'toggleMenu': function() { // … } });








, .header.menu, , . , DOM. .menu. .main-menu, JS-. , , DOM.



, JS. – DOM, HTML.



AngularJS:



<a href="#" ng-click="go()"> </a>







go - , . DOM. HTML. DOM.



HTML. (HMTL) (JS). , . :



<div onclick="javascript:App.doSomething(this);"> </div>







, . :



<div data-component="slideshow" data-items="5" data-select="dispatch:selected"> … </div>







HTML, .





. . – . . , " ". , .



RequireJS – . , , :



require(['ajax', 'router'], function(ajax, router) { // … });







ajax router. require . router :



// router.js define(['jquery'], function($) { return { 'apiMethod': function() { // … } } });







– jQuery. , API – , , .



AngularJS factory (). , :



myModule.factory('greeter', function($window) { return { 'greet': function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(' !'); }; }







– require . .



. , . . , :



var router:<inject:Router>;







, . RequireJS AngularJS , , , .





HTML. ? .





<script type="text/x-handlebars"> Hello, <strong> </strong>! </script>







HTML, , .







Ajax

Backbone.View.extend({ 'template': 'my-view-template', 'render': function() { $.get('/templates/' + this.template + '.html', function(template) { var html = $(template).tmpl(); }); } });








HTML- . HTTP-, .



– DOM. HTML , HTTP-, .







JavaScript

var HelloMessage = React.createClass({ render: function() { // JS: return <div>, {this.props.name}</div>; } });








React, , .







-HTML

HTML. JSON YAML.





? . . HTML- . DOM. , .



AngularJS . . . – HTML, AngularJS . , Object.observe , .





. - , . , , , . , , YUI, . JS-, .



"". . – , . .



, . . , . , .



API

API , . . - , , :



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'addRoute': function(path) { var rData = router.resolve(path); var controller = factory.get(rData.controllerType); router.register(path, controller.handler); return controller; } } }; var AboutCtrl = Framework.addRoute('/about');







. , . URK, . , , URL? ? API.



:



var Framework = function() { var router = new Router(); var factory = new ControllerFactory(); return { 'createController': function(path) { var rData = router.resolve(path); return factory.get(rData.controllerType); } 'addRoute': function(path, handler) { router.register(path, handler); } } } var AboutCtrl = Framework.createController({ 'type': 'about' }); Framework.addRoute('/about', AboutCtrl.handler);







, – , . , . , - . API , , . , , . , , .





, , . . , - , . . , , .. – TDD.



, , . , . , – , .



. . Travis. , , .



c PHP, WordPress. – ? – . - . JS- – . , , .





. – , . . – .



:



. . , – . , – . API. . , , . . . , , , . , .





, . , JavaScript.











All Articles