首页 > 其他分享 >Vue

Vue

时间:2022-10-25 22:01:20浏览次数:36  
标签:Vue name -- app vm var

目录

前端发展

1.前端发展史

  1.1 HTML(5)+css(3)+JavaScript(ES5、ES6)---编写前端页面---后端(PHP/Python/go/Java)---后端通过模板语法将后端数据渲染---返回前端---在浏览器中查看
  1.2 Ajax--后端发送异步请求 前端Render+Ajax混合模式展示
  1.3 只有Ajax加载数据---DOM渲染--前后端分离的雏形
  1.4 前端框架:Angular框架---出现了'前端工程化'概念
  1.5 前端框架:React、Vue框架---当前最火(国人喜欢用Vue 国外喜欢用React)
  1.6 (大)前端:移动开发(Android+ISO)+Web(web+微信小程序+支付宝小程序)+桌面开发(windows桌面)
  1.7 大前端:一套代码在各个平台运行谷歌Flutter(Dart语言:和Java很像)可以运行在IOS、Android、PC端
  1.8 在Vue框架的基础性上 uni-app:一套编码 编到10个平台
  1.9 前端发展的介绍:https://zhuanlan.zhihu.com/p/337276087?

Vue的使用

1.Vue的介绍:

  Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。
Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合

2.Vue是渐进式框架

  可以使用一部分也可以整个项目整体使用

3.网站:

  官网:https://cn.vuejs.org/
  文档:https://cn.vuejs.org/v2/guide/

4.Vue的特点:

  4.1 易用
      通过 HTML、CSS、JavaScript构建应用
  4.2 灵活
	  不断繁荣的生态系统,可以在一个库和一套完整框架之间自如伸缩。
  4.3 高效
      20kB min+gzip 运行大小
	  超快虚拟 DOM
	  最省心的优化

5.M-V-VM思想

  5.1 介绍:Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,是一种事件驱动编程方式
       Model:Vue对象的data属性中的数据 显示在页面中的数据
       view:Vue中数据要显示在HTML页面 在Vue中也称之为视图模板(HTML+CSS)
       ViewModel:vue中编写代码时的vm对象,它是vue.js的核心,负责连接 View 和 Model数据的中转,保证视图和数据的一致性,所以前面代码中,data里面的数据被显示中p标签中就是vm对象自动完成的(双向数据绑定:JS中变量变了,HTML中数据也跟着改变)
  https://tva1.sinaimg.cn/large/008i3skNgy1gprqsts5q2j321s09saan.jpg
  5.2 特征:
       低耦合
       可复用
       独立开发
       可测试
  5.3 逻辑:view双向数据绑定---ViewModel---发送Ajax请求---返回数据Model(逻辑编写--数据库)

6.开发:

  单页开发:
     只需要1个页面,结合组件化开发来替换页面中的内容 页面的切换只是组件的替换,页面还是只有1个index.html
  组件化开发:类似于DTL中的include,每一个组件的内容都可以被替换和复用

7.版本:

  1.X:使用较少
  2.X:普遍使用
  3.X:过渡阶段

8.引入方式:

  CDN引入
  下载导入--与js导入一致
   网址:https://cdn.jsdelivr.net/npm/vue/dist/vue.js

9.语言:

  js是解释性语言:解释器集成到了浏览器中
  nodejs(一门后端语言):把chrome的v8引擎(解释器),安装到操作系统之上
10.Vue
<body>
    <div id="d1">
        姓名:{{name}}
        年龄:{{age}}
    </div>
</body>
<script>
    var vm = new Vue({
        el:'#d1',
        data:{
            name:'lili',
            age: 18,
        }
    })
</script>

插值语法

1.字符串
2.数值
3.数组--字符串(索引取值)
4.对象--字符串
5.网址--字符串
注:当Vue的插值语法与模板语法共同存在时需要修改一方的 不然会导致错误

<body>
    <div id="d1">
        姓名:{{name}}
        年龄:{{age}}
        爱好:{{hobby}}
        第一个爱好:{{hobby[1]}}
        信息:{{info}}
        网址:{{a}}
    </div>
</body>
<script>
    var vm = new Vue({
        el:'#d1',
        data:{
            name:'lili',
            age: 18,
            hobby:['羽毛球', '乒乓球'],
            info: {'name': 'lili', 'age': 18},
            a:'https://cdn.jsdelivr.net/npm/vue/dist/vue.js'
        }
    })

指令系统

文本指令

1.写在[任意]标签上 以  v-xx  开头的,都是vue的指令
2.文本指令
	v-text:把变量渲染到标签中,如果之前有数据,覆盖掉
    v-html:如果是标签字符串,会把标签渲染到标签内
    v-show:控制标签的显示与隐藏,但是它是通过style的display控制的:style="display: none;"
    v-if:控制标签的显示与隐藏,但是它是通过dom的增加和删除
3.代码
<body>
    <div id="d1">
        <span v-text="name"></span>
        <span v-html="a"></span>
        <img v-show="img" src="https://img0.baidu.com/it/u=633778097,1034027030&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666717200&t=27efede310a2bd944ca5eed92e58fe20" alt="">
        <img v-if="img1" src="https://img1.baidu.com/it/u=665208686,3911335732&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666717200&t=a89b1af11b58a2d1efd6babaf3321ce5" alt="">
    </div>
</body>
<script>
    var vm = new Vue({
        el:'#d1',
        data:{
            name:'lili',
            age: 18,
            hobby:['羽毛球', '乒乓球'],
            info: {'name': 'lili', 'age': 18},
            a:'<a href="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">点我</a>',
            img: true,
            img1: true,
        }
    })

事件指令

1.放在标签上:v-on:事件名='函数'
2.事件名可以写:click,dbclick, input标签:change,blur,input
3.补充:es6 对象写法
    var name = 'lili'
    var age = 18
    // var obj={name:name,age:age}
    var obj = {name, age, handleClick() {}}
4.v-on:事件名='函数'  简写成  @事件名='函数'
5.形参:不报错
       多传--以实际传的实参为准
	   少传--以位置参数给与实参
       不传--无实参显示
6.代码:
    <div id="d1">
<!--        <button v-on:click="handledimg">点我</button>-->
        <button @click="handledimg('123', 'lili')">点我</button>
        <div v-show="img">
        <img src="https://img0.baidu.com/it/u=633778097,1034027030&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666717200&t=27efede310a2bd944ca5eed92e58fe20" alt="">-->
     </div>
    </div>
</body>
<script>
    var vm = new Vue({
        el:'#d1',
        data:{
            // name:'lili',
            // age: 18,
            // hobby:['羽毛球', '乒乓球'],
            // info: {'name': 'lili', 'age': 18},
            // a:'<a href="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">点我</a>',
            img: true,
            // img1: true,
        },
        methods:{
            // handledimg:function () {
            //     this.img = !this.img
            // }
            // handledimg(){
            //     this.img = !this.img
            // }
            //
            handledimg(a,b) {
                this.img = !this.img
                alert(a)
                alert(b)
            }
        }
    })
</script>

属性指令

1.写在标签上的 name,class,href,src,id.....属性
2.v-bind:属性名='变量' 简写成: :属性名="变量"
  注:属性指令可以使标签中属性写变量名
3.图片切换代码
<body>
    <div id="d1">
src="https://img0.baidu.com/it/u=633778097,1034027030&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666717200&t=27efede310a2bd944ca5eed92e58fe20" alt="">&ndash;&gt;-->
        </div>
    </div>
</body>
<script>
    var vm = new Vue({
        el:'#d1',

        data:{
            img: true,         urlList:'https://img0.baidu.com/it/u=633778097,1034027030&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666717200&t=27efede310a2bd944ca5eed92e58fe20',
            urllist:[
    'https://img2.baidu.com/it/u=1640158430,3788639612&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400',           'https://img1.baidu.com/it/u=84572721,2203711366&fm=253&fmt=auto&app=138&f=JPEG?w=360&h=360',            'https://img1.baidu.com/it/u=3766746561,140386798&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=493',             'https://img2.baidu.com/it/u=1765478171,368549186&fm=253&fmt=auto&app=138&f=JPEG?w=501&h=500'
            ]
        },
        methods:{   this.url='https://img1.baidu.com/it/u=665208686,3911335732&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666717200&t=a89b1af11b58a2d1efd6babaf3321ce5'
            // }
             handledimg() {
                var i = Math.floor(Math.random() * this.urllist.length)
                 console.log(i)
                this.urlList = this.urllist[i]
            }
        }
    })
</script>
4.图片随机切换(定时装置)
<body>
    <div id="d1">
src="https://img0.baidu.com/it/u=633778097,1034027030&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666717200&t=27efede310a2bd944ca5eed92e58fe20" alt="">&ndash;&gt;-->
        </div>
    </div>
</body>
<script>
    var vm = new Vue({
        el:'#d1',

        data:{
            img: true,         urlList:'https://img0.baidu.com/it/u=633778097,1034027030&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666717200&t=27efede310a2bd944ca5eed92e58fe20',
            urllist:[
    'https://img2.baidu.com/it/u=1640158430,3788639612&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400',           'https://img1.baidu.com/it/u=84572721,2203711366&fm=253&fmt=auto&app=138&f=JPEG?w=360&h=360',            'https://img1.baidu.com/it/u=3766746561,140386798&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=493',             'https://img2.baidu.com/it/u=1765478171,368549186&fm=253&fmt=auto&app=138&f=JPEG?w=501&h=500'
            ]
        },
        methods:{   this.url='https://img1.baidu.com/it/u=665208686,3911335732&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666717200&t=a89b1af11b58a2d1efd6babaf3321ce5'
            // }
             handledimg() {
                handledimg() {
                     setInterval(() => {
                         var i = Math.floor(Math.random() * this.urllist.length)
                         this.urlList = this.urllist[i]
                     }, 1000)
            }
        }
    })
</script>

属性

1.class属性:

  通过vue属性v-bind:class='变量名'简写:class='变量名'
  1.1 class属性字符串用法--已定义过的类
  1.2 class属性数组用法--类本身就是多个 所以数组使用较多
  1.3 class属性对象用法--针对是否显示(v布尔值)

2.style属性

  通过vue属性v-bind:style='变量名'简写:style='变量名'
  1.1 style属性字符串用法--styleObj:'background-color: green;',
  1.2 style属性数组用法--styleObj:[{'background-color': 'green'}, {'font-size': '40px'}]
  1.3 style属性对象用法--styleObj:{backgroundColor: 'green',fontSize: '40px'}

3.代码

<style>
    .color{
        background-color: green;
    }
    .size{
        font-size: 40px;
    }
</style>
<body>
    <div id="app">
        <div :class="classObj">
            class的div
        </div>
        <div :style="styleObj">
            style的div
        </div>
    </div>
</body>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            // classObj:{color:true, size:false},
            // styleObj: 'size'
            //class字符串的用法
            // classObj:'color',
            //class数组用法
            // classObj:['color', 'size']
            //class对象的用法
            classObj:{color:true, size:false},
            //style字符串用法
            // styleObj:'background-color: green;',
            //style数组用法
            // styleObj:[{'background-color': 'green'}, {'font-size': '40px'}]
            //style对象用法
            styleObj:{backgroundColor: 'green',fontSize: '40px'}
        },
    })
</script>

条件渲染

1.放在标签上控制标签的显示与不显示
v-if---条件成立走 结果是布尔值
v-else-if---if条件不成立走 结果是布尔值
v-else---条件都不成立走
2.代码

<body>
    <div id="app">
        <div v-if="score>=90">优秀</div>
        <div v-else-if="score>=80 && score<90">良好</div>
        <div v-else-if="score>=60 && score<80">及格</div>
        <div v-else>不及格</div>
    </div>
</body>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            score:100
        },
    })
</script>

列表渲染

1.放在标签上可以循环显示多个此标签
v-for
2.代码:购物车商品展示

<body>
    <div id="app">
        <div class="container">
            <div class="row">
                <div class="col-md-6 col-md-offset-3">
                    <h1 class="text-center">购物车</h1>
                    <button @click="handleClick" class="btn btn-danger">加载购物车</button>
                    <div v-if="goods.length>0">
                        <table class="table">
                        <thead>
                        <tr>
                            <th>序号</th>
                            <th>商品</th>
                            <th>价格</th>
                        </tr>
                        </thead>
                            <tbody>
                            <tr v-for="good in goods">
                                <td>{{good.id}}</td>
                                <td>{{good.name}}</td>
                                <td>{{good.price}}</td>
                            </tr>
                            </tbody>
                        </table>
                    </div>
                    <div v-else>
                        购物车空空哒
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            goods:[]
        },
        methods: {
            handleClick(){
                this.goods=[{id:1,name:'滑板', price: 999},
                    {id:2, name:'

标签:Vue,name,--,app,vm,var
From: https://www.cnblogs.com/040714zq/p/16823332.html

相关文章

  • vue2- style 和class - 条件渲染 - 列表渲染 - v-for 循环,数组,循环字符串,数字,对象 -
    style和class条件渲染列表渲染v-for循环,数组,循环字符串,数字,对象数组的检测与更新双向数据绑定事件处理过滤案例事件修饰符按键修饰符1.style和class<!DOCT......
  • 【2022.10.25】Vue基础学习(2)
    今日详情1.style和class2.条件渲染3.列表渲染3.1v-for循环数组,循环字符串,数字,对象3.2数组的检测与更新4.双向数据绑定5.事件处理5.1过滤案例5.2事件修饰......
  • chrome插件 vue-devtools zip 编译
    背景,工程代码在内网无法联网百度等,需要离线安装该工具开发vuejs工程 一、从有网络的地方拷贝插件xxxxx.crx,觉得这种比较合理注意,网上说的从chrome://extensions/查看......
  • 【2022-10-25】前端Vue框架(二)
    一、Style和class数据绑定语法:属性名=js变量/js语法:class=’js变量、字符串、js数组’class:三目运算符、数组、对象{red:true}:style=’js变量、字符串、js数......
  • vue特殊属性指令,vue条件渲染,vue列表渲染,vue双向数据绑定,vue事件处理
    特殊的属性指令style和class条件渲染列表渲染v-for循环数组,字符串,数字,对象数组的检测与更新双向数据绑定事件处理过滤案例事件修饰符按键修......
  • Vue学习-02
    一、style和class数据的绑定语法:属性名=js变量/js语法  :class=‘js变量、字符串、js数组’class:三目运算符、数组、对象{red:true}  :style=‘js变量、字符串、......
  • vue 与 脚手架版本
    vue与cli版本怎么选择卸载npmuninstall[<@scope>/]<pkg>[@<version>]...[--save-prod|--save-dev|--save-optional][--no-save]点击查看代码npmuninstallvue......
  • vue3+vite+ts 项目配置 @/路径
    vite.config.ts文件中前置条件下载types/node下面引入的path会用到npminstall@types/node--save-dev原因:path模块是node.js内置的功能,但是node.js本身并不支持ts,......
  • vue中使用[email protected],分页器pagination不显示
     在网上搜索里一通发现这个博主写的有用:原文地址:在vue项目使用swiper@6,解决分页器pagination不显示,导航navigation点击不跳转问题-阿piu~ต-博客园(cnblogs.com)问......
  • vue中引入静态图片
    vue+webpack中,可以使用requireimageList:[{url:require('../image/pig.png')}]vue+vite没有require方法//静态图片一般放在src/a......