Примеры хорошего кода JavaScript в веб-приложениях с открытым исходным кодом
Я изо всех сил пытаюсь найти способ написания хорошего кода JavaScript, который был бы эффективным, общепринятым другими разработчиками и не очень уродливым.
До недавнего времени то, что я использовал, было просто буквальными объектами и битами jQuery, но после прочтения Douglas Crockford "JavaScript: хорошие детали". Теперь я полностью понимаю, что там больше JavaScript, чем AJAX, модификации DOM и простая анимация.
Проблема заключается в том, что JavaScript, похоже, не очень стандартизирован. Количество доступных моделей ООП/наследования подавляет меня. Я не привык к каждому фреймворку/библиотеке, предоставляющему собственную имплантацию наследования. Я также не хочу принимать неправильное решение в отношении таких вещей, потому что это будет означать переписывание всего кода в случае возникновения некоторых проблем.
Итак, я ищу существующие веб-приложения с открытым исходным кодом, которые используют JavaScript, если возможно, на стороне клиента, чтобы увидеть, какие шаблоны используются в реальных проектах. Я хотел бы видеть код веб-приложений, а не фреймворки или библиотеки. Я не возражаю, если эти веб-приложения основаны на какой-либо структуре (и если она Dojo или RequireJS, это будет еще лучше, потому что я их использую;)
Ответы
Ответ 1
То, что я всегда рекомендую всем, кто интересуется такими вещами, это: ПЯТЬ, ЧТО ВАША КОМАНДА ДЕЛАЕТ. Если они используют методы camelCase
для методов, вы используете его. Если они используют snake_case
для переменных, вы это делаете. Если ваша команда предпочитает пробелы над вкладками; используйте их.
Никогда не входите в стабильную команду со стандартизованными изменениями стиля, потому что она выглядит лучше, если это не вызывает серьезных проблем.
Если вы не работаете в команде, и вы заинтересованы в использовании стиля кодирования; затем используйте стиль библиотек, которые вы используете наиболее.
Организация мудрая, Closure - лучший... но мне как-то кажется, что я читаю JAVA вместо javascript. Наведите указатель мыши.
Ответ 2
Угу. Есть несколько гуру JavaScript, которые много пишут о том, как писать JavaScript, о прототипе OOP с JavaScript, даже о том, как следует делать отступы и именовать переменные.
Однако, если вы ищете большую реализацию JavaScript для изучения в качестве примера, я бы искал реализацию HTML5-игр. Это практически гарантировало, что вы найдете достаточно большой, хорошо написанный пример, который не минимизирован.
Ответ 3
Если вас интересуют стандарты JavaScript, я бы посмотрел commonJS. У них много хороших идей о том, как следует делать JavaScript.
BravoJS - хорошая реализация модуля для браузера.
Как и в примерах, в комментариях упоминался исходный код jQuery. jQuery делает хорошую работу, но я также рассмотрю Narwhal JS для примеров того, как все должно быть сделано.
Вот хорошая бесплатная книга шаблонов моделей, которую я нашел полезной Основные шаблоны JavaScript jQuery.
Вы не найдете решение вашей проблемы, и именно так разработан JavaScript. Я бы рекомендовал экспериментировать. Я считаю, что у Дугласа Крокфорда есть много замечательных идей, но это не значит, что вы должны следовать за ним к письму.
Ответ 4
Хороший проект: http://impactjs.com/
Хорошее чтение: http://addyosmani.com/blog/essentialjsdesignpatterns/
Ответ 5
Отличный вопрос. Я не смог найти один пример хорошо написанного объектно-ориентированного приложения с открытым исходным кодом. Крошечный MCE был таким-то, но я бы не счел это хорошо написанным: http://www.tinymce.com/
Однако, я написал чистый, хорошо factored объектно-ориентированный javascript на работе. Он проприетарный, поэтому я не могу поделиться им, но я могу объяснить, что сработало для меня, чтобы узнать, как это сделать:
1) Прочитайте учебник по объектно-ориентированному программированию mozilla javascript. Их объяснение наследования javascript - это именно то, что использует закрытие Google. Лично я думаю, что Крокфорд называет псевдоклассификацию легче всего читать и поддерживать с 4 из 5 других языков программирования, которые я знаю, используя классы (java, С#, python и php. Perl the oddball здесь без классов).
https://developer.mozilla.org/en/Introduction_to_Object-Oriented_JavaScript
2) Прочитайте книгу "Объектно-ориентированный Javascript" Стояна Стефанова.
3) Возьмите существующую процессуальную базу кода JavaScript и реорганизуйте ее на объекты. Используйте советы в "Чистом коде" Роберта К. Мартина, применительно к любому языку программирования.
4) Структурируйте свой код, чтобы он имел много разных файлов, похожих на то, как вы будете использовать классы на языке с классами.
5) Внедрите инъекцию зависимостей без контейнера IOC, создав все ваши объекты на верхнем уровне и подав их в объекты, которые зависят от них.
Там намного больше, но, надеюсь, это полезное начало.
Вот что я считаю правильным способом реализации наследования в javascript. это из библиотеки закрытия google:
goog.inherits = function(childCtor, parentCtor) {
/** @constructor */
function tempCtor() {};
tempCtor.prototype = parentCtor.prototype;
childCtor.superClass_ = parentCtor.prototype;
childCtor.prototype = new tempCtor();
childCtor.prototype.constructor = childCtor;
};
Ответ 6
Существует несколько способов узнать, как написать хороший JS-код.
Вы можете читать книги. Лучший способ организации JS-кода и общих паттернов, включая наследование, - это шаблоны JavaScript Stoyan Stefanov.
Еще один хороший способ узнать - просто посмотреть отличный код других разработчиков и использовать его. Лучшая библиотека, которую я видел с точки зрения организации кода и использования шаблонов, - Google Closure Library. Он используется внутри компании Google в RIA, например, в Документах Google Gmail.
Ответ 7
Кстати, сегодня на SlashDot есть review шестого издания Javascript: The Definitive Guide, который, по мнению рецензента, "сохраняет свою корону в качестве конечного справочного ресурса для программистов JavaScript". Это 1,100 страниц.
Да, это не пример приложения, которое вы искали, но в книге есть много примеров и советов о лучших практиках.
Ответ 8
Добрый человек в irc предложил эту книгу, и я нашел ее полезной.
Изучение шаблонов проектирования JavaScript
Книга Адди Османи
http://addyosmani.com/resources/essentialjsdesignpatterns/book/