[vue面试题] 1、说说你对vue的理解

1、前端历史

1997年及以前的时代(蛮荒时代):这个时代是静态页面的天下,数据一旦固化是不可以轻易变动的,虽然js在1995年已经由网景公司(Netscape)的程序员Brendan Eich在1995年开发,并在Netscape Navigator 2.0浏览器中首次引入。1996年,JavaScript被提交给ECMA国际(European Computer Manufacturers Association)作为标准化的基础,成为ECMAScript标准的第一个版本。但是那个时候并不是普遍应用的技术,这个时代更多的是html构建的类似于“电子报纸”的网站。此时的网页是没有数据库概念的,最多就是使用CGI(1993)等类似的技术与数据库或者文件管理系统进行交互。

  • 2005年及以前(中古):代表技术是jsp和asp,这是一种将数据和网页渲染进行深度捆绑的技术栈,当然这对于灵活性就不是很友好了(因为内容都是在服务端进行渲染的,那个时候ajax [1999]还仅仅是小火)。
  • 2006年开始(近代):
    • 2006年,随着 jQuery 的出现,前端开发开始进入现代化阶段。jQuery 简化了 DOM 操作、事件处理、动画以及 Ajax 交互,使得开发者能够更高效地编写跨浏览器的 JavaScript 代码,真正实现了“Write less, do more”的理念。同一时期,单页应用 (SPA) 的兴起使得在单个网页上动态加载内容成为可能,解决了传统多页应用无法满足复杂互联网应用需求的问题。
    • 随着互联网应用的复杂度增加,Backbone.js (2010) 作为一个极简的 MVC 框架出现,强调灵活性和最少的结构。Ember.js (2011) 则是一个高度模块化和强约定的框架,适用于大型应用,强调“约定优于配置”。AngularJS (2009) 是一个全面的框架,提供了双向数据绑定、指令、过滤器等功能,注重模块化和可测试性,成为大型企业的首选。这些框架的出现,大大降低了开发难度,提高了开发效率和迭代速度。
    • 总结为一句话:2006年 jQuery 的出现标志着前端开发的现代化,随着单页应用 (SPA) 的兴起和 Backbone.js、Ember.js、AngularJS 等框架的推出,前端开发变得更加高效、灵活,显著提升了开发效率和迭代速度。
  • 2013年(现代):以React为标志,前端完成了一次蜕变。它通过引入组件化的开发方式和虚拟 DOM 的概念,极大地提高了应用的性能和开发效率.

2、vue

Vue.js 是由尤雨溪(Evan You)开发的一种用于构建用户界面的渐进式 JavaScript 框架。它因其易于学习、灵活性高和性能卓越而受到广泛欢迎。以下是 Vue.js 的一些关键时间节点:

主要时间节点:

  • 2014 年 2 月:Vue.js 第一个版本发布。尤雨溪在他之前在 Google 工作时受到了 AngularJS 的启发,决定创建一个更轻量、更灵活的框架。
  • 2015 年:Vue.js 1.0 发布,标志着 Vue.js 成熟并开始被广泛接受。
  • 2016 年 10 月:Vue.js 2.0 发布,带来了包括虚拟 DOM、更加高效的渲染和更好的可扩展性等一系列改进。
  • 2017 年:Vue.js 在 GitHub 的 Star 数超过了很多其他著名框架,显示了其快速增长的社区支持。
  • 2019 年:Vue.js 3.0 的计划公布,强调了性能提升、Composition API 和更好的 TypeScript 支持。
  • 2020 年 9 月:Vue.js 3.0 正式发布,带来了 Composition API、改进的 TypeScript 支持、性能提升等众多新特性。

Vue.js 的特点:

  • 渐进式框架:Vue.js 可以作为一个简单的库使用,也可以通过引入插件和生态系统中的工具发展成一个完整的框架。
  • 声明式渲染:使用简洁的模板语法来声明式地描述 UI。
  • 组件化:支持基于组件的开发,组件是可复用的、自包含的 UI 单位。
  • 双向数据绑定:通过数据绑定,简化了操作 DOM 的过程,提升了开发效率。
  • 虚拟 DOM:使用虚拟 DOM 来提升性能和优化更新过程。
  • 生态系统:拥有丰富的生态系统,包括路由管理(Vue Router)、状态管理(Vuex)和构建工具(Vue CLI)。

3、vue的结构

vue的系统模型是数据驱动(MVVM)的。 MVVM表示的是 Model-View-ViewModel:

  • Model:模型层,负责处理业务逻辑以及和服务器端进行交互
  • View:视图层:负责将数据模型转化为UI展示出来,可以简单的理解为HTML页面
  • ViewModel:视图模型层,用来连接Model和View,是Model和View之间的通信桥梁

我们用实际的例子来讲解vue的各个模块对应的代码结构:

view层:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue MVVM Example</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
</head>
<body>
  <div id="app">
    <h1>{{ message }}</h1>
    <input v-model="message" />
    <p>{{ reversedMessage }}</p>
  </div>

  <script src="app.js"></script>
</body>
</html>

JavaScript 部分(Model 和 ViewModel):

// app.js
new Vue({
  el: '#app',
  data: {
    // Model: 数据模型
    message: 'Hello Vue!'
  },
  computed: {
    // ViewModel: 计算属性
    reversedMessage: function () {
      // 通过计算属性实现数据的处理逻辑
      return this.message.split('').reverse().join('');
    }
  },
  methods: {
    // ViewModel: 方法
    updateMessage: function (newMessage) {
      this.message = newMessage;
    }
  }
});

4、总结

vue是集合了目前前端最前沿技术的前端框架,融合了angularjs的双向绑定和react的虚拟dom技术和组件化技术,增加了模版渲染和一些语法糖创建的适合中小型项目的前端框架。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部