Какие наличие рецепта право для вас?

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 и сжимает его, удаляя комментарии и пробел …

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.