HTML5 [1] |
CSS3 [1] |
JavaScript [3] |
JS in HTML5 [4] |
Canvas (Context2D) [1] |
Canvas (WebGL) [0] |
Browser Technologies [2] |
jQuery [1] |
ExtJS [0] |
Prototype.js [2] |
SVG [2] |
Browsers [2] |
Mozilla Plugins
[0]
XUL, Jetpack, etc.
|
Web [2] |
MeowW [4] |
iOS [0] |
Алгоритмы [0] |
Криптография [0] |
Теория игр [0] |
Теория вероятностей [0] |
Математика [1] |
Мат. анализ [0] |
Алгебра [0] |
Дискретная математика [0] |
Теория графов [0] |
Комбинаторика [0] |
Теория чисел [0] |
Комплексный анализ [0] |
Матлогика
[0]
Математическая логика, её связь с теорией алгоритмов и т.п.
|
Тензоры [0] |
Геометрия [0] |
Топология [0] |
Дифференциальная геометрия [0] |
Дифференциальные уравнения [0] |
17:18:58 CoffeeScript - JavaScript в стиле Ruby, часть 1 |
Совсем недавно появившийся CoffeeScript уже получил довольно большую известность. Дело в том, что он позволяет писать на JavaScript с более простым и удобным синтаксисом. Относительно удобным :). По сути, CoffeeScript - это JavaScript в стиле Ruby. Немного непривычно, но быстро привыкаешь и уже начинаешь считать его удобным. Как это работает?Теперь логичный вопрос: как это работает? Ведь браузер не поддерживает CoffeeScript? На самом деле всё очень просто. Код на CoffeeScript транслируется в JavaScript-код. Вариант 1: мы используем CoffeeScript в Node.js. В таком случае нам надо воспользоваться менеджером пакетов ноды и установить в неё Coffee. Code npm install -g coffee-script Кстати, файлы CoffeeScript имеют расширение .coffee. Можно также установить компилятор в качестве программы (написан на Ruby); но давайте не будем рассматривать этот вариант. Лучше вот вам второй - зайти на официальный сайт (http://jashkenas.github.com/coffee-script/), найти в меню ссылку "Try CoffeeScript", кликнуть... И получаем консольку, куда можно вводить код на CoffeeScript - а он динамически (можно даже на компьютер страницу сохранить, всё будет работать), в режиме реального времени будет компилироваться в JavaScript. Причём мы сразу увидим и код, и сможем его сразу запустить. Ну и ещё один интересный вариант - интерпретировать CoffeeScript прямо на странице. Да, возможно и такое. Просто качаем скрипт отсюда: http://jashkenas.github.com/coffee-script/extras/coffee-script.js. Затем начинаем использовать: Code <script src="coffee-script.js"></script> <script type="text/coffeescript"> a = 10 b = 20 </script> ПеременныеНу что, пожалуй, начнём? А начнём мы с описания переменных. Code a = 10 # комментарий b = true На что мы тут обратим внимание? Во-первых, мы опускаем ключевое слово var - его ставить не нужно. Во-вторых, комментарии делаются знаком # - комменты с помощью // не работают, они интерпретируются как регулярки. Впрочем, работают многострочные /* */ комменты. В-третьих, мы не ставим ';' в конце строки - это не обязательно. Такой код компилируется в такой: Code var a, b; a = 10; b = true; Отчётливо видно, что много излишнего кода, это вообще можно было записать в одну строку. Ну да ладно. ФункцииСинтаксис функций совсем уж непривычен - но удобен. Code a = -> document Чтобы сразу было всё понятно: Code var a; a = function() { return document; }; Что здесь нового? Оператор -> для обозначения функции, все строки с отступом - тело функции. Из функции возвращается значение последней операции. Теперь передадим параметры: Code a = (x) -> x * x Здесь я написал функцию в одну строку. Один параметр x, возвращаем x в квадрате. Code var a; a = function(x) { return x * x; }; Пустую функцию создать совсем просто: a = ->. Из Ruby пришли очень интересные вещи. Например - указание параметров по умолчанию. Code x = (a, b = 10) -> a + b Теперь - если мы не передадим параметром b - он получит значение 10. JS: Code var x; x = function(a, b) { if (b == null) { b = 10; } return a + b; }; Есть ещё одна очень интересная штука: Code x = (a, b...) -> b[a] Это немного сложно для понимания, поэтому поясню: x(0, 1, 2, 3, 4). Здесь в переменную a упадёт значение 0; в b - массив из [1, 2, 3, 4]. Code var x; var __slice = Array.prototype.slice; x = function() { var a, b; a = arguments[0], b = 2 <= arguments.length ? __slice.call(arguments, 1) : []; return b[a]; }; Ещё забыл. Как передать в функцию другую функцию? Ну, кроме имени? Code x -> document Code x(function() { return document; }); "Литералы"Есть ещё одна интересная штука. Выглядит примерно так: Code a = 10 b = "abc #{ a } dce" Компилится: Code var a, b; a = 10; b = "abc " + a + " dce"; Обратите внимание, что кавычки обязательно двойные - при одинарных это не работает. Массивы, объектыМассивы в CoffeeScript выглядят также, как и в JS: Code a = [1, 2, 3, 4, 5] Что не скажешь о хешах. В них можно опустить фигурные скобки: Code abc = a:10, b:20 Не забываем ставить пробелы. В Python и Ruby без них никак. Оставим на будущее?Давайте пока остановимся и оставим на будущее остальное? В CoffeeScript ещё найдётся, чего поизучать - условия и циклы, разные операторы, диапазоны... Ну и ООП - классы и наследование. |
|
Всего комментариев: 88 | 1 2 3 » | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1-30 31-60 61-88 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||