Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Командная разработка
“толстых клиентов”
coffeescript.org
Что нравится в CoffeeScript
● Require
● Отступы вместо скобок
● Классическое ООП
● Отсутствие var, необязательные скобки & return
● “Читаемые строки #{var}”
● Удобные конструкции для работы с массивами,
объектами, циклами и т.п.
● Управляемый контекст “this”
Require
# Business logic and communications.
require './portal/models'
require './portal/routes'
require './portal/server'
# UI.
require './portal/views/helpers'
require './portal/views/header'
require './core/views/template'
…
Classes, Inheritance, and Super
class A
constructor: (property) ->
# …
method: ->
# …
class B extends A
constructor: ->
super("Property value")
method: ->
super()
Classes, Inheritance, and Super
var A, B,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.
call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor
= child; } ctor.prototype = parent.prototype; child.prototype = new ctor();
child.__super__ = parent.prototype; return child; };
A = (function() {
function A(property) {}
A.prototype.method = function() {};
return A;
})();
B = (function(_super) {
__extends(B, _super);
function B() {
B.__super__.constructor.call(this, "Property value");
}
B.prototype.method = function() {
return B.__super__.method.call(this);
};
return B;
})(A);
class A
constructor: (property) ->
# …
method: ->
# …
class B extends A
constructor: ->
super("Property value")
method: ->
super()
Аргументы функций
class Database
connect : (
@host = 'localhost'
@port = 80
options…
callback
) ->
# Тело функции / метода
Аргументы функций
class Database
connect : (
@host = 'localhost'
@port = 80
options…
callback
) ->
# Тело функции / метода
var Database,
__slice = [].slice;
Database = (function() {
function Database() {}
Database.prototype.connect = function() {
var callback, host, options, port, _i;
host = arguments[0], port = arguments[1], options =
4 <= arguments.length ? __slice.call(arguments, 2, _i =
arguments.length - 1) : (_i = 2, []), callback =
arguments[_i++];
this.host = host != null ? host : 'localhost';
this.port = port != null ? port : 80;
};
return Database;
})();
Простые if, unless
return if error
port = 8080 unless port
port = if https then 443 else 80
callback?()
Массивы
numbers = [0..9]
n = numbers[3..6]
numbers[3..6] = [-3, -4, -5, -6]
[foo, bar] = [1, 2]
Контекст вызова функций и методов
$('#element').on 'click', (e) ->
@openMenu(e)
$('#element').on 'click', (e) =>
@openMenu(e)
$('#element').on('click', function(e) {
return this.openMenu(e);
});
var _this = this;
$('#element').on('click', function(e) {
return _this.openMenu(e);
});
Минусы CoffeeScript
● Новый синтаксис
● Сборка проекта
● Генерирует много кода
● (Отладка)
Алексей Иванов
aivanov@qubell.com
skype: a.ivanov

More Related Content

What's hot

Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasov
Pavel Vlasov
 
Основы доменной модели
Основы доменной моделиОсновы доменной модели
Основы доменной модели
Антон Шабовта
 
Мульти-доменность в Django проекте
Мульти-доменность в Django проектеМульти-доменность в Django проекте
Мульти-доменность в Django проекте
Alexey Kinyov
 
12 - Web-технологии. Django модели
12 - Web-технологии. Django модели12 - Web-технологии. Django модели
12 - Web-технологии. Django модели
Roman Brovko
 
Что нового в Django 1.4
Что нового в Django 1.4Что нового в Django 1.4
Что нового в Django 1.4
Илья Барышев
 
Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16
Anatoly Sharifulin
 
Парсер: что? зачем? как?
Парсер: что? зачем? как?Парсер: что? зачем? как?
Парсер: что? зачем? как?
STEP Computer Academy (Zaporozhye)
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
Ruslan Begaliev
 
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Moscow.pm
 
Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)
Max Klymyshyn
 
Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)
Anton Arhipov
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
Alexander Makarov
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
Alexander Makarov
 
13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных
Roman Brovko
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
BlackFan
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
Alexander Makarov
 
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart  -nemnogo_primerov_iz_zhizniUbercart  -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhizni
drupalconf
 
PHP basic
PHP basicPHP basic
PHP basic
Noveo
 

What's hot (20)

Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasov
 
Основы доменной модели
Основы доменной моделиОсновы доменной модели
Основы доменной модели
 
Мульти-доменность в Django проекте
Мульти-доменность в Django проектеМульти-доменность в Django проекте
Мульти-доменность в Django проекте
 
Erlang tasty & useful stuff
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuff
 
12 - Web-технологии. Django модели
12 - Web-технологии. Django модели12 - Web-технологии. Django модели
12 - Web-технологии. Django модели
 
Что нового в Django 1.4
Что нового в Django 1.4Что нового в Django 1.4
Что нового в Django 1.4
 
Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16
 
Парсер: что? зачем? как?
Парсер: что? зачем? как?Парсер: что? зачем? как?
Парсер: что? зачем? как?
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
 
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
 
Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)
 
Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)
 
Render API.
Render API.Render API.
Render API.
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
 
13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart  -nemnogo_primerov_iz_zhizniUbercart  -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhizni
 
PHP basic
PHP basicPHP basic
PHP basic
 

Viewers also liked

Akka и реактивное программирование на JVM
Akka и реактивное программирование на JVMAkka и реактивное программирование на JVM
Akka и реактивное программирование на JVM
Open-IT
 
Top indicators shaping your permission based marketing databases
Top indicators shaping your permission based marketing databasesTop indicators shaping your permission based marketing databases
Top indicators shaping your permission based marketing databases
SMARTe Inc.
 
Ha update 2014 (1)
Ha update 2014 (1)Ha update 2014 (1)
RelayRides UX Observations by Jeff McNeil, New Spin Digital
RelayRides UX Observations by Jeff McNeil, New Spin DigitalRelayRides UX Observations by Jeff McNeil, New Spin Digital
RelayRides UX Observations by Jeff McNeil, New Spin Digital
New Spin Digital
 
bucaramanga
bucaramanga bucaramanga
bucaramanga
victormartinez2793
 
expoline spectrum offer
expoline spectrum offerexpoline spectrum offer
expoline spectrum offer
Amnin Cosar
 
Microsoft kinect
Microsoft kinectMicrosoft kinect
Microsoft kinect
Open-IT
 
Udine3D Forum - novembre 2015
Udine3D Forum - novembre 2015Udine3D Forum - novembre 2015
Udine3D Forum - novembre 2015
Matteo Troìa
 
EBP
EBPEBP
Evolucion tecnologica21
Evolucion tecnologica21Evolucion tecnologica21
Evolucion tecnologica21
Camila Jaimes
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчика
Open-IT
 
A sustainable population essay for dynamic singapore by StudentsAssignmentHe...
A sustainable population essay for  dynamic singapore by StudentsAssignmentHe...A sustainable population essay for  dynamic singapore by StudentsAssignmentHe...
A sustainable population essay for dynamic singapore by StudentsAssignmentHe...
Students Assignment
 
GD実践ゼミ2015 Nakajima
GD実践ゼミ2015 NakajimaGD実践ゼミ2015 Nakajima
GD実践ゼミ2015 Nakajima
ShimonNakajima
 
IRS Form 1099-MISC
IRS Form 1099-MISCIRS Form 1099-MISC
IRS Form 1099-MISC
1099fires
 
Heroic immerseus
Heroic immerseusHeroic immerseus
Heroic immerseus
cbcsarth
 
Curso de office
Curso de officeCurso de office
Curso de office
Rigo Rodrigues
 
Spot 2
Spot 2Spot 2
Spot 2
framarcello
 

Viewers also liked (18)

Akka и реактивное программирование на JVM
Akka и реактивное программирование на JVMAkka и реактивное программирование на JVM
Akka и реактивное программирование на JVM
 
Top indicators shaping your permission based marketing databases
Top indicators shaping your permission based marketing databasesTop indicators shaping your permission based marketing databases
Top indicators shaping your permission based marketing databases
 
Ha update 2014 (1)
Ha update 2014 (1)Ha update 2014 (1)
Ha update 2014 (1)
 
RelayRides UX Observations by Jeff McNeil, New Spin Digital
RelayRides UX Observations by Jeff McNeil, New Spin DigitalRelayRides UX Observations by Jeff McNeil, New Spin Digital
RelayRides UX Observations by Jeff McNeil, New Spin Digital
 
bucaramanga
bucaramanga bucaramanga
bucaramanga
 
expoline spectrum offer
expoline spectrum offerexpoline spectrum offer
expoline spectrum offer
 
Microsoft kinect
Microsoft kinectMicrosoft kinect
Microsoft kinect
 
Mpdf (9)
Mpdf (9)Mpdf (9)
Mpdf (9)
 
Udine3D Forum - novembre 2015
Udine3D Forum - novembre 2015Udine3D Forum - novembre 2015
Udine3D Forum - novembre 2015
 
EBP
EBPEBP
EBP
 
Evolucion tecnologica21
Evolucion tecnologica21Evolucion tecnologica21
Evolucion tecnologica21
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчика
 
A sustainable population essay for dynamic singapore by StudentsAssignmentHe...
A sustainable population essay for  dynamic singapore by StudentsAssignmentHe...A sustainable population essay for  dynamic singapore by StudentsAssignmentHe...
A sustainable population essay for dynamic singapore by StudentsAssignmentHe...
 
GD実践ゼミ2015 Nakajima
GD実践ゼミ2015 NakajimaGD実践ゼミ2015 Nakajima
GD実践ゼミ2015 Nakajima
 
IRS Form 1099-MISC
IRS Form 1099-MISCIRS Form 1099-MISC
IRS Form 1099-MISC
 
Heroic immerseus
Heroic immerseusHeroic immerseus
Heroic immerseus
 
Curso de office
Curso de officeCurso de office
Curso de office
 
Spot 2
Spot 2Spot 2
Spot 2
 

Similar to Командная разработка “толстых клиентов”

Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
Vasil Remeniuk
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
Омские ИТ-субботники
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
SQALab
 
Организация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий КопачёвОрганизация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий Копачёв
Mail.ru Group
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
Zestranec
 
Инструменты для з̶а̶х̶в̶а̶т̶а̶ ̶м̶и̶р̶а̶ отладки в Tarantool
Инструменты для з̶а̶х̶в̶а̶т̶а̶ ̶м̶и̶р̶а̶  отладки в TarantoolИнструменты для з̶а̶х̶в̶а̶т̶а̶ ̶м̶и̶р̶а̶  отладки в Tarantool
Инструменты для з̶а̶х̶в̶а̶т̶а̶ ̶м̶и̶р̶а̶ отладки в Tarantool
Timur Safin
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?
phpdevby
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
Yandex
 
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
Ontico
 
Adymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher SqlAdymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher Sql
Oleksandr Petrov
 
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
Business incubator HSE
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Yandex
 
Javascript 1
Javascript 1Javascript 1
Javascript 1
Andrey Dolinin
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Vladimir Kochetkov
 

Similar to Командная разработка “толстых клиентов” (20)

Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
бегун
бегунбегун
бегун
 
бегун
бегунбегун
бегун
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
 
Организация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий КопачёвОрганизация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий Копачёв
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
 
Yserver
YserverYserver
Yserver
 
Инструменты для з̶а̶х̶в̶а̶т̶а̶ ̶м̶и̶р̶а̶ отладки в Tarantool
Инструменты для з̶а̶х̶в̶а̶т̶а̶ ̶м̶и̶р̶а̶  отладки в TarantoolИнструменты для з̶а̶х̶в̶а̶т̶а̶ ̶м̶и̶р̶а̶  отладки в Tarantool
Инструменты для з̶а̶х̶в̶а̶т̶а̶ ̶м̶и̶р̶а̶ отладки в Tarantool
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
 
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
 
Adymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher SqlAdymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher Sql
 
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
 
Javascript 1
Javascript 1Javascript 1
Javascript 1
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
 
Perl in practice
Perl in practicePerl in practice
Perl in practice
 

More from Open-IT

How to make friends python with win32 api
How to make friends python with win32 apiHow to make friends python with win32 api
How to make friends python with win32 api
Open-IT
 
Mathematical optimization and python
Mathematical optimization and pythonMathematical optimization and python
Mathematical optimization and python
Open-IT
 
Секретный доклад
Секретный докладСекретный доклад
Секретный доклад
Open-IT
 
Rust: абстракции и безопасность, совершенно бесплатно
Rust: абстракции и безопасность, совершенно бесплатноRust: абстракции и безопасность, совершенно бесплатно
Rust: абстракции и безопасность, совершенно бесплатно
Open-IT
 
Введение в Apache Cassandra
Введение в Apache CassandraВведение в Apache Cassandra
Введение в Apache Cassandra
Open-IT
 
λ | Lenses
λ | Lensesλ | Lenses
λ | Lenses
Open-IT
 
Cooking Cassandra
Cooking CassandraCooking Cassandra
Cooking Cassandra
Open-IT
 
Fuel's current use cases, architecture and next steps
Fuel's current use cases, architecture and next stepsFuel's current use cases, architecture and next steps
Fuel's current use cases, architecture and next steps
Open-IT
 
Сам себе АНБ, API социальных сетей
Сам себе АНБ, API социальных сетейСам себе АНБ, API социальных сетей
Сам себе АНБ, API социальных сетей
Open-IT
 
Talkbits service architecture and deployment
Talkbits service architecture and deploymentTalkbits service architecture and deployment
Talkbits service architecture and deployment
Open-IT
 

More from Open-IT (10)

How to make friends python with win32 api
How to make friends python with win32 apiHow to make friends python with win32 api
How to make friends python with win32 api
 
Mathematical optimization and python
Mathematical optimization and pythonMathematical optimization and python
Mathematical optimization and python
 
Секретный доклад
Секретный докладСекретный доклад
Секретный доклад
 
Rust: абстракции и безопасность, совершенно бесплатно
Rust: абстракции и безопасность, совершенно бесплатноRust: абстракции и безопасность, совершенно бесплатно
Rust: абстракции и безопасность, совершенно бесплатно
 
Введение в Apache Cassandra
Введение в Apache CassandraВведение в Apache Cassandra
Введение в Apache Cassandra
 
λ | Lenses
λ | Lensesλ | Lenses
λ | Lenses
 
Cooking Cassandra
Cooking CassandraCooking Cassandra
Cooking Cassandra
 
Fuel's current use cases, architecture and next steps
Fuel's current use cases, architecture and next stepsFuel's current use cases, architecture and next steps
Fuel's current use cases, architecture and next steps
 
Сам себе АНБ, API социальных сетей
Сам себе АНБ, API социальных сетейСам себе АНБ, API социальных сетей
Сам себе АНБ, API социальных сетей
 
Talkbits service architecture and deployment
Talkbits service architecture and deploymentTalkbits service architecture and deployment
Talkbits service architecture and deployment
 

Командная разработка “толстых клиентов”

  • 3. Что нравится в CoffeeScript ● Require ● Отступы вместо скобок ● Классическое ООП ● Отсутствие var, необязательные скобки & return ● “Читаемые строки #{var}” ● Удобные конструкции для работы с массивами, объектами, циклами и т.п. ● Управляемый контекст “this”
  • 4. Require # Business logic and communications. require './portal/models' require './portal/routes' require './portal/server' # UI. require './portal/views/helpers' require './portal/views/header' require './core/views/template' …
  • 5. Classes, Inheritance, and Super class A constructor: (property) -> # … method: -> # … class B extends A constructor: -> super("Property value") method: -> super()
  • 6. Classes, Inheritance, and Super var A, B, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp. call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; A = (function() { function A(property) {} A.prototype.method = function() {}; return A; })(); B = (function(_super) { __extends(B, _super); function B() { B.__super__.constructor.call(this, "Property value"); } B.prototype.method = function() { return B.__super__.method.call(this); }; return B; })(A); class A constructor: (property) -> # … method: -> # … class B extends A constructor: -> super("Property value") method: -> super()
  • 7. Аргументы функций class Database connect : ( @host = 'localhost' @port = 80 options… callback ) -> # Тело функции / метода
  • 8. Аргументы функций class Database connect : ( @host = 'localhost' @port = 80 options… callback ) -> # Тело функции / метода var Database, __slice = [].slice; Database = (function() { function Database() {} Database.prototype.connect = function() { var callback, host, options, port, _i; host = arguments[0], port = arguments[1], options = 4 <= arguments.length ? __slice.call(arguments, 2, _i = arguments.length - 1) : (_i = 2, []), callback = arguments[_i++]; this.host = host != null ? host : 'localhost'; this.port = port != null ? port : 80; }; return Database; })();
  • 9. Простые if, unless return if error port = 8080 unless port port = if https then 443 else 80 callback?()
  • 10. Массивы numbers = [0..9] n = numbers[3..6] numbers[3..6] = [-3, -4, -5, -6] [foo, bar] = [1, 2]
  • 11. Контекст вызова функций и методов $('#element').on 'click', (e) -> @openMenu(e) $('#element').on 'click', (e) => @openMenu(e) $('#element').on('click', function(e) { return this.openMenu(e); }); var _this = this; $('#element').on('click', function(e) { return _this.openMenu(e); });
  • 12. Минусы CoffeeScript ● Новый синтаксис ● Сборка проекта ● Генерирует много кода ● (Отладка)