Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 10, 2014 17:11:37

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Angular Light

o7412369815963
Смешно слышать, тот же angular-ui без jQuery не работает. Видимо его разработчики делают что-то не то.
Ничего смешного. Если нужна прямая работа с DOM, то сегодня без jQuery никак. Но дело в том, что этот самый angular-ui уже есть и самому использовать jQuery не надо. Почти для всего есть готовые либы, который избавляют пользователя работать с jQuery.

У нас довольно крупный проект, где мы используем AngularJS. Как только перестали изобретать велосипеды, всё сразу перестало ломаться.



Офлайн

#2 Янв. 10, 2014 17:21:04

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Angular Light

o7412369815963
Мне в фреймворках нравится “биндинг в DOM”,
Как тут уже говорили - knockout, чем Ваше решение выгодно отличается от нокаута?
Я вижу knockout именно в качестве “лёгкой” альтернативы ангуляру. Этих MVC - MVVM фреймворков
сейчас как собак нерезаных, Вы предлагаете just another биндер. Если есть киллфичи, расскажите нам о них,
нет киллфич - оно не надо.
Вы обмолвились о якобы имеющихся возможностях,
Плюс, в aLIght есть фичи которые не сделать в Angular.js
вот давайте об этом поконкретнее, Ваше решение интересно именно если оно даст что-то новое, а Вы об этом говорите вскользь.



Офлайн

#3 Янв. 10, 2014 18:47:44

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Angular Light

Lexander
В зависимости от приходящих данных?
Не, данные уже в DOM-e, ну и можно приходящих добавить.

FishHook
Я вижу knockout именно в качестве “лёгкой” альтернативы ангуляру. Этих MVC - MVVM фреймворков
Вот! Я как раз knockout.js использовал до angular.js.
Я хотел взять от Angular.js и Knockout.js то что мне понравилось (даже на сайте упомянул)

1) Основное отличие у них - это отслеживание изменений, observable vs dirty check, последнее мне больше по душе (когда оба подходят), т.к. с observable всякой мороки, особенно мне не нравилось когда приходилось обычную переменную, которая везде используется, превращать в observable.
Т.е. я взял dirty check

2) Ang directives vs ko bindings, тут мне биндинги нокаута больше нравятся, из-за простоты, тебе передали element, далее делай что хочешь, никакой магии и т.п., по сути я этот способ и выбрал.

3) Проверка наличия директив, если директивы нет - то нокаут ругается в отличие от ангулара. +Взято.

4) Фильтры взял у ангулара.

5) описание биндинга: ng-click=“foo()” vs data-bind=“click: foo” - взял как в ангуларе.

6) ng-repeat vs foreach: отличие “крутить” дочерние или текущий DOM, в ангуларе оказался удобнее, взял его. хотя это всего лишь директива, которых можно разных сделать.

7) applyBinding взял у нокаута - подсунул элемент и поехало - просто и удобно.
Вот, наверно это все что я взял о обоих. Далее, что я не взял:
“Выкинул” из ангулара: constant, value, factory, service, provider - абстрактная хрень, которая убивает гибкость, вносит путаницу и т.п., но дает “стандарт”, вот вы используете фабрики?
Туда же приложения и зависимые инъекции, вот на счет зависимых инъекций - спорный вопрос, кому то они могут понравится, конкретно мне - нет, так же Армин Роначер негативно о них отзывался, мол не js стиль.

Вот, шелуху выкинули, осталось самое главное: биндинг + $digest + директивы. По сути aLight из этого же и состоит: биндинг + $scan (dirty check) + директивы.

Ну ещё я в aLight добавил статический биндинг: {{=variable}} помимо {{variable}}, “наследование” директив, ну ещё пара плюшек тут описал: http://habrahabr.ru/post/208282/

Вообщем пытался сделать микс angular.js + knockout.js

edit: добавил пару пунктов

Отредактировано o7412369815963 (Янв. 10, 2014 18:52:41)

Офлайн

#4 Янв. 10, 2014 19:51:05

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Angular Light

o7412369815963,
Вы, видимо не поняли сути вопроса,
речь не идет о VS.
Если у меня уже куча кода на ангуляре, то у меня нет стимула от него отказываться, если мне не предлагают решения кардинально облегчающего жизнь.
Если я начинаю новый проект, то я буду юзать то что знаю, или то что хорошо документировано, или то, что хорошо поддерживается сообществом или то, что уникально на рынке аналогичных продуктов.
Вы заявляете о том, что Ваш фреймворк умеет то, чего не умеет ангуляр.
Отлично, объясните конкретно этот момент, лучше на примерах. Дайте Ваш код на Вашем ангуляр-лайте и объясните, почему то же самое нельзя сделать на простом ангуляре.



Офлайн

#5 Янв. 10, 2014 20:44:19

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Angular Light

FishHook
Если я начинаю новый проект, то я буду юзать то что знаю, или то что хорошо документировано, или то, что хорошо поддерживается сообществом или то, что уникально на рынке аналогичных продуктов.
Ну это наверно проблема всех молодых проектов.

FishHook
нельзя сделать
Вот этот вопрос зависит от “рамок”, пример “на mysql можно хранить schema-free данные как в монге”, по этому же принципу “на angular.js можо сделать ххх если её переписать/дописать и т.п.” т.е. вопрос в удобстве (строго “нельзя” не существует, в рамках темы).

FishHook
лучше на примерах

1) Пример, выше, с директивой ( http://python.su/forum/topic/23192/?page=1#post-121552 ), я считаю что программист не знакомый с ангуларами, но свободно владеющий jQuery, затратит меньше времени и усилий для реализации этой директивы на aLight. Так же это относится к тем кто знает angular.js на среднем уровне. т.е. вопрос об уровне входа.

2) В aLight есть “наследование”, пример http://jsfiddle.net/lega911/u4WnM/ , видел 2 варианта наследования от Ajs - оба ужасные.

3) Биндинг к «оторванному» DOM, т.е. тот который не в document, на Ajs делается сложнее:
Нашел простое решение, хотя мне до этого подсказывали 2 костыльных способа.

4) Как вызвать свой код сразу после $digest/$apply даже если $digest сейчас в процессе обработки. В aLight можно так:
scope.$scan(function(){
    // do something
})
Знаю решение костыль для Ajs, но все же это не штатно.

5) Статический биндинг
<a href="{{=link}}">go there {{=link}}</a>
<a href="{{link_dyn}}">go there {{link_dyn}}</a>

Вы согласны что это “не сделать” (сделать сложнее) на Ajs?

Все эти примеры не с потолка, а реально были нужны в проекте.

edit: исправил 3 пункт.

Отредактировано o7412369815963 (Янв. 10, 2014 21:05:33)

Офлайн

#6 Янв. 10, 2014 20:49:46

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Angular Light

FishHook
Если у меня уже куча кода на ангуляре, то у меня нет стимула от него отказываться
Это случай “запущенный”, или “на перепутье коней…”.
Хотя в проекте где все было на Ajs, я сделал директиву с которой управление переходило к aLight - все работало стабильно, в итоге стало (признано) правильным решением (миграция).

Офлайн

#7 Янв. 11, 2014 12:47:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Angular Light

o7412369815963
затратит меньше времени и усилий
o7412369815963
2 костыльных способа
o7412369815963
Вы согласны что это “не сделать” (сделать сложнее)
Не согласен. Когда заявляют “нельзя сделать”, я это именно так и понимаю, дословно, нельзя - значит вообще нельзя, никак совершенно. Оказывается, нельзя - это можно, но по другому. При всем уважении, это какое-то словоблудие.
ИМХО, если есть фреймворк, способный на 100% покрыть нужды разработчика, нужно его использовать. А Вы призываете плодить сущности, Ваш ангуляр + jquery + … давайте еще сюда напихаем underscore, чёрта собачьего…
Что проще и правильней: обучить персонал одной технологии (проверенной и надёжной) и её юзать или в погоне за эфемерной выгодой страдать перфекционизмом фигнёй при этом невобранно нагружая клиента тоннами ненужного кода? Что у Вас за программисты такие, которые не осиливают такую вполне простую вещь, как AngularJs?



Офлайн

#8 Янв. 11, 2014 18:30:47

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Angular Light

FishHook
Что у Вас за программисты такие, которые не осиливают такую вполне простую вещь, как AngularJs?
Я плохой программист, наверное, но AngilarJS ни разу не показался мне простой штукой. Самый большой его минус, это время въезда, по моему опыту, чтобы писать на нём правильно, нужно месяц-два с ним разбираться.



Офлайн

#9 Янв. 11, 2014 18:36:36

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Angular Light

FishHook
Не согласен. Когда заявляют “нельзя сделать”, я это именно так и понимаю, дословно, нельзя - значит вообще нельзя, никак совершенно. Оказывается, нельзя - это можно, но по другому. При всем уважении, это какое-то словоблудие.
“Говорили что нельзя на ВАЗ 2107 долететь до луны, оказывается, нельзя - это можно, но нужно поставить реактивные двигатели, сделать правильный корпус и необходимую начинку”. Люди обычно учитывают контекст предложения. А вы придираетесь к словам.
Или на кой черт Angular.js если все можно сделать на JavaScript? Зачем python если все можно написать на C++?
Я же про “рамки” выше отметил, что если дописать Angular.js то можно перекрыть aLight, если дописать Backbone то можно перекрыть Angular.js
Или вам нужны утверждения типа “Такую директиву не возможно сделать в пределах 100 байт на голом ангуларе 1.2.0 rev 666, при том что в байте будет 8 бит …”, (хотя если написать 150кб кода, то можно, но к счастью мы не попадем в те 100 байт).

FishHook
одной технологии (проверенной и надёжной) и её юзать
Если бы все придерживались вашего подхода, то мы бы никогда не увидели линуксов, андройдов, афйфонов . Да что там, сейчас бы сидели на счетах - проверено и надежно.
Вы бы и Angular.js наверно не стали использовать в момент когда он появился. Хотя ему авторитет гугла помог (by Google), помню были статьи что это чуть ли не самое главное в ангуларе.

Вообщем вы не хотите обсуждать технические преимущества.

А про “проверенной и надёжной, распространенной, и большим комьюнити” я уже выше написал что это проблема всех новых проектов. Но это не техническая проблема. Конечно это нужно учитывать при использовании, но данный топик не об этом.
Хотя это и не удивительно - говорят самые большие споры между близкими технологиями, python vs ruby? “никто” не спорит о python vs asm. (обратите внимание, что я слово “никто” в ковычки взял, на всякий пожарный, а то я же сейчас могу об этом поспорить с женой, и утверждение станет ложным)

Офлайн

#10 Янв. 11, 2014 19:11:13

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Angular Light

ZZZ
Я плохой программист, наверное, но AngilarJS ни разу не показался мне простой штукой. Самый большой его минус, это время въезда, по моему опыту, чтобы писать на нём правильно, нужно месяц-два с ним разбираться.
Кстати хочу обратить внимание на слово “разобрался”, это значит что я знаю каждую запятую во фреймворке? или то что могу что-то более чем hello world?

Вот когда я взялся на ангулар, я переписал свой проектик с knockout.js на Angular.js (для целей изучения), сумарно получилось где-то > 40кб js написанного кода, потратил не более недели, проект работает стабильно. Но! я не использовал такие вещи как “constant, value, factory”, не пробовал ng-pluralize, angular.mock, $cookie. При этом ощущаю себя достаточно уверенно - могу сделать с ним “что угодно”.
Это считается что я с ним разобрался?, или какие критерии у слова “осилить”/освоить?

Я считаю важнее уметь находить и решать задачи чем пытаться все знать (хотя где-то бывает наоборот).

Я соглашусь с ZZZ, во многих сравнениях, у Angular.js считается более высокой порог вхождения, чем других (нокаут, бекбон…)
Мне ангулар нравился, но я согласен с этой популярной картинкой:

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version