Vue.js
Vue.js | |
---|---|
Тип | библиотека функций, JavaScript-фреймворк, веб-фреймворк и библиотека JavaScript |
Автор | Эван Ю[вд][2][3][…] |
Написана на | JavaScript[4] и TypeScript |
Операционная система | кроссплатформенность |
Первый выпуск | февраль 2014[1] |
Последняя версия | (3.0 "One Piece" стабильная.) |
Кандидат в релизы | (https://news.vuejs.org/issues/186) |
Репозиторий | github.com/vuejs/core |
Лицензия | MIT License |
Сайт | vuejs.org (англ.) |
Медиафайлы на Викискладе |
Vue.js (также Vue; /vjuː/) — JavaScript-фреймворк с открытым исходным кодом для создания пользовательских интерфейсов[5]. Легко интегрируется в проекты с использованием других JavaScript-библиотек. Может функционировать как веб-фреймворк для разработки одностраничных приложений в реактивном стиле.
На данный момент поддерживается создателем Эваном Ю. и остальными активными членами основной команды из различных компаний, таких как Netlify, Netguru,Baidu,Livestorm,.[6]
Опрос, проведенный в 2016 году для JavaScript, показал, что Vue имеет 89 % удовлетворенности разработчиков. На GitHub проект зарабатывает в среднем 95 звезд[7][8] является третьим по величине проектом в истории Github.
История
В 2013 году сотрудник Google Эван Ю (Evan You), работая над одним из проектов, пришёл к выводу, что не существует готовых решений для быстрого прототипирования сложных пользовательских интерфейсов веб-приложений: React тогда был на ранней стадии разработки, основными инструментами были такие сложные фреймворки, как AngularJS или ориентированный на MVC-архитектуру Backbone.js, не отличавшиеся простотой и ориентированные на разработку больших приложений. Для преодоления этого пробела Ю начал разработку Vue.js, которая, сохраняя простоту, оказалась пригодна не только для прототипирования, но и для полноценной разработки[9].
В октябре 2015 года была выпущена версия 1.0 библиотеки, в сентябре 2016 года — версия 2.0.
Начиная с версии 2.0 он поддерживает также рендеринг на стороне сервера, он же SSR (Server-Side Rendering)[10].
18 cентября 2020 года была выпущена версия Vue.js 3.0.0 «One Piece», по словам разработчиков «обеспечивает улучшенную производительность, меньший размер пакетов, лучшую интеграцию с TypeScript, новые API для решения крупномасштабных задач и прочную основу для будущих итераций фреймворка в долгосрочной перспективе»[11].
Релиз 3.0 вобрал в себя более 2 лет усилий по разработке, включая более 30 RFC, более 2600 коммитов, 628 запросов от 99 разработчиков, плюс огромный объём работы над разработкой и документацией. Весь код был переписан на более эффективный TypeScript, TypeScript 96,8%, что даёт преимущества в гибкой разработке.
Также представлен новый набор API Composition[12],
Концепция
Разработчики называют Vue.js как прогрессивный и постепенно адаптируемый по сравнению с другими веб-фреймворками.
Это позволяет используемому разработчику настроить структуру приложения в соответствии с собственными требованиями. Разработчики считают что Vue.js считается более простым в освоении, чем AngularJS, поскольку API построен намного проще в освоении. В Vue.js можно использовать, только знания JavaScript, HTML ,а необходимым для использования используют typescript. У Vue.js есть собственная официальная документация на многих языках, выложенные на vuejs.org[13] достаточно богатым документация, как один из примеров в объяснении проектированным и разработкой в браузере. В Vue.js реализуется шаблон MVVM, Vue.js предлагает на javascript возможность привязки данных, так что вывод и ввод данных сопрягаются непосредственно с источником данных. Таким образом, режим ручного определения данных (например, через jQuery) из HTML-DOM не нужен. При этом нет никаких дополнительных аннотаций, как в Knockout.js необходимости, объявлений в Vue-Element, обычные Переменные—JavaScript включаются в качестве реактивных элементов.
Адаптивный дизайн
Отзывчивый означает, что представление в модели MVC изменяется по мере изменения модели. В Vue разработчики просто привязывают представление к соответствующей модели, и Vue автоматически наблюдает за изменениями в модели и перерисовывает представление. Эта функция делает управление состоянием Vue довольно простым и интуитивно понятным.[14]
Эффекты перехода
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[15], при этом элемент связывается в источнике данных из экземпляра Vue. Связывание данных (eng. Databinding) возможен в обоих направлениях («Two way databinding»)[16], что позволяет изменять данные пользователем. директива model обеспечивает Databinding с элементами Input.
Директивы v-model
не более чем синтаксический сахар.
Директивы/Directive.
HTML-атрибуты позволяют выполнять такие действия, как итерация цикла по массиву, включение HTML-узлов в DOM только по желанию (v-if), скрытие HTML-узлов (v-show), перехват событий (v-on) или привязка атрибутов к переменным (v-bind). Директивы Vue.js узнаваемы по префиксу v -[17]. также можно применять фильтры для изменения вывода элементов JavaScript[18]. собственные директивы и фильтры могут быть определены в виде функций JavaScript.
<ul>
<li v-for="item in items">
{{ item }} <!-- Вывод значения -->
{{ item | lowercase }} <!-- Вывод значения строчными буквами -->
</li>
</ul>
Жизненный цикл компонентов
Все экземпляры и компоненты проходят жизненный цикл[19], он состоит из нескольких этапов, которые можно использовать для вызова собственных функций. В частности, этап 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[20], директивы, фильтры, компоненты и объекты. В качестве официальных расширений предлагаются Vuex[21], менеджер состояний, подключенный к Redux,[22] так и маршрутизатор Vue[23], компонентный маршрутизатор. В разделе awesome-Vue[24] поддерживается текущая коллекция расширений. Например, существует расширение для выполнения HTTP-запросов. однако эта была создана как официальная библиотека из Vue.js-Portfolio[25].
Однофайловые компоненты
Чтобы лучше адаптироваться к это полезно для больших проектов, где может потребоваться модуляризация, Vue может и сохраняется такие компоненты как отдельный файл с расширением .vue как определения «компонентов одного файла», вместо использования Vue.component
для зарегистрированные компонентов. Внутри отдельные файловые компоненты HTML, CSS и JavaScript вставляются в блоки.[26]
Разработчики могут использовать 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[27]—официальный маршрутизатор для Vue.js
- vuex[21]——Централизованное управление состоянием на основе Flux для Vue.js
- vue-loader[28]—загрузчик веб-пакетов, который позволяет писать компоненты Vue в формате, называемом однофайловыми компонентами (SFC/Vue Single-File Component).
- Vue Server Renderer[29]—рендеринг на стороне сервера для Vue.js
- vue-cli[30]—стандартный инструментарий для быстрой разработки на Vue.js
Версии выпусков
От Vue.js существует как такие как развивающиея vue-next, так и продуктивная версия она же стабильная.[31] версия разработки позволяет выводить информацию и предупреждения, когда включен режим отладки. Версия, предназначенная для продуктивного использования, не поддерживает этот режим.[32]
Для версии разработки есть расширение для Google-Chrome[33] и Mozilla Firefox[34], чтобы облегчить отладку приложения.[35]
Примечания
- ↑ https://egghead.io/podcasts/evan-you-creator-of-vue-js
- ↑ https://www.lemonde.fr/economie/article/2018/11/11/logiciel-libre-les-limites-du-modele-du-benevolat_5382054_3234.html
- ↑ https://vuejs.org/v2/guide/team.html
- ↑ The vue-js Open Source Project on Open Hub: Languages Page — 2006.
- ↑ VueJS . Simplified JavaScript Jargon. Дата обращения: 10 февраля 2017.
- ↑ Meet the Team — Vue.js (англ.). vuejs.org. Дата обращения: 20 сентября 2020.
- ↑ The State Of JavaScript: Front-End Frameworks . web.archive.org (17 апреля 2017). Дата обращения: 19 сентября 2020.
- ↑ Trending JavaScript Frameworks. (англ.). bestof.
- ↑ Filipova, 2016, Vue.js history, p. 10.
- ↑ Vue Руководство: Server-Side Rendering. (неопр.) (февраль 2017).
- ↑ "была выпущена стабильная версия 3.0.0". Пятница, 18 Сентября 2020 Года.
{{cite news}}
: Проверьте значение даты:|date=
(справка) - ↑ Introduction | Vue.js . v3.vuejs.org. Дата обращения: 19 сентября 2020.
- ↑ Introduction: What is Vue.js? /Введение: что такое Vue.js .
- ↑ Reactivity in Depth — Vue.js (англ.). vuejs.org (19 сентября 2017). Дата обращения: 19 сентября 2020.
- ↑ Template Syntax — Vue.js (англ.). vuejs.org. Дата обращения: 19 сентября 2020.
- ↑ Form Input Bindings — Vue.js (англ.). vuejs.org. Дата обращения: 19 сентября 2020.
- ↑ атрибуты (2016).
- ↑ фильтры Filters (2016).
- ↑ Жизненный цикл (2016 июнь).
- ↑ Mixins — Vue.js (англ.). vuejs.org.
- ↑ 1 2 vuejs/vuex. — 2018.
- ↑ Redux - A predictable state container for JavaScript apps. | Redux (англ.). redux.js.org.
- ↑ Vue Router-Маршрутизатор.. — 2020-09-19.
- ↑ vuejs/Awesome-vue.
- ↑ Evan You. Retiring vue-resource – The Vue Point. (англ.). Medium (ноябрь 2016).
- ↑ Однофайловые компоненты — Vue.js . ru.vuejs.org. Дата обращения: 20 сентября 2020.
- ↑ Introduction | Vue Router (англ.). router.vuejs.org.
- ↑ Introduction | Vue Loader (англ.). vue-loader.vuejs.org. Дата обращения: 19 сентября 2020.
- ↑ Руководство по рендерингу на стороне сервера Vue.js|Руководство по Vue SSR . ssr.vuejs.org. Дата обращения: 20 сентября 2020.
- ↑ vuejs/vue-cli. — 2020-09-19.
- ↑ Installation — Vue.js (англ.). vuejs.org.
- ↑ API — Vue.js (англ.). vuejs.org. Дата обращения: 19 сентября 2020.
- ↑ Vue.js devtools . chrome.google.com. Дата обращения: 19 сентября 2020.
- ↑ Vue.js devtools –Extension for Firefox 🦊 Firefox (амер. англ.). addons.mozilla.org. Дата обращения: 19 сентября 2020.
- ↑ Extension extension расширение Browser devtools для отладки Vue.приложения vuejs/vue-devtools (англ.).
Литература
- Callum Macrae. Vue.js: Up and Running. — O’Reilly, 2017. — 219 с. — ISBN 9781491997246.
- Olga Filipova. Learning Vue.js 2 Learn how to build amazing and complex reactive web applications easily with Vue.js. — Packt Publishing Ltd, 2016. — 334 с. — ISBN 9781786461131.
- Alex Kyriakidis, Kostas Maniatis. The Majesty of Vue.js. — Packt Publishing Ltd, 2016. — 230 с. — ISBN 9781787125209.
- Klint Finley. The Solo JavaScript Developer Challenging Google and Facebook // Wired. — 2018. — 23 августа. — ISSN 1059-1028.
Ссылки смотреть так же
- vuejs.org — официальный сайт Vue.js
- Getting Started With Vue.js SitePoint[англ.] (англ.)
- React
- AngularJS
- Angular (фреймворк)
- Библиотека JavaScript
- Axios[1]
- Vuejs поддерживается для разработке в Visual Studio 2019 как веб-приложение.[2]
- vueify[3]—библиотека пользовательского интерфейса Vue с красиво созданными компонентами в виде Material Design.
- Next.js
- Nuxt.js The Intuitive Vue Framework
- Model-View-ViewModel
- Vue.js fwdays'20 Конференція присвячена Vue.js
- ↑ Using Axios to Consume APIs — Vue.js (англ.). vuejs.org. Дата обращения: 20 сентября 2020.
- ↑ Mikejo5000. Краткое руководство. Создание первого приложения Vue.js - Visual Studio (рус.). docs.microsoft.com. Дата обращения: 19 сентября 2020.
- ↑ vuejs/vueify. — 2020-08-02.