跳转到内容

Vue.js

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是本页的一个历史版本,由InternetArchiveBot留言 | 贡献2021年2月9日 (二) 15:22 (补救7个来源,并将0个来源标记为失效。) #IABot (v2.0.8)编辑。这可能和当前版本存在着巨大的差异。

Vue.js
Vue.js logo
原作者尤雨溪(Evan You)
首次发布2014年2月,​10年前​(2014-02[1]
当前版本
  • 3.4.30 (2024年6月22日;穩定版本)[2]
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
编程语言JavaScript
平台跨平台
文件大小76 KB 生产版
240 KB 开发版
类型JavaScript函式庫
许可协议MIT许可证[3]
网站vuejs.org/ 编辑维基数据

Vue.js/vj/,或简称为Vue)是一个用于创建用户界面的开源JavaScript框架,也是一个创建单页应用Web应用框架[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上最受欢迎的开源项目之一。同时,在JavaScript框架/函式库中,Vue所获得的星标数已超過React,並高于Backbone.js、Angular 2、jQuery等项目。

特性

组件

组件是Vue最为强大的特性之一。为了更好地管理一个大型的应用程序,往往需要将应用切割为小而独立、具有复用性的组件。在Vue中,组件是基础HTML元素的拓展,可方便地自定义其数据与行为。[11]下方的代码是Vue组件的一个示例,渲染为一个能计算鼠标点击次数的按钮。

// 定义一个名为 button-counter 的新组件
Vue.component('button-counter', {
  data: function () {
    return {
      count: 0
    }
  },
  template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
})

模板

Vue使用基于HTML的模板语法,允许开发者将DOM元素与底层Vue实例中的数据相绑定。所有Vue的模板都是合法的HTML,所以能被遵循规范的浏览器和HTML解析器解析。在底层的实现上,Vue将模板编译成虚拟DOM渲染函数。结合响应式系统,在应用状态改变时,Vue能够智能地计算出重新渲染组件的最小代价并应用到DOM操作上。[12]

此外,Vue允许开发者直接使用JSX英语React (JavaScript library)#JSX语言作为组件的渲染函数,以代替模板语法。[13]以下为可计算点击次数的按钮的JSX渲染版本(需配置相应Babel处理器):

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

响应式设计

响应式是指MVC模型中的视图随着模型变化而变化。在Vue中,开发者只需将视图与对应的模型进行绑定,Vue便能自动观测模型的变动,并重绘视图。这一特性使得Vue的状态管理变得相当简单直观。[14]

过渡效果

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

  • CSS过渡和动画中自动应用class
  • 可以配合使用第三方CSS动画库,如Animate.css
  • 在过渡钩子函数中使用JavaScript直接操作DOM
  • 可以配合使用第三方JavaScript动画库,如Velocity.js.[15]

单文件组件

为了更好地适应复杂的项目,Vue支持以.vue为扩展名的文件来定义一个完整组件,用以替代使用Vue.component注册组件的方式。开发者可以使用 WebpackBrowserify等构建工具来打包单文件组件。[16]

核心插件

参见

参考文献

  1. ^ First Week of Launching Vue.js. Evan You. [2017-09-19]. (原始内容存档于2019-02-05). 
  2. ^ 2.0 2.1 Release 3.4.30. 2024年6月22日 [2024年6月27日]. 
  3. ^ vue/LICENSE. GitHub. [2017-04-17]. (原始内容存档于2019-03-22). 
  4. ^ Introduction — Vue.js. [2017-03-11]. (原始内容存档于2019-03-09) (英语). 
  5. ^ 5.0 5.1 State Of JavaScript Survey Results: Front-end Frameworks. [2017-03-11]. (原始内容存档于2017-04-17) (英语). 
  6. ^ Trending JavaScript Frameworks. [2017-05-18]. [永久失效連結]
  7. ^ Most Starred Repositories. GitHub. [2020-02-17]. 
  8. ^ Between the Wires interview with Evan You. Between the Wires. 2016-11-03 [2017-08-26]. (原始内容存档于2017-06-03) (英语). 
  9. ^ r/javascript - Vue.js - MVVM made simple. reddit. [2019-04-17] (英语). 
  10. ^ First Week of Launching Vue.js. Evan You. [2017-03-11] (英语). 
  11. ^ Components — Vue.js. [2017-03-11] (英语). 
  12. ^ 模板语法 - Vue.js. [2017-09-19] (中文(中国大陆)). 
  13. ^ Template Syntax — Vue.js. [2017-03-11] (英语). 
  14. ^ Reactivity in Depth — Vue.js. [2017-03-11] (英语). 
  15. ^ 进入/离开 & 列表过渡 - Vue.js. [2017-09-19] (中文(中国大陆)). 
  16. ^ 单文件组件 - Vue.js. [2017-09-19] (中文(中国大陆)). 
  17. ^ vue-router. router.vuejs.org. [2017-03-11]. (原始内容存档于2017-03-05) (英语). 
  18. ^ vuex. vuex.vuejs.org. [2017-03-11] (英语). 
  19. ^ vue-loader. vue-loader.vuejs.org. [2017-03-11]. (原始内容存档于2017-03-06) (英语). 
  20. ^ vueify. GitHub. [2017-03-11] (英语). 
  21. ^ vue-cli. GitHub. [2017-03-11] (英语). 

外部链接