CoffeeScript для тех, кто может не знать, это язык, который компилируется в JavaScript. Сегодня я расскажу о десяти вещах, которые помогут вам при работе с CoffeeScript.
Совет 1: Значения.
Значки в CoffeeScript позволяют иметь функции, которые принимают переменное число аргументов. Вот пример:
mySplat = (args...) ->
console.log "#{args.join()}"
mySplat(1,2,3,4,5)
Выход:
|
1,2,3,4,5 |
Совет 2: Работа с
логическими значениями Для логических значений вы можете использовать on и yes, и они будут работать так же, как true , тогда как off и no обрабатываются как false . Вот пример того, что вы можете сделать:
lightSwitch = false
if lightSwitch is off
console.log 'Turn on the lights!'
else
console.log 'Turn off the lights!'
Выход:
|
Включить свет! |
Совет 3: экзистенциальный оператор
экзистенциальный оператор проверяет существование переменной. Вот пример:
myValue1 = 'Hello World' if myValue1? then console.log myValue1 # This next variable doesn't exist if myValue2? then console.log myValue2
Выход:
|
Привет мир |
Это также означает, что вы можете делать такие вещи:
class MyClass
myFunction1: (val) ->
console.log "You passed #{val} to myFunction1"
myClass = new MyClass()
myClass?.myFunction1(123)
# This next function doesn't exist
myClass.myFunction2?(123)
Поскольку myFunction2 не существует в MyClass, вы увидите только следующее (ошибок не возникает и т. Д.):
|
Вы передали 123 в myFunction1 |
Совет 4: Использование ‘in’ для проверки, содержится ли значение в массиве.
Используя ключевое слово in, вы можете быстро проверить, находится ли значение внутри массива. Вот пример:
foods = ['apple', 'orange', 'potatoe', 'strawberries'] if 'potatoe' in foods then console.log 'Found potatoe' if 'carrot' in foods then console.log 'Found carrot'
Выход:
|
Нашел картофель |
Совет 5: итерация объекта.
Я создам простой объект и покажу, как легко пройти по нему, получая ключи и значения.
dragon =
level: 1
alignment: 'neutral'
age: 'Youngling'
attack: 'Fire'
damage: '1d4'
for key, val of dragon
console.log "#{key}: #{val}"
Выход:
|
1-й уровень выравнивание: нейтральное возраст: молодой атака: огонь урон: 1d4 |
Совет 6: Классы
Класс очень прост. У меня есть существующая статья, на которую я буду ссылаться , но вот простой пример создания класса и использования конструкторов и наследования:
class Spaceship
constructor: (@speed = 1, @spaceShipType = 'spaceship') ->
console.log "New #{@spaceShipType} created with a speed of #{@speed}"
move: () ->
console.log "The #{@spaceShipType} is moving now at a speed of #{@speed}"
class FlyingSaucer extends Spaceship
constructor: ->
super 5, 'Flying Saucer'
useDeathRay: ->
console.log "The flying saucer is using a death ray!"
spcshp = new Spaceship()
spcshp.move()
flySaucr = new FlyingSaucer()
flySaucr.move()
flySaucr.useDeathRay()
Совет 7: Простой ярлык для «это»
Существует простой ярлык для этого , и это @ символ.
class MyClass
constructor: (@greeting) ->
console.log "You set the greeting as: #{@greeting}"
greet: ->
console.log "You said: #{@greeting}"
myClass = new MyClass('Bonjour')
myClass.greet()
Вы можете видеть, что @greeting доступен для функций класса.
Выход:
|
Вы устанавливаете приветствие как: Bonjour Вы сказали: Bonjour |
Совет 8: Значения по умолчанию
Используя вышеупомянутый класс, я могу фактически установить приветствие по умолчанию в конструкторе (или любой другой функции). Вот модифицированный пример, взятый сверху:
class MyClass
constructor: (@greeting = 'Hola') ->
console.log "You set the greeting as: #{@greeting}"
greet: ->
console.log "You said: #{@greeting}"
myClass = new MyClass()
myClass.greet()
Выход:
|
Вы устанавливаете приветствие как: Привет Вы сказали: Привет |
Совет 9: Блочные строки
Очень прост в использовании, и вам не нужно избегать кавычек или апострофов, как это сделано для вас.
markup = """
<form action="/" method="post">
<input type="submit" />
</form>
"""
console.log markup
Выход:
|
<form action = «/» method = «post»> <input type = «submit» /> </ Форма> |
Совет 10: Интерполяция строк.
Я уже использовал это в нескольких моих примерах. Все, что находится в двойных кавычках, будет проанализировано, поэтому вы можете встроить переменную следующим образом:
myValue = 'Hello World'
console.log "You said: #{myValue}"
Вы также можете делать такие вещи:
val1 = 5;
val2 = 7;
console.log "Your answer for 5 * 7 is: #{val1 * val2}"
Выход:
|
Ваш ответ для 5 * 7: 35 |
Вы могли бы сделать это также:
console.log «Ваш ответ для 5 * 7: # {5 * 7}»