{{TOC}}
{{Image /packages/proger/habravel/uploads/352-vue-elixir-963x401.png, height=100px}}
Складывается ощущение, что каждый день появляется новый JavaScript фреймворк. Мы в Tighten не успели поработать с каждым из них, но опробовали достаточно большое количество, и наряду с такими, в которых нам чего-либо не хватает, мы нашли один, поистине превосходный - Vue.js. На самом деле он не новый, но недавно он начал набирать обороты, и он отлично подошёл для многих наших проектов.
==Знакомьтесь, Vue.js==
Так что же такое Vue.js?
Это JavaScript фреймворк, такой как React, Ember или Angular.
У него двухсторонняя привязка данных, как в Ember и Angular.
Он лёгкий и может быть использован для простого украшения компонента, как Knockout.
Он может быть помещён на страницу с нулевой сложностью сборки, но также легко его части можно собрать воедино для поддержки импорта ES2015.
У него быстрая привязка данных, позволяющая использовать вычисляемые свойства, и она бесплатна для любых объектов данных, передаваемых в него, как в React.
Он предоставляет инструменты для разделения вашего кода на компоненты, которые можно компоновать как автономные файлы, как в React.
У него есть маршрутизатор, поэтому вы можете использовать его для одностраничных приложений, но он также хорошо подходит для одноразовых компонентов и прототипирования.
Структуры данных его ядра простые и работают с объектами POJO (Plain Old JavaScript Objects); структура вашего приложения может быть сколь угодно простой или сложной.
Вы можете узнать больше о Vue из статьи автора фреймворка: ((http://blog.evanyou.me/2015/10/25/vuejs-re-introduction/ Vue.js: знакомимся (снова) )). Также посмотрите ((https://laracasts.com/series/learning-vue-step-by-step бесплатную серию ларакастов по Vue)).
==Применение Vue в обычных проектах==
Рассмотрим, как работать с Vue в простейшем случае (без Elixir и Vueify): ((http://jsfiddle.net/mattstauffer/rLpsr92c/1/ fiddle)).
В этом примере мы делаем две вещи: первая - импортируем Vue из CDN, вторая - создаём div (%%#example%%), который будем использовать как наш контейнер Vue, и пишем в него немного шаблонного кода. И третье - мы создаём корневой экземпляр Vue и привязываем его к этому контейнеру.
В результате Vue передаёт объект %%(t)data%% в шаблон, определённый в представлении, и рендерит его.
Дальше можно делать много всего, но мы сделаем большой скачок - добавим систему сборки и систему компонентов Vueify. Эти инструменты не //обязательны// для разработки на Vue, но когда ваше приложение и компоненты достигнут определённого уровня сложности, вы откроете для себя огромные возможности этих инструментов.
Теперь мы переключимся на синтаксис компонент-в-одном-файле Vue в стиле JSX при помощи Vueify. А также будем использовать систему сборки Gulp из Laravel Elixir, чтобы подключить наши зависимости, собрать наши скрипты, и получить доступ к синтаксису ES2015 при помощи Babel.
==Знакомьтесь, Vueify==
Перед погружением в Elixir, давайте посмотрим на Vueify. Вот простой файл Vueify, который мы назовём %%(t)Hero.vue%%:
%%(js)