Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.09.2015, 14:55
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Зацените ангулярское чудо! (Здрасте всем кстати :) )
Фрагмент кода из 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, 06.09.2015 в 15:01.
Ответить с цитированием
  #2 (permalink)  
Старый 06.09.2015, 15:29
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

DjDiablo, а вот вторая половина кода.

Последний раз редактировалось Lemme, 06.09.2015 в 15:33.
Ответить с цитированием
  #3 (permalink)  
Старый 06.09.2015, 21:43
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

DjDiablo, лично я весьма скептически отношусь к версии 2.0. Что касается 1.х.х, то она уже надоела
Надоело писать обертки вида (см. под спойлером) для обновления скопа.
'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 переезжать.
Там все чисто и прозрачно в большинстве своем. Нет провайдеров, сервисов, фабрик, констант и иже с ним.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 09.09.2015, 10:18
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Планирую на vue.js переезжать.
Уже юзаю, охуенно я скажу ) Тока скоро 1.0 выйдет и сломает совместимость )
__________________
kobezzza
code monkey
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2015, 11:31
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от kobezzza
Уже юзаю
отлично! В полку прибыло

Поделись впечатлениями: что нравиться, что не нравиться в либе?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 09.09.2015 в 11:44.
Ответить с цитированием
  #6 (permalink)  
Старый 10.09.2015, 10:17
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от nerv_ Посмотреть сообщение
Поделись впечатлениями: что нравиться, что не нравиться в либе?
Подкупает простота и скорость. Нету невероятного количество идиотских абстракций как в Ангуляре.

Из минусов: слабое комьюнити и мало сторонних плагинов и т.д. Бурное развитие либы: каждая новая версия ломает обратную совместимость (но скоро 1.0, надеюсь будет стабилизация). Также огорчает отсутствие API для асинхронных операций, типо там this.$setTimeout и т.д. Собираюсь сделать плагинчик по этой теме.

Такие вот дела.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 10.09.2015 в 22:22.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск