大前端技术之Vue.js全接触

举报
tea_year 发表于 2025/09/30 16:25:43 2025/09/30
【摘要】 Vue.js 是一套基于 MVVM 模式的渐进式前端框架,核心聚焦视图层,兼具易学性与灵活性,可自底向上逐层应用于项目,既支持轻量引入也能驱动复杂单页应用,不支持 IE8 及以下版本,依赖 ES5 及以上特性。 其核心优势在于数据驱动与组件化。采用声明式渲染,通过{{}}插值表达式或v-text指令(解决闪烁问题)绑定数据;v-model实现表单元素与数据双向绑定,v-bind(可缩写为:)动态绑

一、 vue.js研究

1.1 vue.js介绍

1 、vue.js是什么?

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

渐进式框架:Progressive,说明vue.js的轻量,是指一个前端项目可以使用vue.js一两个特性也可以整个项目都用vue.js。

自底向上逐层应用:作为渐进式框架要实现的目标就是方便项目增量开发。

参考:https://cn.vuejs.org/

2 、Vue.js与ECMAScript

Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。

什么是ECMAScript?

image-20210111194214448.png

ECMAScript(简称ES)是一种规范,我们平常所说的Js/Javascript是ECMAScript的实现,早期主要应用的ES3,当前主流浏览器都支持ES5、ES6,ES8已于 2017 年发布。

ES6:http://www.ecma-international.org/ecma-262/6.0/

ES7:http://www.ecma-international.org/ecma-262/7.0/

3 、Vue.js的使用

1 )在html页面使用script引入vue.js的库即可使用。

2 )使用Npm管理依赖,使用webpack打包工具对vue.js应用打包。

大型应用推荐此方案。

3 )Vue-CLI脚手架

使用vue.js官方提供的CLI脚本架很方便去创建vue.js工程雏形。

4 、vue.js有哪些功能?

1 )声明式渲染

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。

比如:使用vue.js的插值表达式放在Dom的任意地方, 插值表达式的值将被渲染在Dom中。{{name}}

2 )条件与循环

dom中可以使用vue.js提供的v-if、v-for等标签,方便对数据进行判断、循环。

3 )双向数据绑定

Vue 提供v-model 指令,它可以轻松实现Dom元素和数据对象之间双向绑定,即修改Dom元素中的值自动修改绑定的数据对象,修改数据对象的值自动修改Dom元素中的值。

4 )处理用户输入

为了让用户和你的应用进行交互,我们可以用 v-on 指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法

5 )组件化应用构建

vue.js可以定义一个一个的组件,在vue页面中引用组件,这个功能非常适合构建大型应用。

1.2 vue.js基础

1.2.1 MVVM模式

vue.js是一个MVVM的框架,理解MVVM有利于学习vue.js。

MVVM拆分解释为:

Model:负责数据存储

View:负责页面展示

View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示

MVVM要解决的问题是将业务逻辑代码与视图代码进行完全分离,使各自的职责更加清晰,后期代码维护更 加简单

用图解的形式分析Ajax请求回来数据后直接操作Dom来达到视图的更新的缺点,以及使用MVVM模式是如何 来解决这个缺点的

Vue中的 MVVM

image-20210111194416788.png

从上图看出,VM(ViewModel)可以把view视图和Model模型解耦合,VM的要做的工作就是vue.js所承担的。

1.2.2 入门程序

本次测试我们在门户目录中创建一个html页面进行测试,正式的页面管理前端程序会单独创建工程。

在门户目录中创建vuetest目录,并且在目录下创建vue_01.html文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF‐8">
<title>vue.js入门程序</title>
<script src="/js/vue/vue.min.js"></script>
</head>
<body>
<div id="app">
{{name}}
    <!‐‐ 在Vue接管区域中使用Vue的系统指令呈现数据 这些指令就相当于是MVVM中的View这个角色 ‐‐>
</div>
</body>
<script>
// 实例化Vue对象
//vm :叫做MVVM中的 View Model
var VM = new Vue({
el:"#app",//表示当前vue对象接管app的div区域
data:{
name:'高级程序员'// 相当于是MVVM中的Model这个角色
}
});
</script>
</html>

代码编写步骤:

1 、定义html,引入vue.js

2 、定义app div,此区域作为vue的接管区域

3 、定义vue实例,接管app区域。

4 、定义model(数据对象)

5 、VM完成在app中展示数据

image-20210111194822039.png

1.2.3 1+1=2

实现效果:

image-20210111194845023.png

代码如下:

<!DOCTYPE html>
<html lang="en" xmlns:v‐on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF‐8">
<title>vue.js入门程序</title>
</head>
<body>
<div id="app">
  <!‐‐{{name}}解决闪烁问题使用v‐text‐‐>
<a v‐bind:href="url"><span v‐text="name"></span></a>
<input type="text" v‐model="num1">+
<input type="text" v‐model="num2">=
<span v‐text="result"></span>
<!‐‐ <span v‐text="Number.parseInt(num1)+Number.parseInt(num2)"></span>‐‐>
<!‐‐{{num1+num2}}‐‐>
<!‐‐<input type="text" v‐model="result">‐‐>
<button v‐on:click="change">计算</button>
<!‐‐ 在Vue接管区域中使用Vue的系统指令呈现数据
这些指令就相当于是MVVM中的View这个角色 ‐‐>
</div>
</body>
<script src="/js/vue/vue.min.js"></script>
<script>
// 实例化Vue对象
//vm :叫做MVVM中的 View Model
var VM = new Vue({
  el:"#app",//表示当前vue对象接管app的div区域
  data:{
name:'高级程序员',// 相当于是MVVM中的Model这个角色
num1:0,
  num2:0,
  result:0,
  url:'http://www.lxw.cn'
  },
methods:{
change:function(){
this.result = Number.parseInt(this.num1)+Number.parseInt(this.num2)
alert(this.result)
  }
  }
 });
</script>
</html>

本例子学习了:

1 、v-model:

1 、在表单控件或者组件上创建双向绑定 2 、v-model仅能在如下元素中使用:

input
select
textarea
components(Vue中的组件)

2 、解决插值表达式闪烁问题,使用v-text

v-text可以将一个变量的值渲染到指定的元素中,它可以解决插值表达式闪烁的问题

3 、v-on,@绑定一个按钮的单击事件

4 、v-bind

1 、作用:
v‐bind可以将数据对象绑定在dom的任意属性中。
v‐bind可以给dom对象绑定一个或多个特性,例如动态绑定style和class
2 、举例:
<img v‐bind:src="imageSrc">  
<div v‐bind:style="{ fontSize: size + 'px' }"></div>
3 、缩写形式
<img :src="imageSrc">
<div :style="{ fontSize: size + 'px' }"></div>

1.2.4 v-if和v-for

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF‐8">
<title>Document</title>
<script src="/js/vue/vue.min.js"></script>
</head>
<body>
<div id="app">
<ul>
  <!‐‐只显示偶数行‐‐>
  <li v‐for="(item,index) in list" :key="index" v‐if="index % 2==0">{{index}}‐{{item}}</li>
  <li v‐for ="(value,key) in user">{{key}}‐{{value}}</li>
  <li v‐for="(item,index) in userlist" :key="item.user.uname">

<div v‐if="item.user.uname=='yunhe'" style="background: chartreuse">
    <!‐‐名称为yunhe的加背景色‐‐>
  {{index}}‐{{item.user.uname}}‐{{item.user.age}}
  </div>
  <div v‐else="">
  {{index}}‐{{item.user.uname}}‐{{item.user.age}}
  </li> </div>
    </ul>
</div>
</body>
<script>
  new Vue({
  el:'#app',
  data:{
list:[1,2,3,4,4],
user:{uname:'lxw',age:10},
userlist:[
  { user:
{uname:'lxw',age:10}}, { user:
{uname:'yunhe',age:11}}  ]
  }
  });
</script>
</html>

总结

Vue.js 是一套基于 MVVM 模式的渐进式前端框架,核心聚焦视图层,兼具易学性与灵活性,可自底向上逐层应用于项目,既支持轻量引入也能驱动复杂单页应用,不支持 IE8 及以下版本,依赖 ES5 及以上特性。
其核心优势在于数据驱动与组件化。采用声明式渲染,通过{{}}插值表达式或v-text指令(解决闪烁问题)绑定数据;v-model实现表单元素与数据双向绑定,v-bind(可缩写为:)动态绑定 DOM 属性,v-on(可缩写为@)处理用户交互。借助v-if条件渲染与v-for列表循环,能高效操控 DOM。
架构上以 ViewModel 为核心,解耦 Model(数据存储)与 View(页面展示),自动处理数据与视图同步,简化开发。使用方式灵活,可通过 script 标签快速引入,也能借助 Vue-CLI 脚手架与 Webpack 构建大型项目,组件化特性更让大型应用的开发与维护更高效,是当前前端开发的主流框架之一。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。