Vue基本知识1,安装创建以及常用指令
1. Vue的概念
-
概念
vue是一个渐进式的JavaScript开发框架;基于MVVM实现数据驱动的框架
官网
还可以用来做SPA(single page web application): 一个网页就是一个应用;例如网易云 -
特点
- 体积小
- 速廈快
- 数据双向绑定
- 生态丰富学习成本低
2. 安装vue-cli,环境的搭建
- 全局安装脚手架, Vue命令;只需安装一次
yarn global add @vue/cli
- 创建项目
vue create项目名称
创建项目有几个选项
- 选择安装的Vue版本,选第三个自己选择配置, 用上下箭头选择;babel是转语法工具
Default ([Vue 3] babel, eslint)
Default ([Vue 2] babel, eslint)
Manually select features
- 接下来会有几个选项;空格选择或者取消选择
Babel
TypeScript
Progressive Web App (PWA) Support
Router
Vuex
CSS Pre-processors
Linter / Formatter // 启用后要求用大驼峰命名,两个单词以上等等。
Unit Testing
E2E Testing
- 选择版本
3.x
2.x
- 选择语言
Sass/SCSS (with dart-sass)
Less
Stylus
- 配置文件怎么放;默认都可以
In dedicated config files
In package.json
- 回车即可, 千万不要按y键
Save this as a preset for future projects? (y/N)
- 选择自己的安装命令;这里我喜欢yarn,所以选择yarn
use yarn
use npm
- 安装完成要继续执行给出的代码
cd 项目名称
yarn serve //运行
- 执行后会给出两个网址,一个本地, 一个虚拟服务器
Local: http://localhost:8080/
Network: http://172.20.10.4:8080/
- 选择一个在浏览器运行即可
3. 项目结构说明
.git 隐藏文件 官方仓库,直接删除
node_modules 依赖包
public 静态首页目录
src 项目开发目录,新有用户写的代码都在这里面
src/assets 公共静态资源目录,图片、css、宇体等资源都可以放在这里
src/components 组件目录,所有的子组件都放在这里
src/App.vue vue的根组件
src/main.js 主模块
.gitignore git忽略列表
babel.configjs babel的配置文件
jsconfig.json js配置文件
package.json 包描述文件
package-lock.json版本锁
package-lock.json版本锁
vue.configjs vue的配置文件
如果删除了某个文件报错,去App.vue删除对应路径即可
比如:
assets/logo.png 删除
components/ HelloWorld.Vue 删除
//去 => 项目名.Vue
//删除
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
import HelloWorld from './components/HelloWorld.vue'
components: {
HelloWorld
}
4. 安装VSCode插件,帮助写Vue代码
- Vuter
- Vue VSCode Snippets
- Vue Language Features (Volar)
5. 组件化
1. 什么是组件?
组件(component)
组件就是网页的零部件,一个网页的一个部分就是一个组件,可以由多人开始同一 个网而的各种组件
2. 单文件组件
- 一个XXX.vue的文件就是一个单文件组件,由 template、script、style三部分组成。
- XXX.vue的的html模版就是网页的结构
<template>
//html模版;有且只有一个根标签
</template>
<script>
//js业务逻辑
</script>
<style scoped>
//样式
//scoped:加了这个属性说明样式是局部样式,样式只针对当前组件生效
</style>
- 快捷语法;
- vbl 快速写出结构,
更好
- vbase 快速写出结构
- 创建新的组件
在components文件夹下创建XXX.vue文件;主文件引入使用;注意文件名最好大驼峰
3. 使用自定义组件,谁要使用组件谁就引入注册
- 引入组件 (引入一个已经写好的xxx。mue 组件)名字随便取
import MyButton from “组件路径”
还可以这样引入;@代表src文件。
import MyBtn from ‘@/components/MyBtn.vue’
- 注册组件(在components 里面注册)
export default {
components: {
MyButton,
}
}
- 使用组件(通过标签名使用)
<MyButton></MyButton>
大驼峰可以改写成:
<my-button></my-button>
6. Mustach 表达式和配置选项;(胡须表达式)
1. 数据声明(属性)
// 数据声明
data() {
return {
name: '张三'
}
}
2. 将数据渲染到页面上
<div>
<!-- 将数据渲染到页面上 -->
<h1>你好,{{ name }}</h1>
</div>
3. 方法的声明方式
// 方法
methods: {
print() {
this.names = '123',
this.pwd = '123'
}
}
数据用data方法return出去
, 方法放入methods:对象中
方法属性都写在这里面:
export default {
}
7. 常用指令
1. 什么是指令
vue指令是指标签上的 v-* 模式的厲性,,可以实现很多数据遍历、渲染、事件绑定等等功能
所有的指令可以去官网查看
2. v-text和 v-html
区别在于:一个只能渲染文字,一个还能渲染标签;
<!-- 相当于h2.innerText -->
<h2 v-text="msg"></h2>
<!-- 相当于h2.innerHTML -->
<h2 v-html="msg"></h2>
这里msg是暴露出来的数据
data() {
return {
msg: '你好啊<b>我的</b>朋友'
}
}
3. v-show和v-if
- v-show 表达式来决定标签
显示或者隐藏
;通过css的display来控制 -
- v-if 表达式决定
创建或者删除标签
- v-if 表达式决定
<h2 v-show="msg>=18">你好啊</h2>
<h2 v-if="msg>=18">真的</h2>
- v-if 和 v-for尽量不要一起用
4. v-else 和 v-else-if
- v-else要和v-if一起使用;
两个标签必须挨在一起
<div v-if="num>22">好</div>
<div v-else>不好</div>
- v-else-if要配合v-if一起使用,v-else不一定要用
<h2 v-if="num>30">大</h2>
<h2 v-else-if="num>20">中</h2>
<h2 v-else>小</h2>
5. v-for;遍历数组和对象
用于遍历数组和对象
- 用法1:只遍历值,不遍历索引;
冒号
是v-bind
的简写
<!-- <h2 v-for="变量名 in 数组或对象" :key="v">{{ v }}</h2> -->
<h2 v-for="v in arr" :key="v">{{ v }}</h2>
- 用法2: 遍历值和索引
<h2 v-for="(v,i) in arr" :key="i">{{i}} - {{ v }}</h2>
- 用法3:遍历对象;v是值,k是键名,i是索引
<h2 v-for="(v,k,i) in obj" :key="v">{{v}} - {{k}} - {{i}}</h2>
- 遍历对象时还可以不去遍历索引
<h2 v-for="(v,k) in obj" :key="v">{{v}} - {{k}}</h2>
- 偶遇一个
奇怪的报错
代码已经没有问题
了,但还是报错!
;只需要将一些空格删除并重输入即可
6. v-model;数据双向绑定
用于实现数据双向绑定
,主要用于表单元素:input
、select
、 textarea
button按钮要type:button , 不然会提交
- MVVM架构模式
页面的输入框改变数据后,数据改变页面显示数据的元素就会改变 - 示例
<!-- 数据双向绑定 -->
<p><input type="text" v-model="names"></p>
<p><input type="password" v-model="pwd"></p>
<!-- 数据改变这里就改变 -->
<h2>{{ names }}</h2>
<h2>{{ pwd }}</h2>
7. v-on事件处理
- 写法
- 简写
@事件名=“函数名”
- 一般写法
v-on:click=“函数名”
- 示例:
<button type="button" @click="print">提交</button>
- 下方的事件函数
export default {
// 方法
methods: {
print() {
this.names = '123',
this.pwd = '123'
}
}
}
8. v-bind 给属性绑定动态数据
- 绑定动态数据
示例:点击改变数据;(数据操作)
<h1 :title="title" @click="title = '标题'">今天星期3</h1>
export default {
data() {
return {
title: '我是大标题'
}
},
}
还可以用来改变标签其它的属性
, 比如input的type
- 绑定style样式(样式操作)
这里的css是一个变量,为一个对象,用它来控制样式
<h1 :style="css" @click="changeText">今天星期3</h1>
export default {
data() {
return {
css: {
color: '#f00',
fontSize: '100px'
}
}
},
methods: {
changeText() {
this.css.color = '#00f'
this.css.fontSize = '15px'
}
}
}
- 绑定class (样式操作)
- 首先声明一些样式
// 声明样式
.show1 {
font-size: 100px;
color: green;
}
.show2 {
font-size: 200px;
color: lightcoral;
}
- 声明变量稍后控制样式,方法切换样式
export default {
data() {
return {
className: 'show1' // 默认类名
}
},
methods: {
// 点击改变类名
changeClass() {
this.className =this.className === 'show1' ? 'show2' : 'show1'
}
}
}
className
是上面的变量名;点击切换样式。
<!-- 绑定class数据,绑定点击事件 -->
<h1 :class="className" @click="changeClass">今天星期3吧</h1>
- 类名操作2;另外一种方式来操作类名
多个类名就用逗号隔开即可
<h1 :class="{show1: true, show2: false}"></h1>
9.其它指令
- v-pre 不編译 Mustache 模板表达式,直接当成普通的字符串输出
- v-cloak 隐藏 Mustache 表达式,直到有数据后,才显示出来
- v-once 只渲染一次,数据再变也不会渲染
8. 利用指令存放数据在标签
直接存是不能做到的
,必须用:data-自定义属性
的方式, 才能把属性存到标签
注意绑定的函数不能有括号
<td><button @click="deleTr" v-bind:data-h="i">删除</button></td>
// 2: 点击删除对应索引的数组元素
deleTr(e) {
this.list.splice(e.target.dataset.h, 1)
}
- 方法2 ,
索引可以直接从函数传进来
;注意,事件函数是有括号的
;用于传参。
<td><button @click="deleTr(i)">删除</button></td>
// 2: 点击删除对应索引的数组元素
deleTr(i) {
this.list.splice(i, 1)
console.log(this.list);
}
标签:Vue,vue,样式,基本知识,指令,components,组件,遍历
From: https://www.cnblogs.com/lyc00000000/p/17442309.html