1、Vue入门:Vue.js简介、Vue.js核心特性、MVVM模式、Vue.js与其他框架对比

1.1 什么是Vue.js?

Vue.js,读作「view」,中文社区常叫它「尤雨溪框架」。嗯,没错,就是那位中国大神尤雨溪的作品。

我第一次接触Vue是在2016年。当时公司要重构一个后台管理系统,jQuery写得太痛苦了——数据变了要手动操作DOM,改一个字段得找半天对应的标签。说实话,那会儿我差点想转行。

后来同事推荐了Vue。我抱着试试看的心态,花了一个周末看了官方文档。结果你猜怎么着?周一我就把整个项目用Vue重写了。不是我夸张,是Vue真的太「懂」前端开发者的痛点了。

Vue.js是一个用于构建用户界面的渐进式JavaScript框架。什么叫「渐进式」?说白了,就是你可以按需使用。想简单用就用一个CDN链接,想做大项目就配合全家桶。不像某些框架,一上来就要你学一堆概念。

核心定位:Vue专注于视图层(View),只做一件事——把数据和DOM绑定起来。其他的路由、状态管理,都是可选的。

1.2 Vue.js的核心特性

我个人习惯把Vue的特性总结为「三板斧」。掌握了这三样,基本就能上手干活了。

1.2.1 响应式数据绑定

这是Vue最核心的能力。你想想看,传统开发中,数据变了要手动更新页面:

// 传统jQuery方式
let count = 0;
$('#btn').click(function() {
    count++;
    $('#count').text(count); // 手动更新DOM
});

在Vue里,你只需要关心数据:

// Vue方式
new Vue({
    data: {
        count: 0
    },
    methods: {
        increment() {
            this.count++; // 数据变了,页面自动更新
        }
    }
});

我在项目中遇到过最典型的场景:一个表格有几十列,每列都能排序、筛选。如果用jQuery写,光是维护状态就得写几百行。Vue的响应式系统帮我省了至少80%的代码量。

1.2.2 组件化开发

Vue把页面拆成一个个独立的组件。每个组件都有自己的HTML、CSS、JavaScript。就像搭积木一样,一个复杂的页面就是由这些小积木拼起来的。

// 一个简单的按钮组件
Vue.component('my-button', {
    template: '<button @click="handleClick">{{ text }}</button>',
    props: ['text'],
    methods: {
        handleClick() {
            alert('你点击了按钮');
        }
    }
});

这样做的好处是什么?我举个例子。有一次我们团队要改一个支付页面的样式,负责这个组件的同事只改了那个组件的代码,其他页面完全不受影响。这在传统开发中几乎不可能——改一个全局样式,经常导致其他地方「炸」了。

1.2.3 虚拟DOM

Vue在内存中维护了一个虚拟的DOM树。数据变化时,它先对比新旧虚拟DOM的差异,然后只更新真正变化的部分。说白了,就是「能少干活就少干活」。

避坑指南:我曾经犯过一个错误——在模板里写复杂的表达式。比如 {{ items.filter(i => i.active).map(i => i.name).join(', ') }}。这样每次数据变化都会重新计算,性能很差。正确的做法是用计算属性(computed)来缓存结果。

1.3 MVVM模式

MVVM是Model-View-ViewModel的缩写。听起来高大上,其实说白了就是三层架构:

层级 作用 Vue中的对应
Model(模型) 数据层,负责存储数据 data、Vuex
View(视图) UI层,负责展示 template、HTML
ViewModel(视图模型) 连接Model和View Vue实例本身

为什么需要ViewModel?你想想看,如果没有它,数据变了你要手动改视图,视图变了你要手动改数据。ViewModel就是那个「中间人」,自动帮你同步。

// MVVM在Vue中的体现
let vm = new Vue({
    el: '#app',
    data: {
        message: 'Hello Vue!'
    }
});

// 修改数据,视图自动更新
vm.message = '你好,Vue!';

我记得刚学MVVM时,总觉得这是个「玄学」。直到自己动手写了一个双向绑定的demo,才恍然大悟——原来就是给数据加了getter/setter,然后监听变化更新DOM。嗯,原理其实不复杂。

1.4 Vue.js与其他框架对比

很多新手会问:「我该学Vue还是React还是Angular?」我的建议是:先别纠结,都了解一下,选一个深入学。这里我简单对比一下:

特性 Vue React Angular
学习曲线 平缓 中等 陡峭
数据绑定 双向绑定 单向数据流 双向绑定
模板语法 HTML模板 JSX HTML模板+指令
状态管理 Vuex(官方) Redux(社区) RxJS(内置)
适用场景 中小型项目、快速开发 大型应用、灵活度高 企业级应用、全栈框架

我个人觉得,Vue最大的优势就是「上手快」。如果你是一个刚入行的前端,或者想快速做出一个能用的产品,Vue绝对是最佳选择。React的生态更丰富,但学习成本也更高。Angular嘛……说实话,我见过不少团队用Angular,但真正用得好的没几个。

注意:不要陷入「框架之争」。技术选型要看团队和项目。我见过用Vue做的大型电商平台,也见过用React做的小型博客。工具是死的,人是活的。

好了,这一章我们了解了Vue是什么、它的核心特性、MVVM模式,以及它和其他框架的区别。下一章,我会带你亲手搭建Vue开发环境,写第一个Vue应用。到时候你就知道,为什么我说Vue是「最懂前端」的框架了。