Является ли mootools альтернативой jquery + позвоночник / позвоночник / sprouteCore - PullRequest
15 голосов
/ 22 февраля 2012

Я был постоянным Java-разработчиком, теперь я также работаю над JavaScript.пару лет назад, когда я начал изучать JavaScript, первая библиотека, которую я попробовал, была jquery, как и большинство людей.Но это усложнило мне жизнь, и через некоторое время я начал писать довольно большое приложение на JavaScript.Я не собирался вместе, используя jquery.У меня была огромная кодовая база без особой структуры.Это был метод обновления блоков HTML с использованием селекторов.Затем я попробовал mootools, и, как разработчик java, он мне очень понравился.И я смог написать управляемые веб-приложения с огромной кодовой базой.

Насколько я понимаю, Mootools не считается предпочтительным способом написания JavaScript, потому что он имитирует обычный OO вместо языка OO на основе прототипов по умолчанию.Так что теперь, чтобы по-настоящему понять javascript и желание гулять с миром, я решил попробовать другие подходы, поэтому я снова вернулся к jquery и понял, что только jquery недостаточно.Итак, начали смотреть на текущие трендовые фреймворки, такие как backbone, spine, ember.js, sprouteCore.Как ни странно, я обнаружил, что эти платформы по своей сути пытаются имитировать обычные ОО, такие как mootools, только имея конструкторы и создавая объект класса и повторно используя этот объект класса для создания экземпляров объектов.Так

  • Я что-то упустил?
  • Действительно ли mootools не так?
  • Проект Mootools очень жив и выпускает новые версии / функции, но я не вижу, чтобы многие говорили об этом в Интернете, также нет никаких сравнений с позвоночником / позвоночником и т. Д.

1 Ответ

41 голосов
/ 23 февраля 2012

Насколько я понимаю, Mootools не считается предпочтительным способом написания JavaScript, потому что он имитирует обычный OO вместо языка OO на основе прототипов по умолчанию.

Откуда ты это взял? Самое замечательное в javascript - это то, что он так свободно напечатан (посмотрите, что я там делал) - вы можете написать то же самое в разных направлениях. Есть также так много способов абстрагировать и упаковать его - и это относится от простого new Array() против [] к тому, как вы структурируете свое приложение.

Если вы любите JavaScript (или просто знаете его и тайно ненавидите), вам будет хорошо с MooTools. API - это, в основном, нативная спецификация js или ES5 или - редко - дополнительная утилита, которая также кажется «естественной». Выделяется заметное исключение Class. И тот факт, что вы можете абстрагироваться от необходимости иметь дело с прототипным наследованием, передав объект в специальную функцию-конструктор Type, которая возвращает ваш экземпляр, ... о, подождите. Это выглядит по-другому, но то, что он делает, звучит как обычный javascript. Только проще - почему не вы предпочитаете это?

В наши дни многое делается в связи с бумом MVC на стороне клиента и этим «новым способом разработки приложений». Внезапно, люди jQuery получили роскошь водопроводной воды! Я говорил с многими разработчиками MooTools по этому поводу и (не) неожиданно обнаружил, что большинство думает, что MooTools редко нуждается в чем-либо подобном. Я склонен согласиться с ними. Единственная зияющая дыра - это контроллер представления с шаблонизацией, но есть немало решений.

Дело в том, что вы не можете напрямую сравнивать инфраструктуру MVC с MooTools, это не одно и то же. Совсем. Вы можете сравнить так называемые конструкторы моделей с классами.

Сейчас я потратил некоторое время на изучение различных решений и шаблонов MVC-фреймворков, чтобы посмотреть, можно ли превратить наше новое приложение в форму «наилучшей практики».

По сути, я попробовал backbone.js (с и без адаптера mootools) и нашел его неудобным для использования после MooTools - это было похоже на шаг назад. Когда я говорю использовать , я не имею в виду, что не могу его использовать, но это неудобно, если расширить и продолжить. Я уверен, что это просто опыт, но мне еще предстоит прочитать все примеры паттернов магистрали.

Типичная проблема, с которой я столкнулся - хотел иметь специальное свойство Model, которое говорит ему использовать localStorage для выборки / сохранения. Непонятно как - примеры показывают, что вы можете направить Backbone.sync к одному или другому, но не к обоим одновременно. Я должен был на самом деле украсить функцию и расширить ее, сохраняя исходную ссылку на случай, если модель не требует localStorage. НЕ лучший / самый очевидный шаблон для поддержания и оставляет меня зависимым от их изменений, не нарушая мой код.

В MooTools я бы просто расширил свой класс Model и мог бы определить собственное свойство Class Mutator (например, Binds или Implements). Готово. Пиши, что знаешь, мол, и не зря ...

Другая проблема - она ​​тесно связана с данными, и вы не можете повторно использовать модели, такие как классы - например, модель User загружает пользователя и визуализирует через представление User Edit. Затем вы хотите создать нового клиента, и внезапно вы не можете повторно использовать старый объект, который легко и просто отображает то же представление, но с пустыми значениями. Я думаю, что это также будет связано с неопытностью с моей стороны или плохой архитектурой.

Ember.js Я нашел немного больше интерфейса в качестве интерфейса, хотя и не совсем щелкнул. Честно говоря, позвоночник был меньше проблем с настройкой.

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

Гаррик Чунг выпустил фреймворк под названием Neuro , который обладает огромным потенциалом.

Я написал Epitome - полная реализация MVP, основанная на классах и событиях и заключенная в модули AMD, смело проверяйте ее. Он также поставляется с компоновщиком документации и многими мелочами, которые помогут вам начать работу.

SeanMonstar выпустил верфь, которая используется Mozilla Flight Deck - http://seanmonstar.github.com/Shipyard/. В то время как это не нативные mootools, это mootools-ish с классом mootools и т. Д. - только без расширения нативных, поэтому отличная альтернатива.

Кстати, попробуйте irc.freenode.net #mootools или список рассылки, и вы всегда получите хороший ответ.

Во всяком случае, достаточно на MVC. Пункты о MooTools были сделаны бесчисленное количество раз. Ненавистники будут ненавистниками. Те, кто любит это, не оглядываются назад. Если вы программист из ООП-фона или ищете что-то, что хорошо подходит для шаблонов, сделайте себе одолжение и придерживайтесь этого. Впереди захватывающие времена. Дорожная карта для 1.5: AMD, для 2.0 (иначе, Prime ). Прототипирование хост-объекта необязательно. Это были две самые большие проблемы в глазах критиков. Больше нет «грязных» прототипов, чтобы люди могли неправильно использовать циклы for ... in для необъектов и без проверок hasOwnProperty. Во всяком случае ...

Другие вещи, о которых нужно беспокоиться, могут иметь важное значение. Мол, размер «сообщества». Я думаю, что иметь здоровое сообщество - это здорово, но даже если вы посмотрите на jquery, количество реальных участников по сравнению с пользователями невелико. Соотношение качества CODE и хорошо выглядящих эффектов плохое. Плагины, которые вы можете использовать - многие из них написаны плохо, не работают и не поддерживаются. Когда вы рисуете линию, это гораздо менее эффектно, чем вы думаете!

Я не говорю, что у mootools или других фреймворков таких проблем нет. Справедливо будет сказать, что люди из MooTools, и особенно разработчики ядра, довольно приватны и менее откровенны в том, что они делают. Это может послать неправильные впечатления, я не знаю. Это конечно не jQuery. В конечном итоге - если у вас есть ресурсы и ноу-хау, используйте то, что работает лучше всего, а что будет масштабироваться. Есть даже те, которые используют coffeescript и клянутся им. Кто я такой, чтобы судить ...

В интересах полного раскрытия информации - вам будет НАМНОГО сложнее найти достойного разработчика mootools при наборе персонала. Нельзя игнорировать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...