首页 > 其他分享 >【VUE】Vue 快速入门 笔记基础01

【VUE】Vue 快速入门 笔记基础01

时间:2023-06-05 23:11:06浏览次数:58  
标签:el VUE 标签 Vue 01 内容 data View

一、vue相关了解

1、概述

Vue.js是一种流行的JavaScript框架,用于构建响应式、交互式的前端Web界面。它采用了基于组件的开发模式,允许在单个页面中使用多个可重用的组件,提高了代码的复用性和维护性。

只关心视图层,自底向上.遵守SOC关注点分离原则(术有专攻,只关注一点)

HTML + CSS + JS : 视图 : 给用户看,刷新后台给的数据

MVVM,是Model-View-ViewModel的简写,是M-V-VM三部分组成。它本质上就是MVC 的改进版。采用双向数据绑定,MVVM 就是将其中的View 的状态和行为抽象化

2、 MVVM

MVVM是什么?

MVVM(Model-View-ViewModel)是一种软件设计模式,由微软WPF(用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Silverlight(类似于Java Applet,简单点说就是在浏览器上运行WPF)的架构师Ken Cooper和Ted Peters开发,是一种简化用户界面的事件驱动编程方式。由John Gossman(同样也是WPF和Sliverlight的架构师)与2005年在他的博客上发表。

MVVM源自于经典的MVC(Model-View-Controller)模式。MVVM的核心是ViewModel层,负责转换Model中的数据对象来让数据变得更容易管理和使用。其作用如下:

该层向上与视图层进行双向数据绑定
向下与Model层通过接口请求进行数据交互

MVVM已经相当成熟了,主要运用但不仅仅在网络应用程序开发中。当下流行的MVVM框架有Vue.js,Anfular JS

Model 层: 对应数据层的域模型,它主要做域模型的同步。通过 Ajax/fetch 等 API 完成客户端和服务端业务 Model 的同 步。在层间关系⾥,它主要⽤于抽象出 ViewModel 中视图的 Model 。

View 层: 作为视图模板存在,在 MVVM ⾥,整个 View 是⼀个动态模板。除了定义结构、布局外,它展示的是 ViewModel 层的数据和状态。 View 层不负责处理状态, View 层做的是 数据绑定的声明、 指令的声明、 事件绑定的声明。

ViewModel 层: 把 View 需要的层数据暴露,并对 View 层的 数据绑定声明、 指令声明、 事件绑定声明 负责,也就是处理 View 层的具体业务逻辑。 ViewModel 底层会做好绑定属性的监听。当 ViewModel 中数据变化, View 层会得到更 新;⽽当 View 中声明了数据的双向绑定(通常是表单元素),框架也会监听 View 层(表单)值的变化。⼀旦值变 化,View 层绑定的 ViewModel 中的数据也会得到⾃动更新。

3、七大属性

el属性
用来指示Vue编译器从什么地方开始解析Vue的语法,可以说是一个占位符。
data属性
用来组织从view中抽象出来的属性,可以说将视图的数据抽象出来存放在data中。
methods属性
放置页面中的业务逻辑,js方法一般都放置在methods中
template属性
用来设置模板,会替换页面元素,包括占位符。
render属性
创建真正的virtual Dom 用js来渲染组件
computed属性
用来计算
watch属性
watch:funtion(new,old){}
监听data中的数据的变化
两个参数,一个返回新值,一个返回旧值

4、el:挂载点

  1. el挂载点的范围:命中元素及其子元素
  2. 可以id选择器"#“,可以类选择器”."
  3. 只能使用于双标签之上,不可以用于body,html标签。

二、vue代码示例  

1、基础示例1

<!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">
        <p>{{ message }}</p>
        <ul>
            <li>{{arr[0]}}</li>
            <li>{{arr[1]}}</li>
            <li>{{arr[2]}}</li>
        </ul>
       
    </div>
    <!-- <script src="lib/vue.js"></script> -->
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script>
        //创建vue实例对象
        var vm=new Vue({
            el:'#app',
            //data 对象就是需要渲染的数据
            data:{
                message:"hello,vue!",
                arr:['内容1','内容2','内容3']
            },
    
        mounted() {
            console.log(this.$el);
        }
        
        })
    </script>
</body>
</html>

 2、v-once指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=`, initial-scale=1.0">
    <title>v-once指令</title>
</head>
<body>
    <div id="app">
        <p>此内容会岁数据变化自动更改{{ content }}</p>
        <p v-once>此内容不会随数据变化自动化更改{{ content }}</p>
       
    </div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script>
        var vm=new Vue({
        el:'#app',
        data:{
            content:'内容文本'
        }
    });
    </script>
    
</body>
</html>

3、 v-text指令

  1. 单引号与双引号都可用
  2. v-text是整体替换,{{}}是局部替换
  3. 标签优先级比局部替换{{}}要高,以标签优先。
  4. 里面可以用表达式
<!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>v-text指令</title>
</head>
<body>
    <div id="app">
        <p v-text="100">这是p标签的原始内容</p>
        <p v-text="content">这是p标签的原始内容</p>
        <p v-text="content2"></p>


    </div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script>  const vm=new Vue({
        el:'#app',
        data:{
            content:'内容文本',
            content2:'<span>apan的内容 </span>',
        }
    })</script>
  
    
</body>
</html>

4、 v-html指令  

v-text标签只会解析成文本

v-html会被解析为标签

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Vue 测试实例 </title>
    <!--引入VUE-->
    <script src="https://cdn.staticfile.org/vue/2.7.0/vue.js"></script>
</head>

<body>
    <!-- 绑定元素 -->
    <div id="name1"> 
        <p v-text="msg2"></p>
        <p v-html="msg2"></p>

    </div>


    <script>
        var app = new Vue({
            el: '#name1', // 这里对应上面绑定的元素
            data: { // 里面存放数据+
                msg1: ' 111 ',
                msg2: '<a href="https://www.baidu.com" >百度</a>'
            }
        })
    </script>
</body>

</html>

5、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>v-bind指令</title>
</head>
<body>
    <div id="app">
        <p v-bind:title="myTitle">p标签的内容</p>
        <p :title="myTitle">p标签的内容</p>
        <p :class="`num`+1 + 2 + 3">p标签的内容</p>
        <p :class="prefix + num "></p>
        <p v-bind="attrObj">这是p标签的内容</p>
       
    </div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script> 
const vm=new Vue({ el:'#app', data:{ myTitle:'内容文本', prefix:'demo', num:10, attrObj:{ id:'box', title:'示例内容', class:'clearFix', 'data-title':'这是data-title内容' } } })</script> </body> </html>

6、v-bind  style 绑定事件  

<!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>v-bind指令</title>
</head>
<body>
    <div id="app">
        <p v-bind:title="myTitle">p标签的内容</p>
        <p :title="myTitle">p标签的内容</p>
        <p :class="`num`+1 + 2 + 3">p标签的内容</p>
        <p :class="prefix + num "></p>
        <p v-bind="attrObj">这是p标签的内容</p>
       
    </div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script> 
const vm=new Vue({ el:'#app', data:{ myTitle:'内容文本', prefix:'demo', num:10, attrObj:{ id:'box', title:'示例内容', class:'clearFix', 'data-title':'这是data-title内容' } } })</script> </body> </html>

7、v-for 根据数据生成列表结构

<!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">
        <ul>
            <li v-for="item in arr">元素内容为:{{ item }}</li>
            <li v-for="(item,index) in arr">元素内容为:{{ item }},索引为:{{ index }}</li>
            <li v-for="(value,key,index) in obj">元素内容为:{{ value }},键为:{{ key }}索引为:{{ index }}</li>
        </ul>


    </div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script>
      var vm=  new Vue({
            el:'#app',
            data:{
                arr:['a内容1','a内容2','a内容3'],
                obj:{
                    content1:'b内容1',
                    content2:'b内容2',
                    content3:'b内容3'
                }
            }
        })
    </script>
</body>
</html>

8、v-if , v-else , v-else-if

v-if

<!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">
        <ul v-if="true">
            <li v-for="item in items">{{ item }}</li>
        </ul>

    </div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script>
     var vm=  new Vue({
            el:'#app',
            data:{
                items:{
                    content1:'b内容1',
                    content2:'b内容2',
                    content3:'b内容3'
                }
            }
        })
    </script>
</body>
</html>

v-else

根据表达式真假切换元素显示状态

本质是操作dom元素

true使得元素存在于元素树,反之从dom树中移除

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <!--view层,模板,开始数据绑定,v-if标签绑定data1-->
    <div id="div1">
        <button @click="fun1">点击按钮切换judge属性</button>
        <!-- judge为ture为yes,不满足则为NO -->
        <h1 v-if="judge">Yes</h1>
        <h1 v-else>No</h1>

    </div>

    <!--1.导入Vue.js-->
    <script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>

    <script type="text/javascript">
        var vm = new Vue({
            el: "#div1",
            /*Model:数据*/
            data: {
                judge: true
            },
            methods: {
                fun1:function(){
                    this.judge=!this.judge;
                }
            },
        });
    </script>
</body>

</html>

v-else-if

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <!--view层,模板-->
    <div id="app">
        <h2 v-if="type==='A'">AAA</h2>
        <h2 v-else-if="type==='B'">BBB</h2>
        <h2 v-else-if="type==='C'">CCC</h2>
        <h2 v-else>DDD</h2>
    </div>

    <!--1.导入Vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js"></script>
    
    <script type="text/javascript">
        var vm = new Vue({
            el: "#app",
            /*Model:数据*/
            data: {
                //这里的type代表通用的意思,不是DOM的ID绑定
                type: 'A'
            }
        });
    </script>
</body>

</html>

9、v-show指令

<!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">
        <p v-show="flase">标签内容1</p>
        <p v-show="22 > 11">标签内容2</p>
        <p v-show="bool">标签内容3</p>


    </div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script>
        var vm =new Vue({
            el:'#app',
            data:{
                bool:true
            }
        })
    </script>
</body>
</html>

  

 

  

 

  

  

  

  

 

标签:el,VUE,标签,Vue,01,内容,data,View
From: https://www.cnblogs.com/xfbk/p/17454722.html

相关文章

  • vue之三种与后端交互的方式
    目录一、vue与后端交互之Ajax情况一:出现了跨域问题前端:index.html后端:main.py情况二:解决了跨域问题前端:index.html二、vue与后端交互之fetch简介fetch介绍后端:main.py前端:index.html三、vue与后端交互之axios1.简介html前端一、vue与后端交互之Ajax情况一:出现了跨域问题前端:in......
  • win10,vs2015深度学习目标检测YOLOV5+deepsort C++多目标跟踪代码实现,源码注释,拿来即
    int8,FP16等选择,而且拿来即用,自己再win10安装上驱动可以立即使用,不用在自己配置,支持答疑。自己辛苦整理的,求大佬打赏一顿饭钱。苦苦苦、平时比较比忙,自己后期会继续发布真实场景项目;欢迎下载。优点:1、架构清晰,yolov5和sort是分开单独写的,可以随意拆解拼接,都是对外接口。2、支持答疑......
  • Vuex的五个属性及使用方法示例
    一、Vuex简介Vuex是Vue.js的状态管理库,它通过中心化的状态管理使得组件间的数据共享更加容易。Vuex包含五个核心属性:state、getters、mutations、actions和modules。Vuex是Vue.js的状态管理库,它提供了一种集中式存储管理应用程序中所有组件的状态,并将其分离到一个可预测的状态容器......
  • vue3+vant4+vuex4入门案例
    案例用的是vant-ui库,你可换成你自己用的ui库即可。安装vuex依赖包npminstallvuex--savemain.js引用vuex,并挂载到vue中importstorefrom'./store';app.use(router).use(store); add.vue页面:1<template>2<h2>加法{{$store.getters.showNum}}</h2......
  • Vue购物车展示功能
    1.基本购物车<body><divid="app"><divclass="container-fluid"><divclass="row"><divclass="col-md-6col-md-offset-3"><h1class="text-cent......
  • Vue基础之表单控制 ,v-model进阶,箭头函数,JS循环
    目录一、表单控制1.checkbox选中2.radio单选3、checkbox多选4.购物车案例-结算二、v-model进阶三、箭头函数es6的语法1无参数,无返回值2有一个参数,没有返回值,可以省略括号3多个参数,不能省略括号4多个参数,不能省略括号,一个返回值5一个参数,一个返回值四、补充:JS循环一、表......
  • vue3+vant4+vuex4实现todolist备忘录案例
    案例图片如下:  1<van-cell-group>2<van-cell>3<van-row>4<van-colspan="20">5<van-field6:value="content"7@change="handl......
  • 0001-虚函数和虚表笔记
    目录一个空对象至少占用1字节的空间展开查看:原因是在栈上分配2个对象时,要区分地址classObject{};voidFunction(){Objecto1,o2;//需要区分o1,o2的地址}空类有虚函数,需要占用一个指针的空间,即:编译器会插入一个虚函数表指针vptr有虚函......
  • 初识vue3——第一天
    api查询地址api请查阅vue3全部API初始化实例每个Vue应用都是通过createApp函数创建一个新的应用实例://index.html<divid="app"></div><scripttype="module"src="/src/main.js"></script>//main.jsimport{createApp}from'vu......
  • Vue——表单控制、购物车案例、v-model进阶、与后端交互三种方式、箭头函数
    表单控制//1checkbox 单选 多选//2radio 单选<body><divid="app"><h1>checkbox单选</h1><p>用户名:<inputtype="text"v-model="username"></p><p>密码:<inputtype="p......