11. tutorial.notepad.Note.prototype.makeNoteDom = function() {
// Create DOM structure to represent the note.
this.headerElement = goog.dom.createDom('div',
{'style': 'background-color:#EEE'}, this.title);
this.contentElement = goog.dom.createDom('div', null, this.content);
var newNote = goog.dom.createDom('div', null,
this.headerElement, this.contentElement);
// Add the note's DOM structure to the document.
goog.dom.appendChild(this.parent, newNote);
};
12. // jquery
$('#foo').click(function(){
$(this).parent().next('.d2').text('Hello');
});
// google closure
goog.dom.getElement('foo').onclick = function(){
var div = goog.dom.getAncestorByClass(this, 'd1');
var nextDiv = goog.dom.getNextElementSibling(div);
goog.dom.setTextContent(nextDiv, 'Hello');
}
13. // google closure
var node = goog.dom.getElement('mytarget');
node.style.backgroundColor = 'blue';
node.style.backgroundColor = 'red';
// pure javascript
var node = document.getElementById('mytarget');
node.style.backgroundColor = 'blue';
node.style.backgroundColor = 'red';
14. // google closure
var node = goog.dom.getElement('mytarget');
node.style.backgroundColor = 'blue';
node.style.backgroundColor = 'red';
// pure javascript
var node = document.getElementById('mytarget');
node.style.backgroundColor = 'blue';
node.style.backgroundColor = 'red';
... причем второй вариант работает быстрее (jsperf.com)
на втором месте — pure javascript, на третьем — jQuery
18. switch (node.tagName) {
case goog.dom.TagName.APPLET:
case goog.dom.TagName.AREA:
case goog.dom.TagName.BR:
case goog.dom.TagName.COL:
case goog.dom.TagName.FRAME:
case goog.dom.TagName.HR:
case goog.dom.TagName.IMG:
case goog.dom.TagName.INPUT:
case goog.dom.TagName.IFRAME:
case goog.dom.TagName.ISINDEX:
case goog.dom.TagName.LINK:
case goog.dom.TagName.NOFRAMES:
case goog.dom.TagName.NOSCRIPT:
case goog.dom.TagName.META:
case goog.dom.TagName.OBJECT:
case goog.dom.TagName.PARAM:
case goog.dom.TagName.SCRIPT:
case goog.dom.TagName.STYLE:
return false;
}
return true;
Google: "How not to write JavaScript"
20. Google Closure
Templates
Компилируются как на серверной, так и
на клиентской стороне!
Google Closure Templates Compiler для
ускорения работы.
21. summary
Google Closure Library
+ Google - муторно
+ низкоуровнево - нет готовых
+ тру разработка хранилищ списков
+ своя классовая - нет
модель адаптированной
+ свои события архитектуры
+ свой i18n
+ шаблоны - свой
продукт
37. summary
ExtJS
+ отличная логика, - не для того
которой стоит - платная
придерживаться - достаточно
+ отличная сложная в
документация освоении
+ отличные - на сервеной части
инструменты жизни нет
38. summary
Ext.Core
+ отличная логика, - достаточно
которой стоит сложная в
придерживаться освоении
+ отличная - на серверной части
документация жизни нет
+ отличные - нет отличных
инструменты инструментов,
нужно писать
самим
56. summary
Backbone
+ попытка повторить - плохая
ExtJS документация
+ наличие - местами не очень
инструментов для логичная
создания - достаточно сложная
model/view/controller в освоении
+ логичный код - нет нара
62. <body ng-controller="PhoneListCtrl">
<ul>
<li ng-repeat="phone in phones">
{{phone.name}}
<p>{{phone.snippet}}</p>
</li>
</ul>
</body>
// а так же
<ng-repeat>
...
</ng-repeat>
// или
<li class="ng-repeat: phone in phones">
...
</li>
66. // Provide the wiring information in a module
angular.module('myModule', []).
// Teach the injector how to build a 'greeter'
// Notice that greeter itself is dependent on '$window'
factory('greeter', function($window) {
// This is a factory function, and is responsible for
// creating the 'greet' service.
return {
greet: function(text) {
$window.alert(text);
}
};
}).
// New injector is created from the module.
// (This is usually done automatically by angular bootstrap)
var injector = angular.injector('myModule');
// Request any dependency from the injector
var greeter = injector.get('greeter');
67. Поддержка i18n из
коробки
поддерживает pluralize, разбиение на
локали
(как следствие, полная совместимость с gettext, если вдруг)
72. Об автоматическом
сохранении,
транспортах, прокси —
не слышали
Но можно реализовать самому.
73. summary
AngularJS
+ Google - Нет уверенности:
+ Похож на knockout * 350+ issues / ghub
+ Syntax sugar
+ "На все случаи ? Шаблоны на
жизни" сервере —
+ Отличнейшая сторонний продукт
документация