Vue.js

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Vue.js
Vue.js logo
原作者尤雨溪
首次釋出2014年2月,​12年前​(2014-02[1]
目前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    原始碼庫
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    程式語言TypeScript
    引擎
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      平台跨平台
      類型JavaScript函式庫
      特許條款MIT特許條款[2]

      Vue.js/vj/,簡稱Vue)是一個用於建立用戶介面的開源MVVM前端JavaScript框架,也是一個建立單頁應用Web應用框架[3]。Vue.js由尤雨溪建立,由他和其他活躍的核心團隊成員維護[4]

      2016年一項針對JavaScript框架的調查表明,Vue有着89%的開發者滿意度。[5]GitHub上,該專案平均每天能收穫95顆星,[5][6]為GitHub有史以來星標數第3多的專案。[7]

      綜述[編輯]

      Vue.js是一款JavaScript前端框架,旨在更好地組織與簡化Web開發。Vue所關注的核心是MVC模式中的視圖層,同時,它也能方便地取得數據更新,並通過組件內部特定的方法實現視圖與模型的互動。

      歷史[編輯]

      在為AngularJS工作之後,Vue的作者尤雨溪開發出了這一框架。他聲稱自己的思路是提取Angular中為自己所喜歡的部分,構建出一款相當輕量的框架。[8]Vue最早釋出於2014年2月。作者在Hacker News、Echo JS與Reddit/r/javascript版塊[9]釋出了最早的版本。一天之內,Vue就登上這三個網站的首頁。[10]Vue是Github上最受歡迎的開源專案之一。[11]同時,在JavaScript框架/函數庫中,Vue所獲得的星標數僅次於React,並高於Backbone.jsAngular 2、jQuery等專案。

      版本名稱通常來自漫畫和動畫,其中大部分屬於科幻小說類型。

      版本[編輯]

      版本 釋出日期 版本名稱
      3.4 2023年12月28日 Slam Dunk
      3.3 2023年5月11日 Rurouni Kenshin
      3.2 2021年8月5日 Quintessential Quintuplets[12]
      3.1 2021年6月7日 Pluto[13]
      3.0 2020年9月18日 One Piece[14]
      2.7 2022年7月1日 Naruto[15]
      2.6 2019年2月4日 Macross[16]
      2.5 2017年10月13日 Level E[17]
      2.4 2017年7月13日 Kill la Kill[18]
      2.3 2017年4月27日 JoJo's Bizarre Adventure[19]
      2.2 2017年2月26日 Initial D[20]
      2.1 2016年11月22日 Hunter X Hunter[21]
      2.0 2016年9月30日 Ghost in the Shell[22]
      1.0 2015年10月27日 Evangelion[23]
      0.12 2015年6月12日 Dragon Ball[24]
      0.11 2014年11月7日 Cowboy Bebop[25]
      0.10 2014年3月23日 Blade Runner[26]
      0.9 2014年2月25日 Animatrix[27]
      0.8 2014年1月27日 不適用 [28]
      0.7 2013年12月24日 不適用 [29]
      0.6 2013年12月8日 VueJS [30]

      特性[編輯]

      組件[編輯]

      組件是Vue最為強大的特性之一。為了更好地管理一個大型的應用程式,往往需要將應用切割為小而獨立、具有復用性的組件。在Vue中,組件是基礎HTML元素的拓展,可方便地自訂其數據與行為。[31]下方的代碼是Vue組件的一個範例,渲染為一個能計算滑鼠點擊次數的按鈕。

      // 定义一个名为 button-counter 的新组件
      Vue.component('button-counter', {
        data: function () {
          return {
            count: 0
          }
        },
        template: '<button v-on:click="count++">我被点击了 {{ count }} 次!</button>'
      })
      

      模板[編輯]

      Vue使用基於HTML的模板語法,允許開發者將DOM元素與底層Vue實例中的數據相繫結。所有Vue的模板都是合法的HTML,所以能被遵循規範的瀏覽器和HTML解析器解析。在底層的實現上,Vue將模板編譯成虛擬DOM渲染函數。結合響應式系統,在應用狀態改變時,Vue能夠智能地計算出重新渲染組件的最小代價並應用到DOM操作上。[32]

      此外,Vue允許開發者直接使用JSX語言作為組件的渲染函數,以代替模板語法。[33]以下為可計算點擊次數的按鈕的JSX渲染版本(需組態相應Babel編譯器):

      Vue.component('buttonclicked', {
        props: [ 'initial_count' ],
        data() {
          return { count: 0 };
        },
        render(h) {
          return (<button vOn:click={this.onclick}>Clicked {this.count} times</button>)
        },
        methods: {
          onclick() {
            this.count = this.count + 1;
          }
        },
        mounted: function() {
          this.count = this.initial_count;
        }
      });
      

      響應式設計[編輯]

      響應式是指MVC模型中的視圖隨着模型變化而變化。在Vue中,開發者只需將視圖與對應的模型進行繫結,Vue便能自動觀測模型的變動,並重繪視圖。這一特性使得Vue的狀態管理變得相當簡單直觀。[34]

      過渡效果[編輯]

      Vue在插入、更新或者移除DOM時,提供多種不同方式的應用過渡效果。包括以下工具:

      • CSS過渡和動畫中自動應用class;
      • 可以配合使用第三方CSS動畫庫,如Animate.css;
      • 在過渡勾點函數中使用JavaScript直接操作DOM;
      • 可以配合使用第三方JavaScript動畫庫,如Velocity.js。[35]

      單檔案組件(SFC)[編輯]

      為了更好地適應複雜的專案,Vue支援以.vue為副檔名的檔案來定義一個完整組件,用以替代使用Vue.component註冊組件的方式。開發者可以使用ViteWebpack等構建工具來打包單檔案組件。[36]

      生態系統[編輯]

      核心庫附帶由核心團隊和貢獻者開發的工具和庫。

      官方工具[編輯]

      • Devtools:用於除錯Vue.js應用程式的瀏覽器開發人員工具擴充
      • Vue CLI和Vite:用於快速開發Vue.js的標準工具
      • Vue Loader:一個webpack的載入器(loader),允許以SFC格式編寫Vue組件

      官方庫[編輯]

      • Vue Router:Vue.js的官方路由,允許開發者編寫在多個視圖中切換的單網頁應用程式
      • Pinia和Vuex:Vue.js的狀態管理庫
      • Vue Server Render:Vue.js的伺服器端渲染(Server Side RenderingSSR

      參見[編輯]

      參考文獻[編輯]

      1. ^ First Week of Launching Vue.js. Evan You. [2017-09-19]. (原始內容存檔於2019-02-05). 
      2. ^ vue/LICENSE. GitHub. [2017-04-17]. (原始內容存檔於2019-03-22). 
      3. ^ Introduction — Vue.js. [2017-03-11]. (原始內容存檔於2019-03-09) (English). 
      4. ^ Meet the Team — Vue.js. vuejs.org. [2019-09-23]. (原始內容存檔於2022-01-15) (English). 
      5. ^ 5.0 5.1 State Of JavaScript Survey Results: Front-end Frameworks. [2017-03-11]. (原始內容存檔於2017-04-17) (English). 
      6. ^ Trending JavaScript Frameworks. [2017-05-18]. [永久失效連結]
      7. ^ Most Starred Repositories. GitHub. [2020-02-17]. (原始內容存檔於2022-02-18). 
      8. ^ Between the Wires interview with Evan You. Between the Wires. 2016-11-03 [2017-08-26]. (原始內容存檔於2017-06-03) (English). 
      9. ^ r/javascript - Vue.js - MVVM made simple. reddit. [2019-04-17]. (原始內容存檔於2021-05-06) (English). 
      10. ^ First Week of Launching Vue.js. Evan You. [2017-03-11]. (原始內容存檔於2017-04-12) (English). 
      11. ^ GitHub 排行榜 Top 200,热门开源项目推荐 - GitHub中文社区. 2023-02-17. (原始內容存檔於2023-02-17) (中文(中國大陸)). 
      12. ^ v3.2.0 Quintessential Quintuplets. GitHub. 2021-08-05 [2021-08-10]. (原始內容存檔於2021-08-10). 
      13. ^ v3.1.0 Pluto. GitHub. 2021-06-07 [2021-07-18]. (原始內容存檔於2021-07-18). 
      14. ^ v3.0.0 One Piece. GitHub. 2020-09-18 [2020-09-23]. (原始內容存檔於2020-09-19). 
      15. ^ v2.7.0 Naruto. GitHub. 2022-07-01 [2022-07-01]. (原始內容存檔於2022-07-01). 
      16. ^ v2.6.0 Macross. GitHub. 2019-02-04 [2020-09-23]. (原始內容存檔於2020-11-11). 
      17. ^ v2.5.0 Level E. GitHub. 2017-10-13 [2020-09-23]. (原始內容存檔於2020-09-18). 
      18. ^ v2.4.0 Kill la Kill. GitHub. 2017-07-13 [2020-09-23]. (原始內容存檔於2020-11-09). 
      19. ^ v2.3.0 JoJo's Bizarre Adventure. GitHub. 2017-04-27 [2020-09-23]. (原始內容存檔於2020-11-11). 
      20. ^ v2.2.0 Initial D. GitHub. 2017-02-26 [2020-09-23]. (原始內容存檔於2021-04-13). 
      21. ^ v2.1.0 Hunter X Hunter. GitHub. 2016-11-22 [2020-09-23]. (原始內容存檔於2020-11-08). 
      22. ^ v2.0.0 Ghost in the Shell. GitHub. 2016-09-30 [2020-09-23]. (原始內容存檔於2020-10-27). 
      23. ^ 1.0.0 Evangelion. GitHub. 2015-10-27 [2020-09-23]. (原始內容存檔於2021-04-13). 
      24. ^ 0.12.0: Dragon Ball. GitHub. 2015-06-12 [2020-09-23]. (原始內容存檔於2021-04-13). 
      25. ^ v0.11.0: Cowboy Bebop. GitHub. 2014-11-07 [2020-09-23]. (原始內容存檔於2021-04-13). 
      26. ^ v0.10.0: Blade Runner. GitHub. 2014-03-23 [2020-09-23]. (原始內容存檔於2021-04-13). 
      27. ^ v0.9.0: Animatrix. GitHub. 2014-02-25 [2020-09-23]. (原始內容存檔於2021-04-13). 
      28. ^ v0.8.0. GitHub. 2014-01-27 [2020-09-23]. (原始內容存檔於2021-04-13). 
      29. ^ v0.7.0. GitHub. 2013-12-24 [2020-09-23]. (原始內容存檔於2021-04-13). 
      30. ^ 0.6.0: VueJS. GitHub. 2013-12-08 [2020-09-23]. (原始內容存檔於2021-04-13). 
      31. ^ Components — Vue.js. [2017-03-11]. (原始內容存檔於2021-06-06) (English). 
      32. ^ 模板语法 - Vue.js. [2017-09-19]. (原始內容存檔於2022-05-05) (中文(中國大陸)). 
      33. ^ Template Syntax — Vue.js. [2017-03-11]. (原始內容存檔於2021-11-04) (English). 
      34. ^ Reactivity in Depth — Vue.js. [2017-03-11]. (原始內容存檔於2021-05-06) (English). 
      35. ^ 进入/离开 & 列表过渡 - Vue.js. [2017-09-19]. (原始內容存檔於2022-04-03) (中文(中國大陸)). 
      36. ^ 单文件组件 - Vue.js. [2017-09-19]. (原始內容存檔於2022-04-03) (中文(中國大陸)). 

      外部連結[編輯]