Javascript: как понять все фреймворки и философию дизайна?

Я был пользователем jQuery (и некоторые из его мелких плагинов) на некоторое время. Код Javascript, который я разрабатывал на протяжении многих лет, лучше всего можно описать как... грязный. Он использовал тонну глобальных переменных и функций здесь и там, не использовал стандартные способы организации кода, ни каких-либо шаблонов проектирования вообще.

в настоящее время я создаю новую версию веб-сайта, и я завершил выполнение бэкэнда с ГРУША::БАЗЫ ДАННЫХ MDB2 и умница шаблоны. Остальное-просто доморощенный PHP с некоторыми классами.

теперь я нахожусь в точке, где я добавлю слой Javascript поверх веб-сайта, чтобы улучшить удобство использования некоторых функций. (убедившись, что все деградирует изящно) я хочу писать лучше, чище, более организованный Javascript, чем раньше, поэтому я провел небольшое исследование. Я читал Стефанова Объектно-Ориентированный Javascript чтобы лучше понять некоторые понятия, я знал только свободно о (прототипы, конструкторы и т. д.) так же. Теперь я застрял в точке, где мне интересно, какие фреймворки Javascript я должен использовать, и как все это организовать.

после проведения моих исследований я понял Капучино И Цель-J и Sproutcore не то, что я искал. Процитировать капучино о странице:

Cappuccino не предназначен для создания веб-сайтов или создания существующих сайтов более "динамичными". Мы думаем эти цели слишком далеки от разработки приложения в единую систему. Такие проекты, как Prototype и jQuery, превосходны в этих задачах

вот так. Затем я узнал о Кофе Скрипт, который является скорее "компилятором" один к одному и не поможет мне с фактической организацией моего кода.

Я также наткнулся на некоторые статьи, которые дают рекомендации:

Я также узнал о костяк.js, обувка, JavaScriptMVC, Google Loader, инструменты jQuery, jQuery UI. Я не знаю, что делать со всем этим... То, что я знаю:

  • я не хочу вкладывать слишком много времени в изучая что-то слишком сложное, я хочу, чтобы вещи были простыми и гибкими, насколько это возможно (поэтому я не использую Symfony на бэкэнде, например), но чистый и организованный.
  • я хочу использовать jQuery, вопрос в том, что я должен использовать это? (это тоже совместимо)

прямо сейчас, я бы использовал jQuery и jQuery Tools и "организовать" все это в простом пространстве имен / объектном литерале с простыми свойствами и методами, а также, поскольку сайт локализован, я просто планирую использовать простой vsprintf (Как я делаю на бэкэнде) с парами key:value, загруженными из литерала объекта, предоставленного бэкэндом. JavaScriptMVC кажется интересным, но я боюсь, что это принесет слишком много сложности для проекта довольно небольшого размера. Вот где мне нужен твой совет! Заранее большое спасибо.

4 ответов


хорошо, моя попытка ответить:

нет "лучшего" способа сделать это. теперь вы знаете, что там, и я думаю, что у вас может быть предпочтение для себя для того, что вы хотите. В таком случае выберите фреймворк и изучите его наизнанку. (жаль тебя разочаровывать, но каждая структура имеет кривую обучения, некоторые крутые, некоторые очень легко, но в конце концов, чтобы использовать это хорошо вы должны инвестировать в него. Просто сделайте это, вы не пожалеете).

У вас конечно есть предпочтение чистого кода, поэтому вы можете принять во внимание некоторые соображения. Вы также говорите, что у вас есть предпочтение jQuery, что нормально, но есть некоторые ограничения (Как также указано в ссылке, предоставленной eskimoblood).

есть несколько хороших лекций и учебные пособия с советами о том, как структурировать ваш код в jQuery:

некоторые руководства по стилю:

инструменты для проверки кода

стандартные работы (javascript)

может быть больше.. возможно, больше людей могут внести свой вклад, но я также думаю, что вы почти достигли конца того, что вы можете узнать, прежде чем получить твои руки грязные. Многие из этих руководств написаны в очень общем виде, но интересно то, что javascript вызывается во многих конкретных ситуациях. Может быть полезно просто опубликовать некоторые из кода, который вы считаете "грязным", и мы можем помочь вам понять, как это сделать лучше. Удачи!


вы должны смотрите видео и читайте ссылки в статье и затем вы должны снова спросить себя, Является ли jQuery правильным инструментом. Возможно, вы будете использовать dojo, что намного лучше для больших проектов или вы посмотрите на позвоночник и где вы можете остаться с jquery. В конце концов, оба они более "javascriptish", чем что-то вроде sproutcore, cappuciono или даже GWT. А также гораздо легче понять, когда вы пришли из jquery.


один фреймворк, который следует учитывать, определенно ReactJS от Facebook. Эта структура довольно скользкая во многих отношениях.

Первое, что вы должны знать, что это представление. Его можно использовать на стороне сервера для предварительного рендеринга страниц, но он действительно сияет на стороне клиента. Поскольку это фреймворк представления, его можно использовать с магистралью или любой другой "задней передней"-конечной структурой.

одним из главных моментов реакции является ее быстрота. Он держит виртуальный DOM в памяти и виртуализировать все события веб-страниц. Таким образом, событие virtuals используется для сохранения агностики браузера событий.

виртуальный вид DOM делает программирование динамическим сайтом, как если бы вы программировали старый статический сайт. Вы можете просто снимать весь HTML для рендеринга в view engine (как если бы вы "перерисовывали" всю страницу), и он будет управлять операциями DOM. Он выполняет различие между новым виртуальным DOM и текущим виртуальным DOM и вставляет только узлы, которые нужно вставить. Таким образом, вы уменьшаете количество операций DOM и тем самым значительно увеличиваете скорость рендеринга.

хорошее место для начала-это в этом уроке который показывает, как использовать "Flux" (Веб-Поток, разработанный Facebook для своего сайта), чтобы реализовать приложение Todo!


вы создадите сайт, который будет сильно использовать AJAX? Тогда вы можете использовать Backbone.JS, чтобы организовать на стороне клиента на JS.

прочитайте эту статью Для справки:http://www.codethinked.com/building-epic-win-with-backbone-js