JavaScript называют все, от больших до ужасно сборка language в Интернете, но мы все его использовать.Любовь JavaScript или ненавидеть: все признают, имеются серьезные недостатки и не многие другие choices.
Let’ начнем с некоторых основных негативов.JavaScript не имеет хорошего ответа для некоторых действительно основные особенности современных языков программирования: частные переменные и функции, пакеты и модули, стандартные механизмы локализации, код завершения в editors.
В то время как наличие отсутствует множество функций, it’ с очень динамичным характером языка, который пугает многих верующих статического программирования.Это все действительно JavaScript:
obj1 = { func1: function() { return "I'm function 1"; } }; obj1['func2'] = function() { return "I'm function 2"; }; obj1['fu' + 'nc' + 3] = function() { return "I'm function 3"; } var f = 'func4'; obj1[f] = function() { return "I'm function 4"; } alert(obj1.func2()); alert(obj1.func3()); alert(obj1.func4());
Большинство языков поддержке динамический код loading, но наличие поощряет ее.JavaScript имеет много темных углов.Знаете ли вы, что добавление двух массивов в результатах JavaScript в пустую строку, или [] + {}
Результаты в строку [object Object]
, а {} + []
= 0? Wat??
JavaScript делает это так легко писать нечитаемый код, который it’ S невозможно написать крупных проектов в JavaScript … за исключением Twitter, Facebook, Google, каждый крупный сайт you’ когда-либо слышал и сотни others.
Эти недостатки вызывают у меня проблемы каждый день, но я все еще люблю JavaScript.It’ весело кода и it’ S далеко от сборки языка в Интернете.Ассамблея почти невозможно писать от руки и еще труднее читать:
C005 B7 80 04 STA A ACIA C008 86 11 LDA A C00A B7 80 04 STA A ACIA
JavaScript легко написать.Если у меня есть кнопка и хотят знать, когда кто-то нажимает на нее, я пишу click
функции:
$('#myButton').click(function() { alert('I was clicked'); });
Ваша бабушка может догадаться, что делает этот код.That’ поэтому наличие является хорошим первый программирования language и великого языка прототипов.Наличие программ идут с пустой страницы в рабочее приложение смешного быстро.They’ повторно быстро писать, don’ т требуют компилятор и позволяют делать все, что вам нужно.
Эти два взгляда на наличие трудно примирить.Является ли наличие неопределенных свободные язык, предназначенный для привести к преждевременной седины, или интересное место, чтобы работать?Ответ both.
Мы сталкиваемся с этим выбором с каждым новым веб-проекта. Должны ли мы написать JavaScript, или другой язык, который генерирует ? Эта статья покажет вам, как choose.
Наличие постоянно Improving
JavaScript является самым популярным на стороне клиента языком программирования в мире.It’ S сложно найти сайт, который doesn’ T запустить его.It’ S также долгий путь с введением отличные библиотеки, такие как jQuery, Backbone и многие другие.Наличие выигрывает легко для небольших проектов, но спотыкается, когда проекты и команды получают larger.
Каждый крупный проект JavaScript принимает конвенции, чтобы компенсировать отсутствие языковых особенностей.They’ Re простых моделей, как с помощью подчеркивания для обозначения некоторых функций как частные, или добавления комментариев перед аргументами, чтобы указать ожидаемую type.
function formatDate(/* Date */ d) { var day = d.getDate(); var month = d.getMonth() + 1; var year = d.getFullYear(); return date + "-" + month + "-" + year; }
Эти комментарии помощь, но there’ ничего, чтобы остановить вас от прохождения строка, число или что-то еще на formatDate
функции.Вы can’ T соблюдение кодирования конвенции и you’ никогда не будете знать it’ S сломан, пока код на самом деле работает в производственной среде и не удается.Дополнительная проверка типа, как instanceOf
делает программа завершится с лучшей сообщение об ошибке, но она по-прежнему не во время выполнения, а не попасться на compiler.
Такие инструменты, как JSLint или JSHint Найти общих проблем синтаксиса, как с помощью ==
, когда вы должны были использовать ===
, но они don’ T адрес больше вопросов.Библиотеки как RequireJS оказать некоторую поддержку модулей в JavaScript, но that’ все еще всего лишь условность.Не имея ничего на реализацию этих моделей, you’ будете тратить бесконечные часы отслеживания досадные ошибки.It’ ы никогда не забава для отладки кто-то else’ S JavaScript.
Программисты любят придумывать новые решения существующих проблем, но есть aren’ T много хороших альтернатив в JavaScript.
Google Web Toolkit (GWT)
Google сделал первые серьезные усилия, чтобы заменить JavaScript с GWT.Идея заключалась в том, чтобы написать Java-код и скомпилировать его в JavaScript.Java предоставляет множество возможностей языка JavaScript отсутствует, и компилятор позволяет делать много проверки, прежде чем ваш код выполняется.С хорошим отладчик и библиотеку UI добавлено, GWT было похоже, что возьмет на себя world.
Это didn’ t.
GWT hasn’ T не удалось (пока), но это hasn’ T удалось тоже.Java является сложным языком писать.Она имеет много сложностей и требует глубокого понимания объектно-ориентированного программирования.Помните, Java была изобретена, чтобы заменить C .
Большинство Java’ сложности поступает из жесткого проблемы решает.That’ Приятно, если вы собираетесь иметь те проблемы, но излишним, если вы weren’ t.
GWT добавить сложности веб-страницы на вершине Java.Было также позиционируется как способ написания кода для Web без необходимости беспокоиться о браузерах или HTML.Это произвело интерфейсы, которые выглядели неуклюжими и побежал медленнее.Это также привело к некоторым плохим анти-patterns.
It’ S можно написать хорошее применение в GWT, но это занимает многоиз work.
Еще больше беспокойства являются четкие признаки того, что GWT isn’ T будущем.Google’ с сохранением, но община сокращается, и его мечты о мировом господстве, давно прошли.Даже Google никогда не использовал GWT.Все их основных продуктов (поиск, Gmail, Maps, Calendar, Docs, Google) написаны на JavaScript.Well… рода JavaScript, но we’ получу этого мало later.
Я все еще использую GWT профессионально, но я сомневаюсь, что с каждым новым проектом.GWT попытался кардинально изменить экосистемы JavaScript и it’ с жестким, чтобы превратить авианосец на dime.
CoffeeScript
CoffeeScript команда didn’ T пересмотреть JavaScript, они просто дали ему подтяжку лица.CoffeeScript добавлен новый синтаксис для улучшения некоторых изо дня в день трудностей программирования JavaScript без радикального изменения языка.
Вместо этого:
$(document).ready(function() { alert('Hello World!'); });
CoffeeScript позволяет писать так:
$(document).ready -> alert 'Hello World!';
Общей философии является то, что написание меньше кода, значит, у вас меньше ошибок.CoffeeScript упрощает синтаксис JavaScript, избавляя от необходимости объявить var
и используя пробелы отступов вместо фигурных скобках.
CoffeeScript быстро растет, любимы Рубин programmers и ненавидят тех, кто с тайным поклонником фигурные скобки.CoffeeScript компилируется в JavaScript либо когда страница будет работать, или впереди времени, в течение шага построения.
CoffeeScript делает много синтаксических улучшений по сравнению с JavaScript, но он имеет два основных недостатка.Первое, что вы can’ T отладку непосредственно в CoffeeScript.Браузеры don’ T перспективе CoffeeScript изначально так что вы получите все ошибки в составлены JavaScript и должны перевести их обратно в исходный код.Это означает, что вы can’ T написать заявление без CoffeeScript довольно глубокое понимание JavaScript это будет produce.
Второй крупный недостаток CoffeeScript в том, что it’ S основном только наличие с другой синтаксис.CoffeeScript значит писать меньше кода, но это doesn’ T исправить реальные проблемы JavaScript как язык.It’ все еще случай, что я люблю свою CoffeeScript и ненавидеть всех else’ s.
Google Closure Tools
Примерно в то же время, что CoffeeScript вышел, Google сделал еще одно усилие, чтобы улучшить JavaScript с Google Closure Tools.Google пытался сделать GWT следующей доминирующей технологией Web, но пусть Закрытие бесшумно скользить в дверь.
Закрытие включает в себя шаблоны механизм и библиотека виджетов, но самые интересные части Закрытие Compiler и Закрытие Linter.
Closure Compiler (например, YUI Compressor) принимает ваши JavaScript и хлюпает его вниз так, это занимает меньше времени для загрузки и работает быстрее в производстве.Общая идея в том, что вы развиваете в стандартных JavaScript и скомпилировать его для release.
Closure Compiler Получается так:
function sayHello() { alert('Hello World!'); } $(document).ready(function() { sayHello(); });
В этом:
$(document).ea(function(){alert("Hello World!")});
Result’ S трудно читать, но он работает много faster.
Закрытие компилятор поддерживает два основных режима работы: простой и расширенный.Простой режим принимает любые JavaScript и сжимает его, удаляя комментарии и пробел …
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров