Изменения

ECMAScript и все-все-все

483 байта добавлено, 11:49, 9 февраля 2017
м
Destructuring @@
; subfooter: <span style="font-family: Consolas; background: #f1dd56; padding: 5px; font-style: normal; color: black">ECMAScript и все-все-все</span>
</slideshow>
; PDF-версия: [[Media:ES6 and everyone.pdf|ES6 and everyone.pdf]]
== ECMAScript — ассемблер будущего,<br /> бэкенд, фронтенд и все-все-все @@ %% ==
На ЛОРе до сих пор шутят, что «Java тормозит», а что ж тогда JS?
* А ничего — и Java быстрая, и он быстрый. {{gray|Мамонты видать шутят}}
*: {{mag|из скриптоты node.js быстрее всех}}
* Но он же интерпретируемый?
*: НЕТ! '''Интерпретируемых''' языков уже вообще нет.
* PHP 7 = 6.7s
* Ruby 2.3 = 14.3s, Python 3.5 = 17s, 2.7 = 20s
* Perl = 24s {{gray|(у меня 25.6s)}}
* '''PHP 5.6 = 42.5s''' :))))) {{mag|ахаха, прекрати}}
==== Разница между 64 и 32 бит: i386 @@ ====
<plot>
set style fill solid 1.0 noborder
set boxwidth 0.7 relative
plot 'lang.dat' using 2:1:(0.0):2:(($1)-(binwidth/2.0)):(($1)+(binwidth/2.0)) with boxxyerrorbars title 'x = Быстрее PHP 5.6 в x раз'
DATASET lang
1.0 49.9
</plot>
==== Разница между 64 и 32 бит: amd64 @@ ====
<plot>
set style fill solid 1.0 noborder
set boxwidth 0.7 relative
plot 'lang.dat' using 2:1:(0.0):2:(($1)-(binwidth/2.0)):(($1)+(binwidth/2.0)) with boxxyerrorbars title 'x = Быстрее PHP 5.6 в x раз'
DATASET lang
1.0 50.95
[[File:asmjs-bench.png|600px]]
=== Производительность — Производительность — итого @@ ===
* Итого, V8 — V8 — «смешанный» JIT* В Firefox — Firefox — [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/Tracing_JIT тоже всё шустро]
* Чакра Наделлы тоже очень похожа на V8
* Постоянная битва :) https://arewefastyet.com/
* всё остальное — '''object'''
** хеш — объект дефолтного типа: <tt><nowiki>{ key: "value" }</nowiki></tt>
** массив — разновидность объекта (класс Array): <ttstyle="white-space: nowrap"><nowiki>[ "value1", 2, 3, "value3" ]</nowiki></tt>
** функции — тоже объекты, их typeof = '''function'''
* regexp literals: <tt><nowiki>var re = /<html[^<>]*>/i;</nowiki></tt>
* break label, continue label
* Цикл по {{blue|ключам}}: <tt><nowiki>for (var i </nowiki>{{blue|in }}<nowiki> obj) {}</nowiki></tt>* Цикл по {{green|значениям (ES6)}}: <tt><nowiki>for (var i </nowiki>{{bluegreen|of}}<nowiki> obj) {}</nowiki></tt>
<source lang="javascript">
<source lang="javascript">
var obj = { key: 'abc', value: [ 1, 2 ] };
var { key: k, value: [ a, b ], other: o = 3 } = obj; // 3 - значение по умолчанию
// можно в параметрах функции!
* requirejs — система загрузки и сборки AMD модулей
* [http://jshint.com/ jshint] — проверка на ошибки и стиль
* yui-compressor, closure compiler — compiler — обфускаторы* [http://rollupjs.org/ rollup]  — система сборки для ES6 модулей (используется реже)
=== IDE, редакторы, отладка @@ ===
* React: {{blue|ПРОСТО ИСПОЛЬЗУЙТЕ JS :)}} (обычный for или Array.map())
<blockquote>Angular 2 continues to put “JS” «JS» into HTML. React puts “HTML” «HTML» into JS.</blockquote>
==== JSX @@ ====
* componentWillUpdate(p, s), componentDidUpdate(p, s)
* propTypes, mixins, statics
 
==== А вот почему это красиво @@ ====
 
ExtJS. Класс «панель». {{red|Где тут делать инициализацию?}}
 
[[File:Extjs-events.png|400px]]
 
{{red|beforerender? render? afterrender? afterlayout? added? add? show?}} {{gray|спойлер: нигде}}
==== Библиотеки для React @@ ====