程序员书籍笔记 程序员书籍笔记
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • Vue

    • Vue基础
    • Vue前置知识
    • webpack
    • Vue基本使用
      • Vue
      • @Vue/cli 脚手架
      • Vue项目结构
      • Vue 配置文件
      • Vue 文件结构
      • Vue 基本使用
        • 插值表达式
        • Vue设计模式
        • v-bind
        • v-on
        • 阻止事件默认行为
        • 修饰符
        • v-model
        • v-model 修饰符
        • v-text\v-html
        • v-show/v-if
        • v-for
      • 小扩展
    • Vue基本使用+
    • Vue组件
    • Vue生命周期
    • Vue生命周期+
    • Vue插槽
    • Vue组件库
    • 网易云音乐案例
    • 案例
    • Vuex
    • Vue3.0
    • vue动画
    • 项目常用

    • 问题记录

    • vue模板
  • Nuxt

  • Echarts

  • Node

  • git

  • express

  • 微信小程序

  • Spring

  • 后端知识

  • Markdown

  • project

  • 自用文档查询

  • 框架和软件
  • Vue
yuadh
2022-02-23
目录

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

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

# 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
  • 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

插值表达式:双大括号,可以把 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

# 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

简写形式

@事件名="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

有参数时,传入 $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

表单绑定

<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

注意: 非数组接受的是 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

# 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

# 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

# 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
webpack
Vue基本使用+

← webpack Vue基本使用+→

Theme by Vdoing | Copyright © 2021-2023 yuadh
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×