Vue.js

Vue.js (также Vue; /vj/) — JavaScript-фреймворк с открытым исходным кодом для создания пользовательских интерфейсов[3]. Легко интегрируется в проекты с использованием других JavaScript-библиотек. Может функционировать как веб-фреймворк для разработки одностраничных приложений в реактивном стиле.

Vue.js
Тип библиотека функций, JavaScript-фреймворк и каркас веб-приложений
Автор Эван Ю
Написана на JavaScript[1] и TypeScript
Первый выпуск февраль 2014[2]
Последняя версия (3.0 "One Piece" стабильная.)
Кандидат в релизы (https://news.vuejs.org/issues/186)
Лицензия MIT License
Сайт vuejs.org (англ.)

На данный момент поддерживается создателем Эваном Ю и остальными активными членами основной команды из различных компаний, таких как Netlify, Netguru, Baidu, Livestorm[4].

Опрос, проведенный в 2016 году для JavaScript, показал, что Vue имеет 89 % удовлетворенности разработчиков[5]. На GitHub проект имеет 188 тысяч звезд[6], является третьим по величине проектом в истории GitHub.

История

В 2013 году сотрудник Google Эван Ю (Evan You), работая над одним из проектов, пришёл к выводу, что не существует готовых решений для быстрого прототипирования сложных пользовательских интерфейсов веб-приложений: React тогда был на ранней стадии разработки, основными инструментами были такие сложные фреймворки, как AngularJS или ориентированный на MVC-архитектуру Backbone.js, не отличавшиеся простотой и ориентированные на разработку больших приложений. Для преодоления этого пробела Ю начал разработку Vue.js, которая, сохраняя простоту, оказалась пригодна не только для прототипирования, но и для полноценной разработки[7].

В октябре 2015 года была выпущена версия 1.0 библиотеки, в сентябре 2016 года — версия 2.0.

Начиная с версии 2.0 он поддерживает также рендеринг на стороне сервера, он же SSR (Server-Side Rendering)[8].

18 cентября 2020 года была выпущена версия Vue.js 3.0.0 «One Piece», по словам разработчиков «обеспечивает улучшенную производительность, меньший размер пакетов, лучшую интеграцию с TypeScript, новые API для решения крупномасштабных задач и прочную основу для будущих итераций фреймворка в долгосрочной перспективе»[9].

Релиз 3.0 вобрал в себя более 2 лет усилий по разработке, включая более 30 RFC, более 2600 коммитов, 628 запросов от 99 разработчиков, плюс огромный объём работы над разработкой и документацией. Весь код был переписан на более эффективный TypeScript, что даёт преимущества в гибкой разработке.

Также представлен новый набор API Composition[10].

Версии

VersionRelease dateTitle
3.25 августа 2021The Quintessential Quintuplets[11]
3.17 июня 2021Pluto[12]
3.018 сентября 2020One Piece[13]
2.64 февраля 2019Macross[14]
2.513 октября 2017Level E[15]
2.413 июля 2017Kill la Kill[16]
2.327 апреля 2017JoJo's Bizarre Adventure[17]
2.226 февраля 2017Initial D[18]
2.122 ноября 2016Hunter X Hunter[19]
2.030 сентября 2016Ghost in the Shell[20]
1.027 октября 2015Evangelion[21]
0.1212 июня 2015Dragon Ball[22]
0.117 ноября 2014Cowboy Bebop[23]
0.1023 марта 2014Blade Runner[24]
0.925 февраля 2014Animatrix[25]
0.827 января 2014н/д [26]
0.724 декабря 2013н/д [27]
0.68 декабря 2013VueJS [28]

Концепция

Разработчики называют Vue.js прогрессивным и постепенно адаптируемым по сравнению с другими веб-фреймворками.

Это позволяет разработчику настроить структуру приложения в соответствии с собственными требованиями. Разработчики считают Vue.js более простым в освоении, чем AngularJS, поскольку API построен намного проще в освоении. В Vue.js можно использовать только знания JavaScript и HTML. Возможно применение Typescript. У Vue.js есть собственная официальная достаточно богатая документация на многих языках, выложенная на vuejs.org[29], которая может послужить примером в объяснении проектирования и разработки в браузере. В Vue.js реализуется шаблон MVVM, Vue.js предлагает возможность привязки данных на Javascript, так что вывод и ввод данных сопрягаются непосредственно с источником данных. Таким образом, режим ручного определения данных (например, через jQuery) из HTML-DOM не нужен. При этом нет необходимости в никаких дополнительных аннотациях, как в Knockout.js, объявленные в Vue-Element обычные переменные JavaScript включаются в качестве реактивных элементов.

Реактивность

Реактивность означает, что представление в модели MVC изменяется по мере изменения модели. В Vue разработчики просто привязывают представление к соответствующей модели, и Vue автоматически наблюдает за изменениями в модели и перерисовывает представление. Эта функция делает управление состоянием Vue довольно простым и интуитивно понятным.[30]

Эффекты перехода

Vue предоставляет различные способы применения эффектов перехода при вставке, обновлении или удалении DOM.Включает следующие инструменты:

  • Автоматически применять CSS классы при переходах и анимации
  • Вы можете работать со сторонними библиотеками анимации CSS, такими как Animate.css.
  • Используйте JavaScript функции для перехвата перехода, чтобы напрямую управлять DOM
  • Может использоваться в сочетании со сторонними библиотеками анимации JavaScript, такими как Velocity.js.

Структура

Пример приложений Vue

Любое приложение с Vue.js имеет (по крайней мере) один центральный экземпляр. Для каждого HTML-файла возможно любое количество экземпляров. Экземпляр привязывается к HTML-узлу с помощью свойства el (определяемого здесь с помощью CSS-селектора «body»).

Файл приложения сохраняется как *.js.

var vm = new Vue({
  el: "body",
  data: {
    message: "Привет Мир!",
    items: [
      "это",
      "и",
      "есть",
      "Array/Массив"
    ]
  }
});

Компоненты/Components

Функциональность экземпляров может быть расширена с помощью компонентов, хранятся в древовидном виде. Компоненты отличаются от экземпляров тем, что они не привязаны к узлам HTML, а содержат собственный шаблон HTML.

 // Определение компонента и глобальная регистрация

Vue.component('my-component', {

  template: '<div><div> это новый компонент < / div>< / div>'

})

// Создание экземпляра Vue

new Vue({

  el: '#example '

})

Шаблон HTML для Компонента

<!-- HTML-Узел -->
<div id="example">
  <my-component></my-component>
</div>

<!--Использования c DOM-->
<div id="example">
  <div>Это новый компонент</div>
</div>

Double Curly Syntax/Двойные фигурные скобки

Используя двойные фигурные скобки (синтаксис double-curly), популярные в фреймворках JavaScript, элементы JavaScript могут быть вставлены в HTML-DOM[31], при этом элемент связывается в источнике данных из экземпляра Vue. Связывание данных (eng. Databinding) возможен в обоих направлениях («Two way databinding»)[32], что позволяет изменять данные пользователем. директива model обеспечивает Databinding с элементами Input.

Директивы v-modelне более, чем синтаксический сахар.

Директивы/Directive.

HTML-атрибуты позволяют выполнять такие действия, как итерация цикла по массиву, включение HTML-узлов в DOM только по желанию (v-if), скрытие HTML-узлов (v-show), перехват событий (v-on) или привязка атрибутов к переменным (v-bind). Директивы Vue.js узнаваемы по префиксу v -[33]. также можно применять фильтры для изменения вывода элементов JavaScript[34]. собственные директивы и фильтры могут быть определены в виде функций JavaScript.

<ul>
 <li v-for="item in items">
    {{ item }} <!-- Вывод значения -->
    {{ item | lowercase }} <!-- Вывод значения строчными буквами -->
 </li>

</ul>

Жизненный цикл компонентов

Все экземпляры и компоненты проходят жизненный цикл[35], он состоит из нескольких этапов, которые можно использовать для вызова собственных функций. В частности, этап mounted используется очень часто, поскольку он вызывается сразу после того, как компонент был включен в DOM. Используя функцию Vue $next, можно определить код, который не вызывается до тех пор, пока компонент не будет готов.

new Vue({
  mounted: function () {
//вызывается, когда компонент будет видно, например,через v-if vue или маршрутизатор.
    console.log('Этот компонент был интегрирован в DOM на'+Date.now());
    this.$next(() => console.log('Теперь компонент полностью готов.'))
  },
  destroyed: function() {
    //Вызывается*, когда компонент удаляется из DOM.
    removeListener(XY);
  }
})

Модульность

Vue.js может быть дополнен расширениями, они могут содержать Mixins[36], директивы, фильтры, компоненты и объекты. В качестве официальных расширений предлагаются Vuex[37], менеджер состояний, подключенный к Redux,[38] так и маршрутизатор Vue[39], компонентный маршрутизатор. В разделе awesome-Vue[40] поддерживается текущая коллекция расширений. Например, существует расширение для выполнения HTTP-запросов. однако эта была создана как официальная библиотека из Vue.js-Portfolio[41].

Однофайловые компоненты

Чтобы лучше адаптироваться к это полезно для больших проектов, где может потребоваться модуляризация, Vue может и сохраняется такие компоненты как отдельный файл с расширением .vue как определения «компонентов одного файла», вместо использования Vue.componentдля зарегистрированные компонентов. Внутри отдельные файловые компоненты HTML, CSS и JavaScript вставляются в блоки.[42]

Разработчики могут использовать инструменты сборки Webpack или Browserify, как для однофайловых, так и для упаковки компонентов.

<template>
    <p>{{ greeting }} Мир!</p>
</template>
<script>
    module.exports = {
        data: function () {

            return {
                greeting: 'Привет'
            }
        }
    }
</script>
<style scoped>
    p {
        font-size: 2em;
        text-align: center;
    }
</style>

Основные библиотеки и инструменты

  • vue-router[43] — официальный маршрутизатор для Vue.js
  • vuex[37] — Централизованное управление состоянием на основе Flux для Vue.js
  • vue-loader[44] — загрузчик веб-пакетов, который позволяет писать компоненты Vue в формате, называемом однофайловыми компонентами (SFC/Vue Single-File Component).
  • Vue Server Renderer[45] — рендеринг на стороне сервера для Vue.js
  • vue-cli[46] — стандартный инструментарий для быстрой разработки на Vue.js

Версии выпусков

Vue.js существует в виде развивающейся версии vue-next, и промышленной или стабильной версии.[47] Версия для разработки позволяет выводить информацию и предупреждения, когда включен режим отладки. Версия, предназначенная для продуктивного использования, не поддерживает этот режим.[48]

Для версии разработки есть расширение для Google-Chrome[49] и Mozilla Firefox[50], чтобы облегчить отладку приложения.[51]

Примечания

  1. The vue-js Open Source Project on Open Hub: Languages Page — 2006.
  2. https://egghead.io/podcasts/evan-you-creator-of-vue-js
  3. VueJS. Simplified JavaScript Jargon. Дата обращения: 10 февраля 2017.
  4. Meet the Team — Vue.js (англ.). vuejs.org. Дата обращения: 20 сентября 2020.
  5. The State Of JavaScript: Front-End Frameworks. web.archive.org (17 апреля 2017). Дата обращения: 19 сентября 2020.
  6. Trending JavaScript Frameworks. (англ.). bestof. (недоступная ссылка)
  7. Filipova, 2016, Vue.js history, p. 10.
  8. Vue Руководство: Server-Side Rendering. (неопр.) (Февраль 2017 года).
  9. была выпущена стабильная версия 3.0.0 (Пятница, 18 Сентября 2020 Года).
  10. Introduction | Vue.js. v3.vuejs.org. Дата обращения: 19 сентября 2020.
  11. v3.2.0 Quintessential Quintuplets. GitHub (5 августа 2021). Дата обращения: 10 августа 2021.
  12. v3.1.0 Pluto. GitHub (7 июня 2021). Дата обращения: 18 июля 2021.
  13. v3.0.0 One Piece. GitHub (18 сентября 2020). Дата обращения: 23 сентября 2020.
  14. v2.6.0 Macross. GitHub (4 февраля 2019). Дата обращения: 23 сентября 2020.
  15. v2.5.0 Level E. GitHub (13 октября 2017). Дата обращения: 23 сентября 2020.
  16. v2.4.0 Kill la Kill. GitHub (13 июля 2017). Дата обращения: 23 сентября 2020.
  17. v2.3.0 JoJo's Bizarre Adventure. GitHub (27 апреля 2017). Дата обращения: 23 сентября 2020.
  18. v2.2.0 Initial D. GitHub (26 февраля 2017). Дата обращения: 23 сентября 2020.
  19. v2.1.0 Hunter X Hunter. GitHub (22 ноября 2016). Дата обращения: 23 сентября 2020.
  20. v2.0.0 Ghost in the Shell. GitHub (30 сентября 2016). Дата обращения: 23 сентября 2020.
  21. 1.0.0 Evangelion. GitHub (27 октября 2015). Дата обращения: 23 сентября 2020.
  22. 0.12.0: Dragon Ball. GitHub (12 июня 2015). Дата обращения: 23 сентября 2020.
  23. v0.11.0: Cowboy Bebop. GitHub (7 ноября 2014). Дата обращения: 23 сентября 2020.
  24. v0.10.0: Blade Runner. GitHub (23 марта 2014). Дата обращения: 23 сентября 2020.
  25. v0.9.0: Animatrix. GitHub (25 февраля 2014). Дата обращения: 23 сентября 2020.
  26. v0.8.0. GitHub (27 января 2014). Дата обращения: 23 сентября 2020.
  27. v0.7.0. GitHub (24 декабря 2013). Дата обращения: 23 сентября 2020.
  28. 0.6.0: VueJS. GitHub (8 декабря 2013). Дата обращения: 23 сентября 2020.
  29. Introduction: What is Vue.js? /Введение: что такое Vue.js.
  30. Reactivity in Depth — Vue.js (англ.). vuejs.org (19 сентября 2017). Дата обращения: 19 сентября 2020.
  31. Template Syntax — Vue.js (англ.). vuejs.org. Дата обращения: 19 сентября 2020.
  32. Form Input Bindings — Vue.js (англ.). vuejs.org. Дата обращения: 19 сентября 2020.
  33. атрибуты (2016).
  34. фильтры Filters (2016).
  35. Жизненный цикл (2016 июнь).
  36. Mixins — Vue.js (англ.). vuejs.org.
  37. vuejs/vuex. — 2018.
  38. Redux - A predictable state container for JavaScript apps. | Redux (англ.). redux.js.org.
  39. Vue Router-Маршрутизатор.. — 2020-09-19.
  40. vuejs/Awesome-vue.
  41. Evan You. Retiring vue-resource – The Vue Point. (англ.). Medium (Ноябрь 2016 года).
  42. Однофайловые компоненты — Vue.js. ru.vuejs.org. Дата обращения: 20 сентября 2020. (недоступная ссылка)
  43. Introduction | Vue Router (англ.). router.vuejs.org.
  44. Introduction | Vue Loader (англ.). vue-loader.vuejs.org. Дата обращения: 19 сентября 2020.
  45. Руководство по рендерингу на стороне сервера Vue.js|Руководство по Vue SSR. ssr.vuejs.org. Дата обращения: 20 сентября 2020.
  46. vuejs/vue-cli. — 2020-09-19.
  47. Installation — Vue.js (англ.). vuejs.org.
  48. API — Vue.js (англ.). vuejs.org. Дата обращения: 19 сентября 2020.
  49. Vue.js devtools. chrome.google.com. Дата обращения: 19 сентября 2020.
  50. Vue.js devtools –Extension for Firefox 🦊 Firefox (англ.) ?. addons.mozilla.org. Дата обращения: 19 сентября 2020.
  51. Extension extension расширение Browser devtools для отладки Vue.приложения vuejs/vue-devtools (англ.).

Литература

Ссылки

  1. Using Axios to Consume APIs — Vue.js (англ.). vuejs.org. Дата обращения: 20 сентября 2020.
  2. Mikejo5000. Краткое руководство. Создание первого приложения Vue.js - Visual Studio. docs.microsoft.com. Дата обращения: 19 сентября 2020.
  3. vuejs/vueify. — 2020-08-02.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.