Статьи

10 советов и подсказок о том, как повысить производительность с Coffeescript

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}»