文章目录
- 1、vue简介
- 1.1 什么是vue
- 1.2 vue特点
- 1.3 基本环境配置
- 2、vue基本语法
- 2.1 小案例演示vue的基本使用
- 使用注意项
- 2.2 模板语法的详细介绍
- 插值语法
- 指令语法
- 2.3 数据绑定
- 单向绑定
- 双向绑定
- 2.4 el和data的两种写法
- 3、Vue模型(参考了MVVM模型)
官网:一套用于构建用户界面1的渐进式2javascript框架
本地引入
<script type="text/javascript" src="../JS/vue.js">script>
CDN引入
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
2、下载dev开发工具
原因:引入vue.js文件后,浏览器控制台总是报下面的提示:
安装这个开发工具就是让这个提示消失
国内谷歌应用商店用不了,按下面步骤做:
打开浏览器扩展应用程序,在这里下载【提取码:5988】扩展程序,下载后拖至扩展程序那个页面。
3、修改全局配置文件Vue.config,
用于关闭下面这个提示
具体步骤,使用js写个脚本,修改config中的属性productionTip
<script type="text/javascript">
Vue.config.productionTip = false;
script>
步骤:
(1)准备一个容器,也就是HTML代码段
(2)创建一个Vue实例,new Vue(),并且在实例中传入配置对象(el属性,通过这个属性绑定容器;数据data属性,要传递的数据;methods属性,方法)
容器里的代码被称为vue模板
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="../JS/vue.js">script>
<title>初始vuetitle>
head>
<body>
<div id="root">
<h1>hello,{{name}}h1>
div>
<script type="text/javascript">
Vue.config.productionTip = false; // 组织vue在启动时生成生产提示
// 创建Vue实例
const x = new Vue({
// el用于指定当前vue实例为那个容器(标签)服务,值通常为css选择器字符串
el:"#root",
// data中用于存储数据,数据供el所指定的容器去使用
data:{
name:"小明"
}
// methods中是方法
methods:{
// ...
}
});
script>
body>
html>
(1)vue和容器是一 一对应的,不存在一对多和多对一关系
例如:多个容器对应一个vue实例时
例如:多个vue实例对应一个容器时
结果就是:第二个实例拿到这个容器发现,已经有实例接管了这个容器,然后报错。
(2)容器中{{}}中的内容是js表达式,不是简简单单的js代码(例如if,switch等)或者实例中data中不存在的变量。
<body>
<div class="root">
<h1>hello,{{name}},{{address}},{{3+4}},{{Date.now()}}h1>
div>
<script type="text/javascript">
Vue.config.productionTip = false; // 组织vue在启动时生成生产提示
// 创建Vue实例
new Vue({
// el用于指定当前vue实例为那个容器(标签)服务,值通常为css选择器字符串
el:".root",
// data中用于存储数据,数据供el所指定的容器去使用
data:{
name:"小明",
address:"北京",
}
});
script>
body>
上面案例中,{{3+4}},{{Date.now()}}虽然并没有在实例中定义,但结果却可以正常显示,这两者均都是表达式,此外还可以是三目表达式,函数调用表达式等
(3)可以通过扩展程序中的vue devtools来对数据进行修改
简单总结:
(1)想让vue工作,就必须创建一个vue实例,且要传入一个配置对象
(2)root容器里的代码依然符合html规范,不过有一些特殊的vue语法
(3)root容器里的代码被称为vue模板
(4)vue实例和容器时一一对应的
(5)开发中只有一个vue实例,且会配合着组件一起使用
(6){{xxx}}中的xxx要写js表达式,且xxx可以自动读取到data中的所有属性
(7)一旦data中的数发生改变,那么模板中都用到该数据的地方也会自动更新
语法:{{xxx}}
解释:xxx是js表达式,可以直接读取到实例中data中的所有属性
功能:用于解析标签体内容(文本中的内容)
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<script type="text/javascript" src="../JS/vue.js">script>
head>
<body>
<div>
<h1>插值语法h1>
<h2 class="root">hello,{{name}}h2>
div>
<script>
new Vue({
el:".root",
data:{
name:"小明",
}
});
script>
body>
html>
语法:v-bind:标签中属性名="xxx"
或者简写成 :标签中属性名="xxx"
的形式,xxx同样要写成js表达式
功能:用于解析标签(包括标签属性、标签体内容,绑定事件)
v-bind只是vue众多指令中的一个,v-bind是用来解析标签属性的,解析标签体内容、绑定事件的指令就不是这个了
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="../JS/vue.js">script>
<title>初始vuetitle>
head>
<body>
<div class="root">
<h1>指令语法h1>
<a v-bind:href="url">百度一下a>
<a :href="url">百度一下a>
div>
<script type="text/javascript">
Vue.config.productionTip = false; // 阻止vue在启动时生成生产提示
// 创建Vue实例
new Vue({
el:".root",
data:{
url:"http://www.baidu.com"
}
});
script>
body>
html>
vue中有两种数据绑定的方式:单项绑定与双向绑定
单向绑定(v-bind):数据只能从data流向页面
也就是说,只能从data上更改值,从而影响页面上显示的值
双向绑定(v-model):数据能从data流向页面,也能从页面流向data。
也就是说,当从data上更改值时,会影响到页面上显示的值;当更改页面上显示的值时,也会影响到data上的值。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="../JS/vue.js">script>
<title>数据绑定title>
head>
<body>
<div id="root">
单向数据绑定:<input type="text" v-bind:value="name"><br>
双向数据绑定:<input type="text" v-model:value="name">
div>
<script>
Vue.config.productionTip = false; // 阻止vue在启动时生成生产提示
new Vue({
el:"#root",
data:{
name:"小明"
}
})
script>
body>
html>
<div id="root">
<h1>你好,{{name}}h1>
div>
第一种:
<script>
const v = new Vue({
el:"#root",
data:{
name:"小明"
}
});
script>
第二种:
<script>
const v = new Vue({
data:{
name:"小明"
}
});
v.$mount("#root");
script>
第二中写法,当查看v对象时,在它的原型对象中有个$mount,代表el。
<div id="root">
<h1>你好,{{name}}h1>
div>
第一种:对象式
<script>
const v = new Vue({
el:"#root",
data:{
name:"小明"
}
});
script>
第二种:函数式
用于组件中时必须使用函数式,比较好用
<script>
const v = new Vue({
el:"#root",
// data写成函数的形式
data:function(){
return{
name:"小明"
}
}
});
script>
Vue中虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。因此在文档中经常会使用 vm (ViewModel 的缩写) 这个变量名表示 Vue 实例。
Vue中MVVM模型拆开理解如下:
M:Model(模型):对应data中的数据
V:View(视图):模板
VM:ViewModel(视图模板):Vue实例对象
分析:观察红色箭头路线,如果模型data中的数据被修改了,会通过视图模型将视图中对应的数据也进行更改;如果视图中数据需要更改,那么也会通过视图模型从而将模型中的数据进行更改。
总结:
data中所有的属性最后都会出现在vue实例对象上
实例对象vm上的所有属性以及Vue原型上所有属性,在Vue模板中都可以直接使用。DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Documenttitle> <script src="../JS/vue.js">script> head> <body> <div id="root"> <h1>{{name}}h1> <div>测试1:{{$options}}div> <div>测试2:{{$emit}}div> <div>测试3:{{_c}}div> div> <script> const vm = new Vue({ el:"#root", data:{ name:"小明" } }); script> body> html>
构建用户界面通俗的讲是指将后台中的数据变成用户能看到的前端界面。 ↩︎
渐进式:官网解释成vue可以自底向上逐层的应用。通俗的讲就是从开始引入一个个的轻量级的核心库到引入各式各样的vue插件,逐层递进。 ↩︎