vue脚手架-基础API

一、Vue基本概念

1.1 为什么学习Vue

更少的时间,干更多的活,开发网站速度更快
前端工程师必备技能, 高薪 企业开发都在使用

在这里插入图片描述

1.2 Vue是什么?

  • 渐进式javacript框架, 一套拥有自己规则的语法
  • 官网地址: https://cn.vuejs.org/ (作者: 尤雨溪)

渐进式

  • 逐渐进步, 想用什么就用什么, 不必全都使用

web里_渐进式

在这里插入图片描述

Vue里_渐进式

在这里插入图片描述

1.3 库和框架

  • 库: 封装的属性或方法 (例jQuery)
  • 框架: 拥有自己的规则和元素, 比库强大的多 (例Vue)

在这里插入图片描述

1.4 Vue的学习方式

  • 传统开发模式:基于html文件开发Vue
  • 工程化开发方式:在webpack环境中开发Vue,这是最推荐, 企业常用的方式

在这里插入图片描述

1.5 vue必备插件

vue-devtools

  • 右上角-插件-谷歌访问助手-打开Chrome商店-搜索vue-devtools回车-然后添加至Chrome等待下载后自动安装-右上角显示已经添加即代表成功
    在这里插入图片描述

vscode-插件补充
在这里插入图片描述

二、@vue/cli脚手架

2.1 @vue/cli脚手架介绍

  • @vue/cli是Vue官方提供的一个全局模块包(得到vue命令), 此包用于创建脚手架项目
  • 脚手架是为了保证各施工过程顺利进行而搭设的工作平台

@vue/cli脚手架的好处

  • 开箱即用
  • 0配置webpack
    • babel支持
    • css/less支持
    • 开发服务器支持

2.2 @vue/cli安装

  • 全局安装@vue/cli 模块包
yarn global add @vue/cli
  • 检测版本(是否安装成功)
vue -V

2.3 @vue/cli 创建项目

  • 创建项目(不能由大写字母,中文和特殊符号)
vue create vuecli-demo
  • 选择模板和包管理器, 等待脚手架项目创建完毕
    在这里插入图片描述

2.4 @vue/cli 启动开发服务

  • cd进入项目下, 启动内置的webpack本地热更新开发服务器 – 浏览项目页面
yarn serve
  • 如果未自动弹出浏览器, 手动打开输入提示的域名+端口浏览项目页面
    在这里插入图片描述

2.5 @vue/cli 目录和代码分析

在这里插入图片描述
在这里插入图片描述

main.js页面

import Vue from 'vue'  //引入Vue对象 类似于<script src="vue.js"></script>
import App from './App.vue'  //App.vue文件里对象引入过来(vue项目页面入口)

Vue.config.productionTip = false  //在控制台有一句提示消息

//实例化一个vue对象
new Vue({
  render: h => h(App),  //准备渲染App页面
}).$mount('#app')   //渲染到index.html文件里id叫app的标签上

2.6 项目架构了解

在这里插入图片描述
在这里插入图片描述

2.7 @vue/cli 自定义配置

项目中没有webpack.config.js文件,因为Vue脚手架项目用的vue.config.js

vue.config.js页面 (与src并列)

//vue脚手架项目-默认的配置文件名
//webpack+node环境-导出配置 对象
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer: { //自定义服务配置
    port: 3000,
    open: true,//自动在浏览器页面打开
  },
  lintOnSave: false,//关闭eslint检查
})

2.8 eslint检查代码

eslint是一种代码检查的工具

处理eslint代码检查

  • 方式1: 手动解决掉错误, 以后项目中会讲如何自动解决
  • 方式2: 暂时关闭eslint检查(因为现在主要精力在学习Vue语法上), 在vue.config.js中配置后重启服务
    在这里插入图片描述

2.9 单vue文件讲解

  • Vue推荐采用.vue文件来开发项目
  • template里只能有一个根标签
  • vue文件-独立模块-作用域互不影响
  • style配合scoped属性, 保证样式只针对当前template内标签生效
  • vue文件配合webpack, 把他们打包起来插入到index.html
    在这里插入图片描述

2.10 脚手架项目_清理欢迎界面

在这里插入图片描述

三、vue指令

3.1 Vue基础-插值表达式

  • 声明式渲染/文本插值
  • 语法: {{ 表达式 }}
  • 数据变量在data函数里声明
  • 表达式:变量 或 常量+运算符组成的 每个表达式原地都有结果
    在这里插入图片描述

3.2 vue基础-MVVM设计模式

设计模式: 是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结

  • MVVM(模型, 视图, 视图模型双向关联的一种设计模式)
  • 减少dom操作,提高开发效率
    在这里插入图片描述

3.3 Vue指令 v-bind

给标签属性设置Vue变量的值

  • 语法:v-bind:属性名="vue变量"
  • 简写::属性名="vue变量"
    <a v-bind:href='url'>点击去百度</a>
    <img :src='imgUrl' alt="">

3.4 Vue指令 v-on

给标签绑定事件

  • 语法:v-bind:属性名="vue变量"
  • 简写::属性名="vue变量"
  • 方法在methods选项定义
  • v-on: 可以简写成@
 	<button v-on:click="count = count + 1">+1</button>
    <button v-on:click="addFn">+1</button>
    <button @click="addFns(5)">+5</button>
    <button @click="subFn">-1</button>

3.5 Vue指令 v-on事件对象

Vue事件处理函数中, 拿到事件对象

  • 无传参, 通过形参直接接收
  • 传参, 通过$event指代事件对象传给事件处理函数
    在这里插入图片描述

3.6 Vue指令 v-on修饰符

在事件后面.修饰符名 - 给事件带来更强大的功能

  • 语法 @事件名.修饰符="methods里函数"
  • 修饰符列表
    • .stop - 阻止事件冒泡
    • .prevent - 阻止默认行为
    • .once - 程序运行期间, 只触发一次事件处理函数
    <div @click="father">
      <P @click.stop="son">.stop阻止事件冒泡</P>
      <a @click.prevent.stop href="http://www.baidu.com">去百度</a>
      <p @click.once="twoFn">点击观察事件处理函数执行几次</p>
    </div>

3.7 Vue指令 v-on按键修饰符

给键盘事件, 添加修饰符, 增强能力

  • @keyup.enter - 监测回车按键
  • @keyup.esc - 监测返回按键
  • @keyup.enter.native native(监听组件的原生事件) ==> <el-input / >
  • 更多修饰符: https://cn.vuejs.org/v2/guide/events.html
 <div>
    <!-- 绑定键盘按下事件 enter回车 -->
    <input type="text" @keydown.enter="enterFn">
    <!-- 绑定esc修饰符  检测是否触发了取消键 -->
    <hr>
    <input type="text" @keydown.esc="escFn">
  </div>

3.8 翻转文字案例

在这里插入图片描述

<template>
  <div>
    <h1>{{ msg }}</h1>
    <button @click="toFan">反转世界</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      msg: 'Hello Word'
    }
  },
  methods: {
    toFan() {
      //截取字符串返回数组
      let arr = this.msg.split('')
      console.log('arr', arr);
      arr = arr.reverse(arr)
      console.log('arr', arr);
      //把数组拼接
      this.msg = arr.join('')
    }
  }
}
</script>

3.9 Vue指令 v-model

value属性和Vue数据变量, 双向绑定到一起(暂时只能用在表单标签上)

  • 语法: v-model="Vue数据变量"
  • 双向数据绑定
    • 变量变化 -> 视图自动同步
    • 视图变化 -> 变量自动同步

3.10 表单数据的双向绑定

在这里插入图片描述

<template>
  <div>
    <div>
      <span>来自于哪里</span>
      <!-- 下拉菜单v-model绑定在select上 -->
      <select v-model="from">
        <option value="baijin">北京</option>
        <option value="shanghai">上海</option>
        <option value="shenzhen">深圳</option>
      </select>

      <!-- 复选框 -->
      <div>
        <!-- 重要 遇到复选框 v-model的变量值 非数组(关联的是复选框的checked属性) -->
        <!-- 数组类型 关联的是复选框的value属性 -->
        <span>复选框:</span>
        <input type="checkbox" v-model="hobby" value="抽烟">抽烟
        <input type="checkbox" v-model="hobby" value="喝酒">喝酒
        <input type="checkbox" v-model="hobby" value="写代码">写代码
      </div>
    </div>

    <!-- 单选框 -->
    <div>
      <span>性别</span>
      <input type="radio" value="男" v-model="gender" name="sex"><input type="radio" value="女" v-model="gender" name="sex"></div>
    <!-- 文本域 -->
    <div>
      <span>自我介绍</span>
      <textarea v-model="intro" cols="30" rows="10"></textarea>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      from: '',
      hobby: [],
      gender: '女',
      intro: ''
    }
  }
}
</script>

3.11 Vue指令 v-model修饰符

让v-model拥有更强大的功能

  • 语法: v-model.修饰符="Vue数据变量"
    • .number 以parseFloat转成数字类型
    • .trim 去除首尾空白字符
    • .lazy 在change时触发而非inupt时
<div>
    <div>
      <span>
        年龄
      </span>
      <!-- .number修饰符 把值parseFloat转数值 -->
      <!-- 再赋予给v-model对应的变量 -->
      <input type="number" v-model.number="age">
    </div>

    <div>
      <!-- trim修饰符只去除首位两边的空格 -->
      <span>人生格言</span>
      <input type="text" v-model.trim="motto">
    </div>

    <div>
      <!-- .lazy失去焦点并且内容改变(onchenge事件) -->
      <span>个人简介</span>
      <textarea v-model.lazy="intro"></textarea>
    </div>
  </div>

3.12 Vue指令 v-text和v-html

更新DOM对象的innerText/innerHTML

  • 语法
    • v-text="Vue数据变量 (把值当成普通字符串显示)"
    • v-html="Vue数据变量 (把值当成标签进行解析显示)"
  • 注意: 会覆盖插值表达式
<div>
    <!-- v-text 和 v-html 会覆盖插值表达式  -->
    <p v-text="str"></p>
    <p v-html="str"></p>
  </div>

3.13 Vue指令 v-show和v-if

控制标签的隐藏或出现

  • 语法:
    • v-show="Vue变量"
    • v-if="Vue变量"
  • 原理
    • v-show 用的display:none隐藏 (频繁切换使用)
    • v-if 直接从DOM树上移除
  • 高级 v-else使用
<template>
  <div>
    <!--  v-show用display:none 隐藏 (频繁切换使用)-->
    <h1 v-show="isShow">v-show</h1>
    <!-- v-if用dom树上移除 -->
    <h1 v-if="isOk">v-if</h1>
    <!-- v-if v-else -->
    <p v-if="age >= 18">成年了</p>
    <p v-else>未成年</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isShow: false,
      isOk: false,
      age: 18,
    }
  }
}
</script>

3.14 Vue指令 v-for

  • 语法:
    • v-for="(值变量, 索引变量) in 目标结构"
    • v-for="值变量 in 目标结构"
  • 可以遍历数组 / 对象 / 数字 / 字符串 (可遍历结构)
  • v-for的临时变量名不能用到v-for范围外
  • 谁想循环就把v-for写谁身上
  • in前后由空格
<template>
  <div id="app">
    <!-- 语法1 v-for='(值变量名,索引变量名) in 目标' -->
    <ul>
      <!-- 想要循环谁  就写在谁的身上 -->
      <li v-for="(item, index) in arr" :key="index">
        {{ item }}-----{{ index }}
      </li>
    </ul>

    <!-- 语法二 v-for="值变量名 in 目标" -->
    <ul>
      <li v-for="item in stuArr" :key="item.id">
        <span>{{ item.name }}</span>
        <span>{{ item.sex }}</span>
        <span>{{ item.hobby }}</span>
      </li>
    </ul>

    <!-- v-for遍历对象 -->
    <ul>
      <li v-for="(value, key) in tObj">
        {{ value }}-----{{ key }}
      </li>
    </ul>

    <!-- v-for遍历数字 -->
    <div v-for="i in count">{{ i }}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      arr: ["小明", "小欢欢", "大黄"],
      stuArr: [
        {
          id: 1001,
          name: "孙悟空",
          sex: "男",
          hobby: "吃桃子",
        },
        {
          id: 1002,
          name: "猪八戒",
          sex: "男",
          hobby: "背媳妇",
        },
      ],
      tObj: {
        name: "小黑",
        age: 18,
        class: "1期",
      },
      count: 10,
    };
  },
};
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gik99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值