Vue.js (звычайна пазначаецца як Vue; вымаўляецца як «в’ю»[4]) — гэта JavaScript-бібліятэка з адкрытым зыходным кодам для стварэння карыстальніцкіх інтэрфейсаў і аднастаронкавых вэб-праграм (англ.: single-page application, SPA)[10]. Яна была створана Эванам Ю і падтрымліваецца ім і камандай[11].

Vue.js
Выява лагатыпа
Тып бібліятэка, JavaScript-фрэймворк[d], Вэб-фрэймворк і бібліятэка JavaScript[d]
Аўтар Эван Ю
Распрацоўшчык GitHub
Напісана на JavaScript[3] і TypeScript
Аперацыйная сістэма кросплатформавае праграмнае забеспячэнне
Мовы інтэрфейсу JavaScript
Першы выпуск люты 2014[1]
Апошняя версія
  • 3.4.30 (22 чэрвеня 2024)[2]
Ліцэнзія MIT License
Сайт vuejs.org
Лагатып Вікісховішча Медыяфайлы на Вікісховішчы

Vue.js мае інкрыментальна адаптаваную архітэктуру, арыентаваную на дэкларатыўны рэндэрынг і кампаноўку кампанентаў. Асноўная бібліятэка арыентавана толькі на ўзровень прадстаўлення[4]. Дадатковыя магчымасці, неабходныя для складаных вэб-праграм, такія як маршрутызацыя, кіраванне станамі і інструменты зборкі, даступныя праз афіцыйныя бібліятэкі і пакеты[12].

Vue.js дазваляе пашыраць HTML пры дапамозе атрыбутаў HTML, якія называюцца дырэктывамі[13]. Дырэктывы забяспечваюць функцыянальнасць HTML-праграм і могуць быць як убудаванымі, так і вызначанымі карыстальнікам.

Гісторыя

правіць

Vue быў створаны Эванам Ю пасля працы ў Google, дзе ён выкарыстоўваў AngularJS у некалькіх праектах. Пазней ён падсумаваў свае думкі: «Я падумаў, што змагу ўзяць тую частку Angular, якая мне падабалася, і стварыць нешта сапраўды лёгкае»[14]. Першы камміт (eng. commit) зыходнага кода праекта датаваны ліпенем 2013 года, а першы публічны анонс Vue адбыўся ў лютым наступнага, 2014 года[15][16].

Назвы версій часта паходзяць з мангі і анімэ.

Версіі

правіць
Версія Дата выпуску Назва Канец LTS Канец падтрымкі
3.3 2023-05-11 Rurouni Kenshin[17]
3.2 2021-08-05 Quintessential Quintuplets[18]
3.1 2021-06-07 Pluto[19]
3.0 2020-09-18 One Piece[20]
2.7 2022-07-01 Наруто [21] 2023-12-31 2023-12-31
2.6 2019-02-04 Macross[22] 2022-03-18 2023-09-18
2.5 2017-10-13 Level E[23]
2.4 2017-07-13 Kill la Kill[24]
2.3 2017-04-27 JoJo’s Bizarre Adventure[25]
2.2 2017-02-26 Initial D[26]
2.1 2016-11-22 Hunter X Hunter[27]
2.0 2016-09-30 Ghost in the Shell[28]
1.0 2015-10-27 Евангеліён [29]
0,12 2015-06-12 Dragon Ball [30]
0,11 2014-11-07 Cowboy Bebop[31]
0,10 2014-03-23 Бягун па лязе[32]
0,9 2014-02-25 Animatrix[33]
0,8 2014-01-27 -[34] першая публічна абвешчаная версія [15][16]
0,7 2013-12-24 -[35]
0,6 2013-12-08 VueJS [36]

Асаблівасці

правіць

Кампаненты

правіць

Кампаненты Vue пашыраюць базавыя элементы HTML для інкапсуляцыі прыгоднага для шматразовага выкарыстання кода. На высокім узроўні кампаненты — гэта прыстасаваныя элементы, да якіх кампілятар Vue прымацоўвае паводзіны. У Vue кампанент — гэта, у сутнасці, экзэмпляр Vue з загадзя вызначанымі параметрамі[37]. Прыведзены ніжэй фрагмент кода змяшчае прыклад кампанента Vue. Кампанент паказвае кнопку і выводзіць колькасць націскаў на яе:

<template>
  <div id="tuto">
    <button-clicked v-bind:initial-count="0"></button-clicked>
  </div>
</template>

<script>
Vue.component('button-clicked', {
  props: ['initialCount'],
  data: () => ({
    count: 0,
  }),
  template: '<button v-on:click="onClick">Clicked <nowiki>{{ count }}</nowiki> times</button>',
  computed: {
    countTimesTwo() {
      return this.count * 2;
    }
  },
  watch: {
    count(newValue, oldValue) {
      console.log(`The value of count is changed from ${oldValue} to ${newValue}.`);
    }
  },
  methods: {
    onClick() {
      this.count += 1;
    }
  },
  mounted() {
    this.count = this.initialCount;
  }
});

new Vue({
  el: '#tuto',
});
</script>

Пераходы

правіць

Vue дае мноства спосабаў ужывання эфектаў пераходу пры ўстаўцы, абнаўленні або выдаленні элементаў з DOM. Існуюць наступныя інструменты:

  • Аўтаматычнае прымяненне класаў для CSS-пераходаў і анімацыі
  • Інтэграцыя іншых бібліятэк CSS-анімацыі, такіх як Animate.css
  • Выкарыстанне JavaScript для прамога маніпулявання DOM падчас пераходаў
  • Інтэграцыя іншых бібліятэк анімацыі JavaScript, напрыклад Velocity.js

Калі элемент, абгорнуты ў кампанент пераходу, устаўляецца ці выдаляецца, адбываецца наступнае:

  1. Vue аўтаматычна вызначае, ці прымяняюцца да мэтавага элемента CSS-пераходы або анімацыя. Калі так, то класы CSS-пераходаў будуць дадавацца/выдаляцца ў адпаведныя моманты часу.
  2. Калі кампанент пераходу змяшчае JavaScript-хукі, то гэтыя хукі будуць выклікацца ў адпаведныя моманты часу.
  3. Калі CSS-пераходы/анімацыя не выяўлены і хукі JavaScript не прадстаўлены, то аперацыі DOM па ўстаўцы і/або выдаленні будуць выкананы адразу на наступным фрэйме[38][39].

Маршрутызацыя

правіць
<div id="app">
  <router-view></router-view>
</div>
...

<script>
...
const User = {
  template: '<div>User <nowiki>{{ $route.params.id }}</nowiki></div>'
};

const router = new VueRouter({
  routes: [
    { path: '/user/:id', component: User }
  ]
});
...
</script>

Код вышэй:

  1. Устанаўлівае знешні маршрут па адрасе websitename.com/user/<id>.
  2. Які будзе адлюстроўвацца ў кампаненце User, вызначаным у (const User. . .)
  3. Дазваляе кампаненту User перадаць пэўны id карыстальніка, які быў уведзены ў URL, выкарыстоўваючы ключ params аб’екта $route: $route.params.id.
  4. Гэты шаблон (змяняецца перададзенымі ў маршрутызатар параметрамі) будзе выведзены ў <router-view></router-view> усярэдзіне div#app DOM.
  5. Канчаткова сфарміраваны HTML для карыстальніка, які набраў: websitename.com/user/1, будзе выглядаць наступным чынам[40]:
<div id="app">
  <div>
    <div>User 1</div>
  </div>
</div>

Экасістэма

правіць

У склад асноўнай бібліятэкі ўваходзяць інструменты і бібліятэкі, распрацаваныя як асноўнай камандай, так і звычайнымі распрацоўшчыкамі.

Афіцыйныя інструменты

правіць
  • Devtools — Браўзернае пашырэнне devtools для адладкі праграм на Vue.js
  • Vue CLI — стандартны інструментарый для хуткай распрацоўкі Vue.js
  • Vue Loader — загрузчык вэб-пакетаў, які дазваляе запісваць кампаненты Vue у фармаце Single-File Components (SFC).

Афіцыйныя бібліятэкі

правіць
  • Vue Router — афіцыйны маршрутызатар
  • Vuex — цэнтралізаванае кіраванне станам, натхнёнае Flux
  • Vue Server Renderer — рэндэрынг на баку сервера
  • Pinia — новы просты спосаб кіравання станам

Зноскі

  1. https://egghead.io/podcasts/evan-you-creator-of-vue-js
  2. Release 3.4.30 — 2024. Праверана 27 чэрвеня 2024.
  3. The vue-js Open Source Project on Open Hub: Languages Page — 2006. Праверана 20 верасня 2018.
  4. а б в Introduction (англ.). Vuejs.org. Праверана January 3, 2020.
  5. Macrae, Callum (2018). Vue.js: Up and Running: Building Accessible and Performant Web Apps(англ.). O'Reilly Media. ISBN 978-1-4919-9721-5.
  6. Nelson, Brett (2018). Getting to Know Vue.js: Learn to Build Single Page Applications in Vue from Scratch(англ.). Apress. ISBN 978-1-4842-3781-6.
  7. Yerburgh, Edd (2019). Testing Vue.js Applications(англ.). Manning Publications. ISBN 978-1-61729-524-9.
  8. Freeman, Adam (2018). Pro Vue.js 2(англ.). Apress. ISBN 978-1-4842-3805-9.
  9. Franklin, Jack; Wanyoike, Michael; Bouchefra, Ahmed; Silas, Kingsley; Campbell, Chad A.; Jacques, Nilson; Omole, Olayinka; Mulders, Michiel (2019). Working with Vue.js(англ.). SitePoint. ISBN 978-1-4920-7144-0.(недаступная спасылка)
  10. [4][5][6][7][8][9]
  11. Meet the Team (англ.). Vuejs.org. Праверана September 23, 2019.
  12. Evan is creating Vue.js (англ.). Patreon. Праверана March 11, 2017.
  13. What is Vue.js (англ.). W3Schools. Праверана January 21, 2020.
  14. "Evan You". Between the Wires. November 3, 2016. Архівавана з арыгінала 3 чэрвеня 2017. Праверана 31 жніўня 2023.
  15. а б Vue.js: JavaScript MVVM made simple. Hacker News (3 лютага 2014). Праверана 29 студзеня 2023.
  16. а б First Week of Launching Vue.js. Evan You (11 лютага 2014). Праверана 29 студзеня 2023.
  17. v3.3.0 Rurouni Kenshin (англ.). Vue.js (11 мая 2023). Праверана 12 мая 2023.
  18. v3.2.0 Quintessential Quintuplets (англ.). Vue.js (5 жніўня 2021). Праверана August 10, 2021.
  19. v3.1.0 Pluto (англ.). Vue.js (7 чэрвеня 2021). Праверана July 18, 2021.
  20. v3.0.0 One Piece (англ.). Vue.js (18 верасня 2020). Праверана September 23, 2020.
  21. v2.7.0 Naruto (англ.). Vue.js (1 ліпеня 2022). Праверана July 1, 2022.
  22. v2.6.0 Macross (англ.). Vue.js (4 лютага 2019). Праверана September 23, 2020.
  23. v2.5.0 Level E (англ.). Vue.js (13 кастрычніка 2017). Праверана September 23, 2020.
  24. v2.4.0 Kill la Kill (англ.). Vue.js (13 ліпеня 2017). Праверана September 23, 2020.
  25. v2.3.0 JoJo's Bizarre Adventure (англ.). Vue.js (27 красавіка 2017). Праверана September 23, 2020.
  26. v2.2.0 Initial D (англ.). Vue.js (26 лютага 2017). Праверана September 23, 2020.
  27. v2.1.0 Hunter X Hunter (англ.). Vue.js (22 лістапада 2016). Праверана September 23, 2020.
  28. v2.0.0 Ghost in the Shell (англ.). Vue.js (30 верасня 2016). Праверана September 23, 2020.
  29. 1.0.0 Evangelion (англ.). Vue.js (27 кастрычніка 2015). Праверана September 23, 2020.
  30. 0.12.0: Dragon Ball (англ.). Vue.js (12 чэрвеня 2015). Праверана September 23, 2020.
  31. v0.11.0: Cowboy Bebop (англ.). Vue.js (7 лістапада 2014). Праверана September 23, 2020.
  32. v0.10.0: Blade Runner (англ.). Vue.js (23 сакавіка 2014). Праверана September 23, 2020.
  33. v0.9.0: Animatrix (англ.). Vue.js (25 лютага 2014). Праверана September 23, 2020.
  34. v0.8.0 (англ.). Vue.js (27 студзеня 2014). Праверана September 23, 2020.
  35. v0.7.0 (англ.). Vue.js (24 снежня 2013). Праверана September 23, 2020.
  36. 0.6.0: VueJS (англ.). Vue.js (8 снежня 2013). Праверана September 23, 2020.
  37. Components (англ.). Vuejs.org. Праверана March 11, 2017.
  38. Transition Effects (англ.). Vuejs.org. Праверана March 11, 2017.
  39. Transitioning State (англ.). Vuejs.org. Праверана March 11, 2017.
  40. You. Vue Nested Routing (2)(недаступная спасылка). Vue Home Page (subpage). Архівавана з першакрыніцы 8 мая 2017. Праверана May 10, 2017.