zamyakin
TRANSCRIPT
Вёрстка
<div class="event event_past"></div>
<div class="sidebar sidebar_left"></div>
<div class="wrapper has-sidebar_left"></div>
var nodes = this.node.find(“.todo”);
for (var i = 0, l = nodes.length; i < l; i++) {
nodes.eq(i).addClass(“todo_hidden”);
}
var nodes = this.node.find(“.todo”);
nodes
.closest(“.container”)
.addClass(“without-todo”)
.container .todo {
display: block;
}
.container_without-todo .todo {
display: none;
}
https://github.com/mailru/fest http://habrahabr.ru/company/mailru/blog/141361/
— IDE
— Валидация из коробки
— SAX, XSLT, XSD, DTD ...
— XML to XML
3ms
<div>
<fest:attributes>
<fest:attribute name="class">
<fest:text>event</fest:text>
<fest:if test="end > now">
<fest:text>event_past</fest:text>
</fest:if>
<fest:if test="!event.is_writeable">
<fest:text>event_readonly</fest:text>
</fest:if>
<fest:if test="event.is_temporary">
<fest:text>event_temporary</fest:text>
</fest:if>
</fest:attribute>
</fest:attributes>
</div>
<div>
<fest:attributes>
<fest:attribute name="class">
<fest:text>event</fest:text>
<fest:if test="end > now">
<fest:text>event_past</fest:text>
</fest:if>
<fest:if test="!event.is_writeable">
<fest:text>event_readonly</fest:text>
</fest:if>
<fest:if test="event.is_temporary">
<fest:text>event_temporary</fest:text>
</fest:if>
</fest:attribute>
</fest:attributes>
</div>
<div>
<fest:attributes>
<fest:attribute name="class">
event
<fest:if test="end > now">
event_past</fest:text>
</fest:if>
<fest:if test="!event.is_writeable">
<fest:text>event_readonly</fest:text>
</fest:if>
<fest:if test="event.is_temporary">
<fest:text>event_temporary</fest:text>
</fest:if>
</fest:attribute>
</fest:attributes>
</div>
<div>
<fest:attributes>
<fest:attribute name="class">
<fest:text>event</fest:text>
<fest:if test="end > now">
<fest:text>event_past</fest:text>
</fest:if>
<fest:if test="!event.is_writeable">
<fest:text>event_readonly</fest:text>
</fest:if>
<fest:if test="event.is_temporary">
<fest:text>event_temporary</fest:text>
</fest:if>
</fest:attribute>
</fest:attributes>
</div>
<div class="event event_past event_temporary"></div>
<div class="event event_past event_temporary"></div>
<div class="event event_past event_temporary"></div>
Javascript
jQueryMX http://javascriptmvc.com/docs.html#!jQuery.Class
var that = this;
this.node
.find(".g-button")
.on("click", function() {
that.addCalendar();
})
var that = this;
window.setTimeout(function() {
that.update();
}, 30)
this.node
.find(".g-button")
.on("click", this.addCalendar.bind(this))
window.setTimeout(this.update.bind(this), 30)
this.node
.find(".g-button")
.on("click", this.addCalendar)
window.setTimeout(this.update, 30)
someMethod: function() {
methodBody
}
someMethod: function() {
try {
methodBody.apply(this, arg)
} catch (e) {
// processError
}
}
window.onerror = function(errorMsg, url, lineNumber) { … }
https://github.com/getsentry/raven-js https://github.com/getsentry/sentry
CORS
webkit FF
<script src="//static.calendar.mail.ru" />
<script src="//static.calendar.mail.ru" />
Идеи
API
О чём надеемся рассказать в следующий
раз
- Векторные иконки
- Оффлайн-режим
- Аналог tzdata в браузере
- Интернационализация
- Вебсокеты
Константин Замякин
п р о г р а м м и с т, К а л е н д а р ь @ M a i l . r u
k . z a m y a k i n @ c o r p . m a i l . r u