Зацените ангулярское чудо! (Здрасте всем кстати :) )
Фрагмент кода из angular2.0 alpha35
Зверская оптимизация :) try { d0 = length > 0 ? this._getByDependency(binding, deps[0], visibility) : null; d1 = length > 1 ? this._getByDependency(binding, deps[1], visibility) : null; d2 = length > 2 ? this._getByDependency(binding, deps[2], visibility) : null; d3 = length > 3 ? this._getByDependency(binding, deps[3], visibility) : null; d4 = length > 4 ? this._getByDependency(binding, deps[4], visibility) : null; d5 = length > 5 ? this._getByDependency(binding, deps[5], visibility) : null; d6 = length > 6 ? this._getByDependency(binding, deps[6], visibility) : null; d7 = length > 7 ? this._getByDependency(binding, deps[7], visibility) : null; d8 = length > 8 ? this._getByDependency(binding, deps[8], visibility) : null; d9 = length > 9 ? this._getByDependency(binding, deps[9], visibility) : null; d10 = length > 10 ? this._getByDependency(binding, deps[10], visibility) : null; d11 = length > 11 ? this._getByDependency(binding, deps[11], visibility) : null; d12 = length > 12 ? this._getByDependency(binding, deps[12], visibility) : null; d13 = length > 13 ? this._getByDependency(binding, deps[13], visibility) : null; d14 = length > 14 ? this._getByDependency(binding, deps[14], visibility) : null; d15 = length > 15 ? this._getByDependency(binding, deps[15], visibility) : null; d16 = length > 16 ? this._getByDependency(binding, deps[16], visibility) : null; d17 = length > 17 ? this._getByDependency(binding, deps[17], visibility) : null; d18 = length > 18 ? this._getByDependency(binding, deps[18], visibility) : null; d19 = length > 19 ? this._getByDependency(binding, deps[19], visibility) : null; } catch (e) { if (e instanceof AbstractBindingError) { e.addKey(this, binding.key); } throw e; } var obj; try { switch (length) { case 0: obj = factory(); break; case 1: obj = factory(d0); break; case 2: obj = factory(d0, d1); break; case 3: obj = factory(d0, d1, d2); break; case 4: obj = factory(d0, d1, d2, d3); break; case 5: obj = factory(d0, d1, d2, d3, d4); break; case 6: obj = factory(d0, d1, d2, d3, d4, d5); break; case 7: obj = factory(d0, d1, d2, d3, d4, d5, d6); break; case 8: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7); break; case 9: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8); break; case 10: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9); break; case 11: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10); break; case 12: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11); break; case 13: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12); break; case 14: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13); break; case 15: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14); break; case 16: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15); break; case 17: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16); break; case 18: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17); break; case 19: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18); break; case 20: obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19); break; } } |
DjDiablo, а вот вторая половина кода.
|
DjDiablo, лично я весьма скептически отношусь к версии 2.0. Что касается 1.х.х, то она уже надоела :D
Надоело писать обертки вида (см. под спойлером) для обновления скопа. 'use strict'; let {identity} = angular; export default ($window, $q) => { const {localforage} = $window; const __FORAGE = Symbol(); return class LocalForage { /** * @param {Object} options * @param {String} options.name * @param {String} options.storeName * @see [url]https://github.com/mozilla/localForage/issues/245#issuecomment-56895736[/url] * @see [url]http://mozilla.github.io/localForage/#config[/url] */ constructor(options) { this[__FORAGE] = localforage.createInstance(options); } /** * @see [url]http://mozilla.github.io/localForage/#getitem[/url] * @param {String} key * @returns {Promise} */ get(key) { let deferred = $q.defer(); this[__FORAGE].getItem(key).then(deferred.resolve, deferred.reject); return deferred.promise; } /** * @see [url]http://mozilla.github.io/localForage/#setitem[/url] * @param {String} key * @param {*} value * @returns {Promise} */ set(key, value) { let deferred = $q.defer(); this[__FORAGE].setItem(key, value).then(deferred.resolve, deferred.reject); return deferred.promise; } /** * @see [url]http://mozilla.github.io/localForage/#removeitem[/url] * @param {String} key * @returns {Promise} */ remove(key) { let deferred = $q.defer(); this[__FORAGE].removeItem(key).then(deferred.resolve, deferred.reject); return deferred.promise; } /** * @see [url]http://mozilla.github.io/localForage/#clear[/url] * @returns {Promise} */ clear() { let deferred = $q.defer(); this[__FORAGE].clear().then(deferred.resolve, deferred.reject); return deferred.promise; } /** * @see [url]http://mozilla.github.io/localForage/#length[/url] * @returns {Promise} */ length() { let deferred = $q.defer(); this[__FORAGE].length().then(deferred.resolve, deferred.reject); return deferred.promise; } /** * [url]http://mozilla.github.io/localForage/#key[/url] * @param {Number} index * @returns {Promise} */ key(index) { let deferred = $q.defer(); this[__FORAGE].key(index).then(deferred.resolve, deferred.reject); return deferred.promise; } /** * @see [url]http://mozilla.github.io/localForage/#iterate[/url] * @param {Function} callback * @returns {Promise} */ each(callback) { let deferred = $q.defer(); this[__FORAGE].iterate(callback).then(deferred.resolve, deferred.reject); return deferred.promise; } /** * @see [url]http://mozilla.github.io/localForage/#keys[/url] * @returns {Promise} */ keys() { let deferred = $q.defer(); this[__FORAGE].keys().then(deferred.resolve, deferred.reject); return deferred.promise; } /** * @returns {Promise} */ values() { let stack = []; let onEach = (value) => { stack.push(value); }; let onResolved = () => stack; return this.each(onEach).then(onResolved, identity); } }; } module.exports.$inject = [ '$window', '$q' ]; Планирую на vue.js переезжать. Там все чисто и прозрачно в большинстве своем. Нет провайдеров, сервисов, фабрик, констант и иже с ним. |
Цитата:
|
Цитата:
Поделись впечатлениями: что нравиться, что не нравиться в либе? |
Цитата:
Из минусов: слабое комьюнити и мало сторонних плагинов и т.д. Бурное развитие либы: каждая новая версия ломает обратную совместимость (но скоро 1.0, надеюсь будет стабилизация). Также огорчает отсутствие API для асинхронных операций, типо там this.$setTimeout и т.д. Собираюсь сделать плагинчик по этой теме. Такие вот дела. |
Часовой пояс GMT +3, время: 19:35. |