IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue2.0 -> 正文阅读

[JavaScript知识库]vue2.0

目录

1、vue简介

1.1vue特性

1.1.1数据驱动视图

1.1.2双向数据绑定

?1.2数据驱动视图和双向数据绑定的核心原理原理-MVVM

?2、vue的基础语法

2.1指令

?2.1.1内容渲染指令(v-text、{{}}、v-html)

?2.1.2属性绑定指令(v-bind)---:

?2.1.3事件绑定指令(v-on)-@

?2.1.4双向绑定指令(v-model)

?2.1.5条件渲染指令(v-if、v-show)

?2.1.6列表渲染(V-for)

2.1.7过滤器

2.2侦听器

2.2.1方法格式侦听器

2.2.2对象格式侦听器

2.2.3深度监听

?2.3计算属性

2.4axios

2.4.1基本语法

2.4.3axios直接发起get和post请求

2.5vue-cli

2.5.1vue-cli的安装

2.5.2vue项目中src目录的构成

2.5.3项目运行过程

?2.6组件

2.6.1vue组件三个组成部分


1、vue简介

1.1vue特性

1.1.1数据驱动视图

1.1.2双向数据绑定

?1.2数据驱动视图和双向数据绑定的核心原理原理-MVVM

?

?2、vue的基础语法

2.1指令

?2.1.1内容渲染指令(v-text、{{}}、v-html)

?

?

?缺点:覆盖原有的值

?

?2.1.2属性绑定指令(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">
    <title>Document</title>
</head>
<body>
    
    <div id="app">
        <input type="text" v-bind:placeholder="tips">
        <img src="" alt="" :src="photo">
    </div>
    <script src="../lib/vue-2.6.12.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',//节点,指定区域
            data:{//数据
                tips:'请输入用户名:',
                photo:"http://www.w3.org/2000/svg",
            }
        })
    </script>
</body>
</html>

v-bind可简写成:

?2.1.3事件绑定指令(v-on)-@

?v-on简写成:@

事件修饰符

?按键修饰符

?2.1.4双向绑定指令(v-model)

主要用于表单、下拉菜单元素

?2.1.5条件渲染指令(v-if、v-show)

v-if原理:每次动态移除元素,实现元素显示和隐藏。

如果刚进入页面时候,某些元素默认不需要被展示,而后期可能也不需要展示,这个更好

v-show原理:动态为元素添加移除元素实现元素显示和隐藏---display:none,如果频繁换元素状态,用这个更好

?

?2.1.6列表渲染(V-for)

?

?

2.1.7过滤器

?

2.2侦听器

2.2.1方法格式侦听器

(1、无法在刚进入页面时候触发 2、对象属性值变化不会触发侦听器)

?

2.2.2对象格式侦听器

(1、通过immediate让侦听器自动触发 2、通过deep让侦听器深度监听属性变化)

?

?eg:

<!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>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="username">
    </div>
    <script src="../../lib/vue-2.6.12.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                username:'admin',
            },
            watch:{
               username: {
                    // 定义对象格式侦听器
                handler(newVal,oldVal) {
                    console.log(newVal,oldVal);
                },
                //控制侦听器是否自动触发一次  默认false
                immediate:true,
               }
            }
        })
    </script>
</body>
</html>

2.2.3深度监听

<!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>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="info.username">
    </div>
    <script src="../../lib/vue-2.6.12.js"></script>
    <script src="../../lib/jquery.js"></script>
    <script>
        const vm=new  Vue({
            el:'#app',
            data:{
                // 用户信息对象
               info:{
                username:"admin",
               }
            },
            //所有侦听器必须放在watch下
            watch:{
            //    info: {
            //        handler(newVal) {
            //            console.log(newVal);
            //        },
            //        deep:true,//开启深度监听
            //    }
            // 如果要侦听对象子属性变化必须包裹一层单引号
            'info.username'(newVal) {
                console.log(newVal);
            }
            }
        })
    </script>
</body>
</html>

?

?2.3计算属性

1、定义时候定义为方法

2、使用的时候当普通属性使用

3、实现了代码的复用

4、只要计算属性中依赖的数据源变化了,则计算属性会自动重新求值

?eg:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="../../lib/vue-2.6.12.js"></script>
  <style>
    .box {
      width: 200px;
      height: 200px;
      border: 1px solid #ccc;
    }
  </style>
</head>

<body>
  <div id="app">
    <div>
      <span>R:</span>
      <input type="text" v-model.number="r">
    </div>
    <div>
      <span>G:</span>
      <input type="text" v-model.number="g">
    </div>
    <div>
      <span>B:</span>
      <input type="text" v-model.number="b">
    </div>
    <hr>

    <!-- 专门用户呈现颜色的 div 盒子 -->
    <!-- style动态绑定一个样式对象,它的值是一个{}样式对象  -->
    <div class="box" :style="{ backgroundColor: rgb }">
      {{ rgb }}
    </div>
    <button @click="show">按钮</button>
  </div>

  <script>
    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {
        // 红色
        r: 0,
        // 绿色
        g: 0,
        // 蓝色
        b: 0
      },
      methods: {
        // 点击按钮,在终端显示最新的颜色
        show() {
          console.log(this.rgb)
        }
      },
    //   所有的计算属性定义到computed节点上
    computed:{
        //rgb作为一个计算属性,被定为方法格式,最终返回一个生成好的rgb(x,x,x)的字符串
        rgb() {
            return `rgb(${this.r},${this.g},${this.b})`
        }
    }
    });
  </script>
</body>

</html>

2.4axios

2.4.1基本语法

?? 2.4.2axios发起post请求-解构赋值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=q, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="btnpost">发起post请求</button>
    <button id="btnposts">发起get请求</button>
    <script src="../../lib/axios.js"></script>
    <script>
        document.querySelector("#btnpost").addEventListener("click",async function(){
            // 如果调用某种方法返回值是promise实例,则前面可以添加await
            // await只能在被async修饰的方法中
            const resuit=await axios({
                nethod:'POST',
                url:'http://www.liulongbin.top:3006/api/post',
                data:{
                    name:'zs',
                    age:20
                }
            })

        console.log(resuit);

        })

        document.querySelector("#btnposts").addEventListener("click",async function(){
            // 解构赋值时候,使用:进行重命名
            // 1、调用axios之后,使用async/await进行简化
            // 2、使用解构赋值,从axios封装的大对象中,把data属性解构出来
            // 3、把解构出来的data属性,使用冒号进行重命名,一般都重命名为{data:res}
            const {data:res}=await axios({
                nethod:'GET',
                url:'http://www.liulongbin.top:3006/api/post',
            })
        console.log(res.data);

        })
    </script>
</body>
</html>

2.4.3axios直接发起get和post请求

<!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>Document</title>
</head>
<body>
    <button id="get">get请求</button>
    <button id="post">post请求</button>
    <script src="../../lib/axios.js"></script>

    <script>
        // get请求
        document.querySelector("#get").addEventListener("click",async function() {
            // axios.get("地址",{
            //     // get参数
            //     params{}
        // })
            const {data:res}=await axios.get('http://www.liulongbin.top.3006/api/getbooks',{
            params:{id:1}
        })
        console.log(res);
        })

           // post请求
           document.querySelector("#post").addEventListener("click",async function() {
            // axios.post("url",{post请求数据})
            const {data:res}=await axios.get('http://www.liulongbin.top.3006/api/getbooks',{name:'zs',age:21});
        console.log(res);
        })
    </script>
</body>
</html>

2.5vue-cli

2.5.1vue-cli的安装

?

安装选择:

?

启动项目:

cd? 项目名称

npm run serve

webpack-dev-server?? 服务器在运行中编写代码自动更新

2.5.2vue项目中src目录的构成

1、assets文件夹:存放静态文件,比如图片、css样式表

2、components文件夹:程序员封装的、可复用的组件,都放在这里

3、main.js:项目入口文件,整个项目的运行,先执行main.js

4、app.vue:是项目的根组件???? main文件中,render函数中,渲染的那个.vue组件,那么这个组件就叫做”根组件

2.5.3项目运行过程

?

main.js文件

?

?2.6组件

组件是对UI结构的复用

2.6.1vue组件三个组成部分

1、template->组件得到模板结构,组件中只能使用一个根节点(div)

2、script->组件的js行为,script中除了data数据必须使用函数方式以外,其他的都和js定义一样(例如、侦听器、过滤器、计算属性、定义函数等)

3、style->组件样式?? 组件中使用css样式,给style加一个lang=‘less"属性,不然是基本css样式无法生效

排版顺序为:template、script、style

?

2.6.1使用组件的三个步骤

1、组件之间的父子关系

?2、使用组件的三个步骤

一二个步骤都是在js中操作

私有组件

?2.6.2注册全局组件

2.6.3组件的props

在使用组件的props中属性时候,在前面加一个属性绑定可以字符串转换为数字

<div class="red">right   <MyConst :init='7'></MyConst></div>

?注:props中的属性是只读的,如果修改了会执行,但是会报错,如果需要修改值,就将props里面的值转存到data里面

?添加默认值:

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:16:35  更:2022-05-16 11:18:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:22:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码