Dojo 2 уточнює і розширює оригінальні інтерфейси Dojo, видаляючи застарілі функції та узгоджуючи термінологію згідно з доповненнями, внесеними ECMAScript з моменту первинного випуску Dojo в 2004 році. Мета Dojo 2 це підтримка тільки ECMAScript 5+. Так, особливості, які були в Dojo 1 і які стали частиною специфікації ECMAScript, були видалені з фреймворка.
Dojo 2 написаний на TypeScript. Це дозволяє користувачам Dojo скористатися перевагами додаткової статичної типізації і дозволяє Dojo бути опублікованими в AMD, CommonJS і ES6 форматі модулів для використання з нативними модульними системами в будь-якому сучасному оточенні.
Загальний підхід Dojo 2Dojo Toolkit почав створюватися в 2004 році групою однодумців розробляють JavaScript, які втомилися винаходити колесо і створювати милиці навколо невідповідності браузерів.
Місія Dojo Toolkit в тому, щоб забезпечити цілісність і простоту у використанні функцій API, які дозволяють розробникам створювати простіше підтримувані веб-додатки і не турбується про невідповідності і примхи кожного браузера.
Ми випустили Dojo 1.0 в 2007 році і продовжували його безперервно розвивати, вводячи поняття, які в даний час стали основними у розвитку JavaScript. В той час, використання модулів JavaScript, promises/deferreds, MVC, CSS препроцесора і системи збирання було сприйнято багатьма як складне і непотрібне. Як ми знаємо, ці речі стали частиною розвитку JavaScript сьогодні, і ми дуже раді, що більшість розробників JavaScript в даний час прагне до розвитку в цьому напрямку.
Основні принципи
Ми витратили багато часу, думаючи про те, що повинен вміти JavaScript фреймворк наступного покоління. Недостатньо просто додати нові функції, збільшити номер версії і назвати його «Dojo 2». У ньому повинен бути набір основних принципів, що визначають майбутній розвиток. Світ JavaScript значно змінився з часів народження Dojo. Місія фреймворку залишається такою ж, але те, як це зроблено, буде сильно відрізнятися.
Модульність
В даний час (принаймні на цьому тижні) у світі JavaScript вважають, що все, що може бути розділене на окремі пакети, має бути розділене. Наприклад, якщо все що вам потрібно це основні маніпуляції DOM і обробка подій, то ви можете взяти пакет, який робить тільки це.
Це здорово працює для невеликих проектів, але, коли вимоги ростуть і складність зростає, все більше пакетів з декількох джерел додаються до проекту. Ідея, що ви можете просто змінити пакет на інший пізніше — утопія. При створенні програмного забезпечення для великих корпорацій, часто неможливо працювати таким чином, т. к. їх юридичні відділи вимагають чистої інтелектуальної власності — код розглядається і юридично приймається перед використанням.
Наш підхід з Dojo 2 полягає в золотій середині між окремими пакетами і єдиним Dojo Toolkit. Ми будемо розробляти, збирати і випускати функціональність ядра Dojo разом з такими пакетами, як dgrid, dstore і Intern. Розробники будуть вільно використовувати і самостійно модернізувати частини, які їм потрібні, або використовувати зібраний випуск Dojo Toolkit. Поділ Dojo дозволить іншим внести свій вклад більш легко і випуски будуть відбуватися набагато швидше і менш болісно.
Використання існуючої екосистеми
Dojo, можливо, у багатьох напрямках був першим, але, враховуючи поширення JavaScript мікро-бібліотек і інструментів, у нас часто немає підстав, щоб підтримувати власне рішення тільки тому, що воно наше. Там, де є порівнянна або найкраща реалізація, ми будемо думати над тим, щоб використовувати її. Наприклад, ми будемо документувати наш код з допомогою JSDoc, а не DojoDoc як ми робили в часи розробки Dojo 1.x.
Покращена документація
До речі про документації: ми старанно працювали над поліпшенням документації для Dojo 1.х, але наші вимоги до документації Dojo2 ще вище. Багато в чому проблеми з документацією були викликані відсутністю інструментів. Використовуючи сучасні рішення, такі як JSDoc, Markdown і GitHub, ми можемо збільшити якість документації і швидкість додавання та оновлення документів.
Продовження просування JavaScript
По-перше, Dojo 2 буде написаний на TypeScript. В той час, як ES6 / ES2015 приніс багато необхідних поліпшень, є багато незакінчених речей. Такі мови, як TypeScript, дозволяють додавати поліпшення перш, ніж вони будуть додані до мови. Тоді ми можемо легко скласти транспайлер в AMD, CJS або ES6 модулі. Це дозволяє поліпшити сама мова, але що ще більш важливо, полегшити життя розробникам.
Сучасні оточення
На додаток до десктопних браузерам, метою Dojo 2 є підтримка максимально можливого кількості сучасних JavaScript оточень. Це означає підтримку мобільних телефонів, планшетів, Node.js / io.js, VR гарнітури і багато іншого.
Віджети
Віджети були однією з основних особливостей Dojo 1.x, але багато чого змінилося після того, як ми представили Dijit. Ми все ще думаємо який підхід обрати Dojo 2 — Dijit, нативні віджети, веб-компоненти або щось зовсім нове. Наш початковий акцент робиться на визначенні основної функціональності для Dojo 2, після цього ми почнемо визначати загальний підхід для віджетів.
План
Ми працюємо над кожною частиною Dojo 2 в кілька кроків.
Дизайн. Визначити основну функціональність і API, щоб створити високий рівень «специфікації» для кожного Dojo 2 пакета.
Розробка. Використовуючи специфікацію створену на першому кроці, розробити і задокументувати функціональність. Після чого використовувати Intern щоб перевірити, що це працює.
Випуск. Dojo 2 буде упакований як набір різних модулів. Із завершенням кожного модуля ми ближче до Dojo версії 2.0.