Vue基本使用
# Vue
# @Vue/cli
脚手架
是官方提供的一个全局模块包,此包用于创建脚手架项目
安装全局模块包
yarn global add @vue/cli
创建项目
vue create [file_name]
根据提示运行项目
cd file_name
yarn server
# Vue
项目结构
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false //控制台提示消息
new Vue({
render:h=>h(App),//渲染 APP 页面
}).$mount('#app') // 渲染到 index.html 文件的id叫 app的标签上
1
2
3
4
5
6
2
3
4
5
6
App.vue => main.js => index.html
# Vue
配置文件
Vue.config.js
配置服务器
module.exports = {
devServer :{
port:3000,
open:true
},
lintOnSave:false,//关闭js代码检查工具 eslint
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# Vue
文件结构
<template>
<div>
欢迎使用vue
</div>
</template>
<script>
export default{
name : 'app'
}
</script>
<style scoped>
</style>
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Vue
推荐采用vue
文件来开发项目- template 里只能有一个根标签
js
独立作用域互不影响style
配合scoped
属性,保证样式只针对当前template
标签生效
# Vue
基本使用
# 插值表达式
{{}}
<template>
<div>
<h1>{{msg}}</h1>
<h2>{{obj.name}}</h2>
<h3>{{obj.age>=18?'成年':'未成年'}}</h3>
</div>
</template>
<script>
export default{
data(){
return {
msg:'Hello,Vue',
Obj:{
name:'vue',
age:5
}
}
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
插值表达式:双大括号,可以把 Vue
数据变量显示在标签内
变量声明:data函数返回的对象上,用 key
属性声明
# Vue设计模式
什么是设计模式
设计模式是对代码分层,引入一种架构概念
MVVM 是什么
模型-视图-视图模型的双向关联的一种设计模式
(Model(data)-ViewModel(Vue)-View(template))
# v-bind
语法:v-bind:属性名="Vue变量"
简写::属性名="vue变量"
<template>
<div>
<a v-bind:href="url">点击</a>
<img :src="imgurl">
</div>
</template>
<script>
export default{
data(){
retutn{
url:[URL],
imgurl:[IMGURL]
}
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# v-on
语法
- v-on:事件名 = "要执行的少量代码"
- v-on:事件名 = "methods([参数])"
<template>
<div>
<a v-bind:href="url">点击</a>
<img :src="imgurl">
<p>你要购买商品的数量:{{count}}</p>
<button v-on:click="count++"></button>
<button v-on:click="addFn"></button>
</button>
</button>
</div>
</template>
<script>
export default{
data(){
retutn{
url:[URL],
imgurl:[IMGURL],
count:1
}
}
methods:{
addFn(){
this.count++
},
addFnNum(num){
this.count=this.count+num
}
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
简写形式
@事件名="methods()/执行代码"
# 阻止事件默认行为
e.preventDefault()
有参数传入和无参数传入
//无参数传入
<template>
<div>
<a @click="one" v-bind:href="url">点击</a>
</div>
</template>
<script>
export default{
methods:{
Fn(e){
e.preventDefault();
}
}
}
</script>
//有参数传入
<template>
<div>
<a @click="two(10,$event)" v-bind:href="url">点击</a>
</div>
</template>
<script>
export default{
methods:{
Fn(num,e){
e.preventDefault();
}
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
有参数时,传入 $event
为事件对象 Tip :固定写法
Vue
修饰符方法阻止默认行为
.stop
-阻止事件冒泡.prevent
-阻止默认行为.once
- 程序运行期间 ,只触发一次事件处理函数
注意
.once
不会阻止冒泡的父级事件行为
# 修饰符
@keyup.enter
@keyup.esc
检测回车键和退出键
# v-model
value
属性和 vue
数据变量,双向绑定到一起
语法:v-model="绑定数据变量"
双向绑定
**注意:**仅限表单标签使用
//...
<input type = "text" v-model = "username">
//...
data(){
return{
username:""
}
}
//...
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
表单绑定
<template>
<div id="app">
<div>
<span>表单</span>
<select v-model="from">
<option value="江西">江西</option>
<option value="湖南">湖南</option>
<option value="四川">四川</option>
</select>
<div>
<input type="checkbox" v-model="sdat" value="抽烟">抽烟
<input type="checkbox" v-model="sdat" value="喝酒">喝酒
<input type="checkbox" v-model="sdat" value="烫头">烫头
</div>
<div>
<input type="radio" value="man" v-model="gt">男
<input type="radio" value="woman" v-model="gt">女
</div>
</div>
</div>
</template>
<script>
export default {
data () {
return {
from:"测试",
sdat:[],
gt:"",
}
}
}
</script>
<style>
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
注意: 非数组接受的是 checked
属性 ,数组接受的是 value
属性
# v-model 修饰符
.number
以parseFloat
转成数字类型.trim
去除首位空白字符.lazy
在change
时触发非input
时,如失去焦点时
<input type="number" v-model.number="age">
<input type="text" v-model.trim="motto">
<textarea v-model.laze="intro"></textarea>
1
2
3
2
3
# v-text\v-html
<template>
<div>
<p v-text="src"></p>
<p v-html="src"></p>
</div>
</template>
<script>
export default{
data(){
return{
src:"<span>span</span>"
}
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# v-show/v-if
语法
v-show = "vue变量"
v-if = "vue变量"
原理
v-show 用的 display:none 隐藏标签
v-if 直接从 DOM 树上删除标签
<h1 v-show = "a1">h1</h1>
<h2 v-if = "a2">h2</h2>
<div>
<p v-if="a>1">true</p>
<p v-else>false</p>
</div>
1
2
3
4
5
6
2
3
4
5
6
# v-for
v-for="(值变量,索引变量) in 目标结构"
v-for="值变量 in 目标结构"
v-for="(值变量,索引变量) in 对象"
v-for = "(值变量、索引变量) in 数值"
(数字循环从1开始)
# 小扩展
eslint
js
的代码检查工具
编辑 (opens new window)
上次更新: 2023/02/07, 14:51:48