初识Vue
简介
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式的js框架,发布于 2014 年 2 月。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库(如:vue-router,vue-resource,vuex)或既有项目整合
Vue2官网:v2.cn.vuejs.org/
为什么要学习Vue.js
- 简单易学:Vue.js 的API简洁明了,易于理解和使用。它的学习曲线相对较低,开发者可以快速上手构建应用程序。
- 响应式数据绑定:Vue.js 提供了响应式数据绑定机制,这意味着当数据发生变化时,视图会自动更新。这大大简化了应用程序的开发过程。
- 组件化开发:Vue.js 采用了组件化的开发模式,可以将应用程序拆分为可重用的组件,提高了代码的可维护性和复用性。
- 可扩展性:Vue.js 提供了丰富的插件和指令,例如路由、状态管理等,可以满足各种复杂的应用程序需求。同时,Vue.js 也支持与其他流行的前端库和框架(如 Angular 和 React)进行集成。
- 社区支持:Vue.js 拥有庞大的开发者社区,提供了大量的教程、示例和第三方库。这使得开发者可以轻松找到所需资源,并快速解决问题。
- 性能优化:Vue.js 在运行时进行了优化,通过异步渲染和延迟加载等技术,提高了应用程序的性能和用户体验。
- 客户端路由:Vue.js 内置了客户端路由功能,支持单页应用的构建,使得页面之间的跳转和数据传递更加简单和流畅。
MVVM思想
MVVM(Model-View-ViewModel)是前端视图层的分层开发思想,本质上就是MVC(Model-View-Controller)的改进版,主要把每个页面分成了 M(Model)、V(View)、VM(ViewModel)。其中VM是MVVM模式的核心,VM是M和V之间的调度者。
- Model:模型层,在这里表示 每个页面中展示的数据
- View:视图层,在这里表示 DOM(HTML 操作的元素)
- ViewModel:连接视图和数据的中间件,它是一个调度者,分割了 V 和 M,当View层需要获取数据或保存数据都需要VM做中间处理
在 MVVM 架构中,是不允许 数据 和 视图 直接通信的,只能通过 ViewModel 来进行交互,而 ViewModel 就是定义了一个 Observer 观察者
- ViewModel 能够观察到数据的变化,并对视图下对应的内容进行更新
- ViewModel 能够监听到视图的变化,并能够通知数据发生改变
Vue.js 是MVVM的实现者,其核心就是实现了 DOM 监听 与 数据绑定
Vue的两大核心要素
-
数据驱动:是指Vue.js利用数据观测原理,通过getter和setter方法实现数据与视图的双向绑定。在技术实现上,Vue.js使用了ES5 Object.defineProperty和存储器属性:getter和setter,因此它只兼容IE9及以上的版本。这些 getter/setter 对用户来说是不可见的,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。这里需要注意的问题是浏览器控制台在打印数据对象时 getter/setter 的格式化并不同,所以你可能需要安装 vue-devtools 来获取更加友好的检查接口。
数据驱动的核心是VM,即ViewModel,它保证数据和视图的一致性。当数据变化时,视图会自动更新;当视图变化时,数据也会自动更新 -
组件系统:Vue.js 采用了组件化开发模式,将应用分解为一系列可复用的组件,每个组件都具有特定的功能和作用。这种组件化的开发方式提高了代码的可维护性和复用性,使得应用更加易于扩展和迭代。每个组件都有自己的数据、行为和样式,可以独立地开发和测试,然后再组合到一起,构成完整的应用程序
Vue创建实例
-
准备容器
-
引包(官网) — 开发版本/生产版本: 1.通过cdn方式引入:
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
(注意:cdn是一种加速策略,能够快速的提供js文件)
2.下载好官网下载好vue.js后再引入:<script src="../js/vue.js"></script>
-
创建Vue实例 new Vue()
-
指定配置项,渲染数据
- el:指定挂载点
- data提供数据
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!--
初识Vue:
1.想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象;
2.app容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法;
3.app容器里的代码被称为【Vue模板】;
4.Vue实例和容器是一一对应的;
5.真实开发中只有一个Vue实例,并且会配合着组件一起使用;
6.{{xxx}}中的xxx要写js表达式,且xxx可以自动读取到data中的所有属性;
7.一旦data中的数据发生改变,那么页面中用到该数据的地方也会自动更新;
注意区分:js表达式 和 js代码(语句)
1.表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方:
(1). a
(2). a+b
(3). demo(1)
(4). x === y ? 'a' : 'b'
2.js代码(语句)
(1). if(){}
(2). for(){}
-->
<!-- 准备好一个容器 -->
<div id = "app">
{{msg}} <!-- 插值表达式-->
</div>
<!-- 引包 -->
<script src="../js/vue.js"></script>
<script type="text/javascript">
/* 创建Vue实例 new Vue() */
const app = new Vue({
/* 指定配置项,渲染数据 */
el:"#app", //el用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串。
data:{ //data中用于存储数据,数据供el所指定的容器去使用,值我们暂时先写成一个对象
msg:"hello world"
}
})
</script>
</body>
</html>
浏览器中查看效果:
插值表达式
插值表达式是一种Vue的模板语法
我们可以用插值表达式渲染出Vue提供的数据
作用:利用表达式进行插值,渲染到页面中
表达式:是可以被求值的代码,JS引擎会讲其计算出一个结果
以下的情况都是表达式:
money + 100
money - 100
money * 10
money / 10
price >= 100 ? '真贵':'还行'
obj.name
arr[0]
fn()
obj.fn()
语法
插值表达式语法:{{ 表达式 }}
<h3>{{title}}<h3>
<p>{{nickName.toUpperCase()}}</p>
<p>{{age >= 18 ? '成年':'未成年'}}</p>
<p>{{obj.name}}</p>
<p>{{fn()}}</p>
错误用法
1.在插值表达式中使用的数据 必须在data中进行了提供
<p>{{hobby}}</p> //如果在data中不存在 则会报错
2.支持的是表达式,而非语句,比如:if for ...
<p>{{if}}</p>
3.不能在标签属性中使用 {{ }} 插值 (插值表达式只能标签中间使用)
<p title="{{username}}">我是P标签</p>
响应式特性
什么是响应式
简单理解就是数据变,视图对应变。
如何访问 和 修改 data中的数据(响应式演示)
data中的数据, 最终会被添加到实例上
① 访问数据: "实例.属性名"
② 修改数据: "实例.属性名"= "值"
示例:
<div id = "app">
{{ {"name":"avgrado","age":20}.name }} <!-- 插值表达式-->
</div>
此时,页面上会显示“avgrado”,也就是对象中 name 属性的值
Vue 开发者工具安装
- 通过谷歌应用商店安装(国外网站)
- 极简插件下载(推荐) chrome.zzzmh.cn/index
安装步骤:
安装后可以看到一个Vue的调试面板