6 мая 2016

Использование стандарта ES2015 в рамках библиотеки Backbone.js

JavaScriptПрограммирование
Из песочницы

В то время, как ребята из команд, работающих над Angular, React, мягко, но уверенно пересаживают разработчиков на ES2015, я хотел бы немного рассказать о возможностях использования нового стандарта спецификации с библиотекой Backbone.js. На сегодня основной подход к использованию ES2016 в браузерах один и не зависит от используемого фреймворка/библиотеки. И заключается он в следующем: пишем код на ES2015 и с помощью транспайлера (напр., Babel) получаем код (который и выполняется в браузере) на предыдущем стандарте ES5.


Но как модули, классы и прочие "фишки" из ES2015 использовать в рамках сущностей библиотеки Backbone.js? Об этом речь пойдет под катом.


Прежде всего нам необходимо организовать все файлы моделей, коллекций, представлений и роутов в виде es6 модулей. По моему мнению лучший инструмент для сборки модулей — webpack, если будете использовать в своем проекте его, то вряд ли пожалеете впоследствии. Итак, начнем писать модуль, который будет являться одним из наших представлений:


import $ from 'jquery';  
import Backbone from 'backbone';  
import _ from 'underscore';  

Здесь просто импортировали зависимости, необходимые в данном модуле. Используете другие библиотеки? Поступайте аналогично.


Дальше объявим класс MyCustomView:


class MyCustomView extends Backbone.View {
     // our other code
}

Как видите созданный класс унаследован от стандартного класса Backbone.View. Кроме этого нам нужно экспортировать MyCustomView, для использования его в других модулях:


class MyCustomView extends Backbone.View {
     // our other code
}
export default MyCustomView;  

Структура модуля готова, осталось добавить созданному классу методы (именно методы, не свойства-функции):


class MyCustomView extends Backbone.View {
    initialize() {
    }
    render() {
    }
    // our other code
}
export default MyCustomView;  

Пока все предсказуемо, но мы еще не объявили такие свойства как el, tagName, events. Как будут выглядеть они? Есть 2 подхода: реализовать их объявление через геттеры, либо объявить в методе конструктора, приведу оба примера:


class MyCustomView extends Backbone.View {
    get tagName() { return 'div'}
    get className() { return 'example' }
    get template() { return _.template(myTemplate)}
    get events() {
        return {
            'click': 'sayHelloWorld'
        }
    }
}

используя конструктор, получим:


class MyCustomView extends Backbone.View {
    constructor() {
        super();
        this.tagName =  'div';
        this.className = 'example';
        this.events = {
            'click': 'sayHelloWorld'
        };
    }
}

Аналогичная ситуация будет с атрибутами моделей и коллекций.


К дальнейшему использованию всех "фич" стандарта ES2015 нет никаких препятствий. Вы можете использовать деструктуризацию, строки-шаблоны, итераторы, стрелочные функции, новые типы коллекций, промисы, symbol точно так же, как в других фреймворках/библиотеках, завязки на Backbone.js тут нет.


Например, использование arrow function в методе initialize:


class MyCustomView extends Backbone.View {
    initialize() {
       setTimeout(() => {this.render()}, 1000); 
    }
    render() {
    }
    // our other code
}

Как видите, внеся минимальные структурные изменения в свой проект, можно легко перейти на ES2015, используя при этом библиотеку Backbone.js. Можно уже сейчас использовать все возможности языка, при этом не разрабатывая на таких бурно развивающихся библиотеках, как React.

Теги:backbone.jses2015javascript
Хабы: JavaScript Программирование
+16
13,9k 61
Комментарии 98
Похожие публикации
Javascript разработчик
от 130 000 до 180 000 ₽ArtezioНижний Новгород
Javascript разработчик
от 160 000 до 220 000 ₽ArtezioМосква
Backend Javascript Developer
от 3 000 до 4 200 $HutovskaМожно удаленно
JavaScript разработчик
от 150 000 до 200 000 ₽SportrecsМоскваМожно удаленно
JavaScript разработчик (React)
от 80 000 до 150 000 ₽Баланс-ПлатформаМоскваМожно удаленно
Лучшие публикации за сутки