Продолжая и заканчивая рассмотрение темы js-фреймворков, позвольте кратко рассмотреть несколько альтернатив текущим js-лидерам, которые весьма колоритны для того, чтобы о них преступно промолчать. Ещё раз повторю, что в области js-frameworks всё настолько быстро развивается-движется-изменяется, что, как говорит Алиса, “нужно бежать со всех ног, чтобы просто оставаться на месте”. Итак, сегодня самое интересное, из того, что не вошло в Top 6, исключительно по-моему субъективному мнению…
Google Web Toolkit – это набор инструментов с открытым исходным кодом, которые позволяют web-программистам сопровождать сложные приложения на JavaScript, являющиеся фронтендом для приложений написанных на Java. GWT постоянно кочует в топах зарубежных обзоров js-фреймворков, хотя мне пока до конца непонятно, что он там делает, т.к. фактически весь состоит из Java. К счастью, в русскоязычных обзорах таких некорректных параллелей не делают, но для определенности я решил хоть кратко упомянуть о нем и его природе здесь, раз уж так повелось, как говорят физики, “ по историческим причинам”.
Mochikit, очень быстро растущий в популярности легковесный фреймворк, у которого много объективных преимуществ по сравнению с его более старшими собратьями по цеху. Во-первых, очень качественная и обширная документация, которая делает его изучение чрезвычайно комфортным. Во-вторых, сотни тестов и очень современная, строго реализованная методология разработки и контроля позволяет быстро и легко находить возможные ошибки. Фреймворк находится под очень сильным впечатлением от Python — имеется много характерных именно для него трюков, которые делают здешнюю разработку очень понятной для питонистов (многое взято интересных идей от Twisted). И в заключение, его инновационная гибкость архитектуры такова, что его можно запросто адаптировать под любую задачу, вот что значит сделать “ правильный дизайн” – есть чему поучиться другим фреймворкам. Используется в TurboGears.
Node.js самый необычный из всех, потому что это событийно-ориентированный I/O фреймворк на JavaScript-движке V8. Предназначен для создания масштабируемых сетевых приложений, таких как, например, веб-сервер. Node.js по целям использования полностью аналогичен с фреймворками Twisted на языке Python и EventMachine на Ruby. В отличие от большинства программ JavaScript, этот фреймворк исполняется не в браузере клиента, а на стороне сервера. Вообще — это настолько большое и перспективное направление, что мы обязательно вернемся к этой штукенции в отдельной развернутой статье.
Js-фреймворки переживают сегодня очень бурное развитие, например, ещё вчера очень популярный base2, сегодня уже во многом ушел в тень, — буквально каждый месяц появляются все новые перспективные новички и всё более и более интересные разработки в этой области. Поэтому закончить этот обзор хотелось бы ссылками на хорошие обзоры пока ещё новых и малоизвестных, но зато очень свежих по идеям и перспективных фреймворков, которые, кто знает, быть может, уже через год, будут лидерами этой стремительной гонки в развитии Web 2.0:
Если посмотреть на статистику, с которой мы начали, то окажется, что примерно 12% web-программистов до сих пор предпочитают “только чистый JavaScript”. С одной стороны, сегодня это читается, как борьба за «чистый асм» в 90-ых между ассемблерщиками и сишниками. С другой стороны, высокоуровневые абстракции (коими в первую очередь должны являться фреймворки) могут помочь не только с преодолением рутины, но и, возможно в равной степени, с развитием массового отупения. Позвольте отдельно пояснить этот неприятный момент.
Очень жаль, но сегодня в среде web-программистов можно услышать фразы: «я выучил JavaScript по jQuery». В резюме многие пишут, что знают JS, а на деле внезапно выясняется, что это Prototype.js :-) При дополнительных вопросах на собеседовании еще могут начать гневно доказывать, что в нынешней реализации JS есть классы, ибо я постоянно пользую Class.create(). Поймите меня правильно, я не за возвращение в прошлое и хождение в лаптях, даже если так делали наши очень уважаемые предки.
Все же, конечно, грешить на то, что что-то там в браузере, дескать, «жрет много памяти» — сегодня не самый убедительный аргумент против фреймворков, т.к. сегодня человеко-часы стоят намного дороже, чем железо. Поэтому, фреймворк при правильном его использовании (устранение рутины и экономия времени разработки), — вполне себе разумная вещь.
Это я всё к тому, что лично мне одинаково неприемлемы крайности, такие как проповедование “чистого JS” с одной стороны, так и полная деградация и не знание даже элементарных основ устройства и принципов работы своего же фреймворка, — с другой. При серьёзном использовании фреймворка, если вы профессиональный web-программист, а не школьник-любитель, очень желательно знать и сам язык фреймворка. На этом очень важном утверждении-выводе и закончу сегодняшний обзор ведущих js-фреймворков, — всего вам хорошего в эти жаркие летние дни!
5 комментариев
Спасибо за обзоры.
Но, есть небольшое допонение:
node.js - такое же поделие как и похапе, это всего-навсего асинхронная однопоточная хрень, ориентирванная в основном на пэхэхпэшников, т.к. это общиезвестный факт, что в PHP нет и подобия инструмента для асинхронного программирования, в отличие, скажем, от Perl, Ruby и Python, у которых соответственно есть AnyEvent, EventMachine и Twisted.
1. В JavaScript нечего учить. Уж не знаю, автор, как долго ты учил синтаксис этого языка, что прям так пользователей фреймворков за людей не считаешь.
2. И что, что GWT использует Java? Он транслируется в JavaScript.
3. Казалось бы, причём здесь тухлый js-framework node.js и клиентские фреймворки?
p.s. статья - отброс.
Отличная статья. Полностью солидарен с автором во всем, в особенности с философским заключением. Крайности действительно вредны. Как минимум основы языка той или иной библиотеки/фреймворка, человек, претендующий себя называть веб-разработчиком объязан.
Статья хорошая, я солидарен абсолютно с автором касаемо Google Web Toolkit. По нему сделал свой анализ, в котором сравнил его возможности с jQuery. Читать здесь - http://devdream.net/?p=74
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. (c) nodejs.org
Платформа - не фреймворк. Ты вообще не понимаешь о чем пишешь.