Angular Light + Object.observe
Angular Light - це самостійний клієнтський MV (C/VM) фреймворк, який побудований на ідеях Angular.js і Knockout.js, і схожий на спрощений Angular.js
Вийшла версія Angular Light 0.8 яка включає різні поліпшення і виправлення, основні зміни:
1. Підтримка Object.observe та Array.observe, що може збільшити продуктивність веб-програм.
Використання Object.observe - це опціональна фіча, так само її можна включати для окремих Scope (scope дерев). Браузери які не підтримують Object.observe продовжують працювати через dirty-checking, так само потрібно знати деякі нюанси.
Деякі сферичні тести:
Швидкість пошуку змін у scope, jsperf.
Результат можна бачити на картинці вище.
Пошук змін у масивах, у цьому тесті 2000 масивів, кожен містить по 2000 елементів, на першому проході немає змін у масивах, на другому відбувається зміна 100 масивів. Приблизні результати на моєму ноутбуці:
Dirty-checking: 35ms і 65ms
Object.observe: 0.1ms і 1ms
Так само для цієї фічі є запас для збільшення продуктивності, наприклад «digest» цикл може виключати ті scope в яких не було змін, це може поліпшити показники на порядок (для тестів вище).
Хоча в реальних додатках загальна продуктивність не буде така хороша тому що не можна все покрити за рахунок Object.observe і якась частина буде працювати через dity-checking, але для великих додатків профіт може бути відчутний.
2. Можливість ізоляції Angular Light, це дозволяє вбудовувати свій додаток в чужі сторінки без «шкоди» - на сторінці не буде ніяких глобальних змінних від програми і фреймворку.
Так само є можливість використовувати різні версії Angular Light на одній сторінці, і створювати копії Angular Light якщо потрібна необхідність. angularlight.org/tutorial/isolated-alight.html#ru
3. Приватні директиви, контролери та фільтри.
Для кожного scope (scope дерева) можна вказати свій набір директив, зробити приватні директиви. Для цього в scope потрібно зробити змінну $ ns і додати туди потрібні директиви, контролери, фільтри. Приклад jsfiddle.net/lega911/9mfpbrw7
4. Вироблено поліпшення продуктивності та споживання пам'яті, збільшено покриття тестами, що налічує майже 800 перевірок.
Попередні статті:
- Angular 0.6, основні зміни
- «Ліниве» підключення директив і препроцесор
- Керуємо декларативним біндингом даних в HTML
- Спадкування директив
