background preloader

Javascript

Facebook Twitter

JavaScript Garden - Vimperator. Although JavaScript deals fine with the syntax of two matching curly braces for blocks, it does not support block scope; hence, all that is left in the language is function scope. function test() { // a scope for(var i = 0; i < 10; i++) { // not a scope // count } console.log(i); // 10} There are also no distinct namespaces in JavaScript, which means that everything gets defined in one globally shared namespace. Each time a variable is referenced, JavaScript will traverse upwards through all the scopes until it finds it.

In the case that it reaches the global scope and still has not found the requested name, it will raise a ReferenceError. The Bane of Global Variables // script Afoo = '42'; // script Bvar foo = '42' The above two scripts do not have the same effect. Again, that is not at all the same effect: not using var can have major implications. // global scopevar foo = 42;function test() { // local scope foo = 21;}test();foo; // 21 Local Variables var foo = 3; bar = 4;}test(10); Hoisting. From The Server To The Client — Client-Side Templating | Smashing Coding - Vimperator. Advertisement Using templates in the browser is becoming more and more widespread. Moving application logic from the server to the client, and the increasing usage of MVC-like patterns (model–view–controller) inspired templates to embrace the browser.

This used to be a server-side only affair, but templates are actually very powerful and expressive in client-side development as well. Image Credit: Viktor Hertz Why Would You Use It? In general, leveraging templates is a great way to separate markup and logic in views, and to maximize code reusability and maintainability.

With a syntax close to the desired output (i.e. In today’s dynamic applications, the client frequently needs to update the user interface (UI). So let’s take a fresh look at a viable alternative: client-side templating. First Impressions For starters, I’d like to give a definition of the term “template”. Let’s observe an example, and see what a basic template might look like: <h1>Story</h1><ul><li>Tarzan</li><li>Jane</ul></ul> Powerful New CSS- and JavaScript-Techniques (2012 Edition) - Vimperator.

Advertisement Since our last round-up of useful CSS techniques1, we’ve seen a lot of truly remarkable CSS geekery out there. With CSS3, some of the older techniques now have become obsolete, others have established themselves as standards, and many techniques are still in the “crazy experimentation” stage. Since the release of the previous post, we’ve been collecting, sorting, filtering and preparing a compact overview of powerful new CSS techniques. Today we finally present some of these techniques. Use them right away or save them for future reference. Please note that many techniques are not only CSS-based, but also use HTML5 and JavaScript. Table of Contents CSS Transitions And Animations CSS transitions and animations are often used to make the user experience a bit more smooth and interesting, especially when it comes to interactive effects on hover or on click.

CSS3 dodecahedron9 A fancy dodecahedron experiment, created using CSS Transforms and a tiny JavaScript snippet. Last Click. Greensock: анимация на JavaScript / Хабрахабр - Vimperator. Недавно я писал, что Greensock, прекрасная библиотека для скриптовой анимации на Flash, теперь поддерживает и JavaScript. В этой статье я продемонстрирую основы работы с GSAP v12 (beta). Результат будет примерно таким: Сразу оговорюсь, что графику и идею для примера я взял из документации $fx(), ведь кто из нас откажется проанимировать НЛО? :) Сначала подключим необходимые скрипты: Зачем столько? JQuery нам нужен для того, чтобы выбирать элементы.

Сравнить оба варианта в демо 1 Анимация CSS-свойств происходит чуть сложнее (главное — не запутаться в фигурных скобках): Можно указывать свойства по одному, а можно указать целый класс. Дополнительно можно указать количество повторений анимации (-1 означает бесконечный повтор): По умолчанию, все анимации происходят с красивым замедлением в конце. Воспользуемся полученными знаниями и сделаем бесконечно анимированный фон с блекджеком и параллаксом: Посмотреть демо 2 С помощью спрайтовой анимации включим габаритные огни на НЛО. Как сделать 3D шутер на JavaScript за пару дней / Хабрахабр - Vimperator. В субботу у меня ближе к полуночи появилось свободное время и жгучее желание сделать игрушку под браузер, забавы ради и увеличения опыта для. С жанром определился довольно быстро: т.к. на MMORPG в этот раз у меня точно не хватило бы времени, я решил делать просто мясорубку. Минут 20 ушло на написание базового кода для управления игроком и его противниками.

И тут встал вопрос — 2D или 3D (вернее так: Canvas/SVG или все же полноценный WebGL)? Учитывая, что я сейчас участвую в разработке проекта, где WebGL является базовой технологией для 3D режима, выбор я сделал осознанно. Уже примерно полгода я работаю с замечательной библиотекой Three.js и в этот раз она снова стала моим лучшим помощником. В следующий час была создана и настроена сцена, добавлена болванка игрока в виде пары примитивов и создана первая версия противников. Теперь немного подробностей. Собственно, в качестве результата в ночь на воскресенье я имел следующую картинку: Все исходники проекта открыты для исследования. JavaScript: от начала до конца / Хабрахабр - Vimperator. TL;DR Эта обзорная статья. Такое себе "краткое содержание предыдущих серий".

Она будет полезна для новичков, или тех, кто не следил за отраслью в последнее время. Для новичков это будет первый шаг во "Вселенную JavaScript", бывалые смогут освежить свои знания. У JavaScript очень удивительная судьба. Он преодолел путь от самого не понимаемого до самого удивительного языка. У него было тяжелое детство: Изначально Автор хотел написать функциональный язык. Bad parts Из-за того, что язык писался чуть ли не за две недели (это очень мало), в нем был допущен ряд багов. Язык программирования со слабой типизацией, с ошибками в реализации, с тяжелым наследием, с особенностями функционального языка вызывает только одно ощущение — «КАК?

Чтобы не сойти с ума при работе с JavaScript, надо понимать, как работает слабая типизация, как работает область видимости переменных (глобальные переменные зло), как работает this, prototype и конструкторы. JSON, AJAX и кроссбраузерность Flash off Server-side Angular. Переполнение стека вызовов JavaScript, SetTimeout и снижение производительности AJAX / Хабрахабр - Vimperator. Проблема Некоторое время назад в работе над клиентской (javascript) частью движка josi возникла, кстати, достаточно часто встречающаяся проблема переполнения стека:Uncaught RangeError: Maximum call stack size exceeded (google chrome) В статье рассматривается решение без использования setTimout или setInterval.

Суть Причина такого поведения известна и понятна, и в той или иной форме всегда вызвана следующим. Классическая(прямая) рекурсия порождает цепочку последовательных вызовов, что соответственно ведет к наполнению стека вызовов, однако, стек вызовов браузера достаточно мал, в chrome на момент тестирования это 500 вызовов, в safari, если не ошибаюсь, тоже. Решение Классическим решением (имею ввиду подавляющее количество статей предлагающих его) является использование косвенной рекурсии посредством: setTimeout либо setInterval. та же бесполезная функция, но теперь теоретически бесконечная, разве что k переполнится Я переработал функцию из приведенной выше статьи в AMD модуль.

MVC-фреймворки на JavaScript: сравнение Marionette и Chaplin / Хабрахабр - Vimperator. Разработка JavaScript-приложений — горячая тема и люди интересуются какой же фреймворк лучше выбрать. В этой статье я сравню два из них. Marionette и Chaplin — фреймворки, которые работают поверх популярной библиотеки Backbone.js. Оба хотят облегчить разработку одностраничных JS-приложений. В таких приложениях, фронтэнд выполняет задачи, которые в прошлом выполнялись на сервере (вроде рендеринга HTML из данных).

Бэкбон спроектирован, как минималистичная библиотека, а не как полноценный фреймворк. Мой опыт показал, что Бэкбон хорош только как ядро архитектуры JS-аппликейшна. Сперва-наперво хочу заявить, что я со-автор Чаплина. Содержание Нетехнические аспектыОбщие особенности, устраняющие недостатки БэкбонаДостоинства МарионеткиНедостатки МарионеткиДостоинства ЧаплинаНедостатки ЧаплинаЗаключение Нетехнические аспекты Марионетка и Чаплин — проекты с открытыми исходниками, выпускаемые под MIT-лицензией и активно разрабатывающиеся на Гитхабе.

Общие особенности, устраняющие недостатки Бэкбона. Особенности работы или «За что я люблю JavaScript»: Замыкания, Прототипирование и Контекст / Хабрахабр - Vimperator. Зародившись как скриптовый язык в помощь веб-разработчикам, с дальнейшим развитием JavaScript стал мощным инструментом разработки клиентской части, обеспечивающий удобство и интерактивность страницы прямо в браузере у пользователя. Из-за специфичности среды и целей, JavaScript отличается от обычных языков программирования, и имеет множество особенностей, не понимая которые, довольно сложно написать хороший кроссбраузерный код. Думаю, что большинство программистов, писавших код на JavaScript больше пары дней, сталкивались с этими особенностями. Цель данного топика не открыть что-то новое, а попытаться описать эти особенности «на пальцах» и «недостатки» сделать «преимуществами». В данном топике будут рассматриваться: ЗамыканияПрототипированиеКонтекст выполнения Предисловие Мне, как автору, конечно же хочется описать все-все-все возможности, которыми богат JavaScript.

Замыкания, или «Эти необычные области видимости» «Архиполезная штука!» Var title = "Hello World"; alert(title); Скрытый текст Код: Основной цикл в Javascript / Блог компании TradingView / Хабрахабр - Vimperator. Все мы слышали про ajax и node.js. Они прочно обосновались уже не просто в словарном запасе, но и в наборе инструментов веб-разработчика. Ajax — асинхронное подтягивание данных с сервера на страницу, node — фреймворк с асинхронным IO. Но как в таком однопоточном языке, как Javascript, реализуется та самая асинхронность? Вы, наверное, уже догадались из заголовка, речь пойдет об основном цикле («main loop»).

Как в спецификации Начнем издалека. Открываем ECMA-262 и видим… что в ней вообще ничего не сказано про то, что скрипт должен делать после того, как отработает, как его поставить на паузу или остановить. Как это сделано в WSH Самое, пожалуй, простое окружение — это Windows Script Host, он же WSH. WScript.echo( new Date() + ': Hello world! ' Для несложных задач этого вполне хватает, задачи же посложнее могут превратиться в бег с препятствиями. Создаем функцию для запуска IE, создаем в глобальном скопе коллбек с хитрым именем и запускаем. Не работает. Как это сделано в браузерах alert Пруф Код <!