JavaScript принято считать прототип-ориентированным языком программирования. Но, как ни странно, этим подходом практически никто не пользуется: большинство популярных JS-фреймворков явно или неявно оперируют классами.
В этой статье я хочу рассказать об альтернативном способе программирования на JavaScript, без использования классов и конструкторов — чистым прототип-ориентированным ООП и особенностях его реализации на ECMA Script 5.Читать полностью »
Метка «javascript» - 41
Нужны ли в JavaScript классы?
2013-06-12 в 20:02, admin, рубрики: class, constructor, javascript, lazy initialization, prototype, Веб-разработка, класс, конструктор, Программирование, прототип, метки: class, constructor, javascript, lazy initialization, prototype, класс, конструктор, ооп, Программирование, прототипИспользуем bower в django проектах с django-bower
2013-06-12 в 16:26, admin, рубрики: bower, django, javascript, python, метки: bower, Django, javascript, python
Многим уже надоело лазить по куче сайтов и скачивать js библиотеки и плагины. Да и таскать когда-то скачанные, но уже давно протухшие версии не очень круто. Эти проблемы решает bower.
Но с ним тоже многое нужно делать вручную: следить за components
каждого проекта, руками дёргать bower install
. После pip
с requirements.txt
это делать даже как-то лень.
Поэтому представляю вам django-bower, который берёт на себя установку и обновление bower пакетов по списку из settings
и прозрачную работу с staticfiles
.
Читать полностью »
Прошлое и будущее компиляции JavaScript
2013-06-10 в 13:27, admin, рубрики: javascript, история, Песочница, метки: javascript, историяСейчас мы воспринимаем как должное быстрое выполнение js-кода в браузерах, и с каждым днем становится все больше вдохновляющих примеров того, что можно реализовать с помощью JS. Но так было далеко не всегда. В этой статье поговорим о JS-движках, отвечающих за компиляцию кода в браузерах, об их историческом пути ускорения и возможных будущих путях.
Первым движком, компилирующим js-код в нативный стал SpiderMonkey, который был представлен в браузере Netscape 2.0 в 1995 г. Миф о его быстром создании хорошо задокументирован. У Брендана Айка было всего 10 дней на дизайн языка и построение компилятора. Javascript был успешен с самого начала, и к августу того же кода Майкрософт уже встроила свою версию JScript в Internet Explorer 3.0. К концу 1996 язык был принят в комиссию для формальной стандартизации, и уже в июне следующего года обрел официальный стандарт ECMA-262. С тех пор поддержка JS стала обязательно для каждого браузера, и каждый крупный производитель начал строить свой движок для поддержки JS. В течение долгих лет эти движки развивались, заменяли друг друга, переименовывались, и становились основой для следующих движков. Отследить все созданные версии — задача не для слабых духом.
Читать полностью »
Генератор ASCII-артов на HTML5
2013-06-10 в 11:32, admin, рубрики: canvas, filereader, html, html5, javascript, метки: Canvas, filereader, html5, javascript Доброго времени суток, уважаемые хаброжители.
В этой статье я расскажу о том, как при помощи HTML5 можно сделать простенькое приложение, которое будет генерировать ASCII-арты на основе обычных изображений. Статья ориентирована на тех, кто только начинает свое знакомство с такой замечательной технологией, как HTML5, коим являюсь и я. Профессионалы вряд ли найдут для себя что то новое.
Дело было вечером, делать было нечего
Копался я недавно в интернете в поисках обоев и наткнулся на одно интересное изображение(1.1мб). И меня “зацепила” идея рисовать изображения разноцветными буквами. Порывшись в интернете узнал, что это называется ASCII-art. Ну и конечно же первая мысль: “А запилю ка я приложение, что бы мои любимые обои таким образом нарисовало!”
Сказано — сделано. Есть время, есть желание — почему бы не попробовать. Читать полностью »
Node.js: JavaScript ты ли это?
2013-06-09 в 10:42, admin, рубрики: Google Chrome, javascript, node.js, метки: Google Chrome, javascript, node.jsПриветствую тебя, exports.users.habrauser.
Чуть более недели назад на хабре появилась статья, в которой затрагивалась «проблема»: Node.js — это JavaScript или нет. Некоторые аргументы, представленные в статье были справедливыми, но, увы, безосновательны. Другие же аргументы были вовсе абсурдными и не правдивыми. Я не буду писать о знаниях автора статьи в данной области, даже не буду давать ссылки на это статью (дабы статья перенесена в черновики, она осталась только в архивах). Я же просто сравню скрипты Node.js и JavaScript в таком виде, в котором все его привыкли видеть.
Читать полностью »
Конфигурирование через скрипты вместо XML и JSON на примере realtime multiplayer игры
2013-06-09 в 7:00, admin, рубрики: dsl, game development, Gamedev, groovy, java, javascript, метки: dsl, Gamedev, groovy, java, javascript
Shortcuts: github, tiles.js tiles.groovy
Не секрет, что объектов в играх на порядок больше чем их возможных поведений. При прототипировании описания объектов можно составлять прямо в коде на Java, С++ или C#, но там всё довольно быстро запутается. Потом объекты выносят в базу данных, либо в XML или JSON конфиг. Это сильно помогает, ведь после редактирования конфигурации пересобирать код не требуется, и этим могут заниматься не только программисты, но и спецы по предмету (для игр это гейм-дизайнеры и контентщики). Когда разрастается команда либо количество объектов переходит какую-то черту, программисты пишут удобный редактор, который позволяет визуально править этот JSON-конфиг. В результате на выходе получается какой-то трудно поддерживаемый монстр.
Если вы не собираетесь нанимать множество людей которые вообще не умеют кодить, то можно попробовать пойти другим путём: описывать метаданные с помощью Domain Specific Language.
Читать полностью »
Еще один загрузчик скриптов для JavaScript
2013-06-05 в 19:25, admin, рубрики: javascript, loader, requirejs, метки: javascript, loader, requirejs При разработке одного сайта мне понадобился загрузчик скриптов, так как хотелось что бы загрузка вызывалась из js кода. Из готовых решений нашел requirejs и yepnope. Requirejs — модульный, что к моим требованиям не подходило. Yepnope — асинхронный, это означает, что код в каждом файле мне пришлось бы обертывать в callback функции. Ничего не оставалось, кроме как написать что-нибудь самому. И вот что у меня получилось: wakeloader — безмодульный синхронный загрузчик скриптов для JavaScript. В этой статье я расскажу про него.
Читать полностью »
Реализация «классов» в JavaScript
2013-06-04 в 1:18, admin, рубрики: AtomJS, class, javascript, MooTools, Песочница, метки: AtomJS, class, javascript, MooTools Привет всем. JavaScript это весьма гибкий язык, но так получилось что классов в этом языке нет. Да, в ECMAScript 6 появятся классы, но еще не скоро наступят те времена, когда большинство пользователей будут использовать браузер с этой версией языка. А пока программисты на JavaScript используют различные фреймворки (MooTools, AtomJS и другие) для создания «классов». Прочитав эту статью вы узнаете: как устроены выше упомянутые фреймворки, и как самим на чистом JavaScript можно реализовать классы несколькими способами.
Читать полностью »
«Workspace» и «Сниппеты» в Chrome Dev Tools
2013-06-03 в 15:20, admin, рубрики: chrome, DevTools, Google Chrome, javascript, sass, snippets, workspace, Веб-разработка, метки: chrome, DevTools, javascript, sass, snippets, workspace
Workspace и Сниппеты — 2 инструмента в Chrome Dev Tools, о существовании которых не все знают. Эти инструменты упрощают веб-разработку, поэтому я решил сегодня о них рассказать.
Читать полностью »
Сравнение эффективности минимизаторов CSS- и JavaScript-кода
2013-06-02 в 20:04, admin, рубрики: Bundle Transformer, Closure Compiler, css, CSSO, javascript, JSMin, Microsoft Ajax Minifier, Packer, UglifyJS, WebGrease Semantic CSS Minifier, YUI Compressor, Веб-разработка, Клиентская оптимизация, минимизация, метки: Bundle Transformer, Closure Compiler, css, CSSO, javascript, JSMin, Microsoft Ajax Minifier, Packer, UglifyJS, WebGrease Semantic CSS Minifier, YUI Compressor, клиентская оптимизация, минимизация
Разработчики, использующие Bundle Transformer, часто спрашивают у меня: «Какой минимизатор обладает самой высокой степенью сжатия?». В принципе, в сентябре прошлого года в своей статье «Вышел Bundle Transformer 1.6.2 или что изменилось за полгода?» я уже проводил сравнение минимизаторов по степени сжатия кода, но это сравнение было поверхностным и не было подкреплено цифрами.
В этой краткой статье мы проведем сравнение наиболее популярных алгоритмов минимизации CSS- и JS-кода на примере адаптеров-минимизаторов из Bundle Transformer. В качестве исходных файлов будут использоваться файлы bootstrap.css
и bootstrap.js
из Twitter Bootstrap версии 2.3.2. Измерять размеры файлов мы будем с помощью YSlow.
Читать полностью »