vue续3

  1. 计算属性:
    什么是: 不实际属性值,绑定时,动态通过其他现有属性,计算出自己的属性值。
    何时: 页面上需要一个值,但是,这个值数据库中没有直接保存,而是需要动态计算出来。
    如何: new Vue({
            el:"#app",
            data:{  },
            methods:{  },
            created(){  },
            watch:{  },
            computed:{
                属性名(){
                    //通过其他变量计算获得最后结果
                    return 结果
                }
            }
        }) 
使用计算属性:计算属性虽然定义成函数,但是,用法和普通模型变量 
完全一样!不要加()
特点: 
    1. 只要依赖的其它变量变化,计算属性都会自动重新计算
    2. 一个属性如果多个位置使用,其实只计算一次。
        原理: 计算属性的值,每计算一次,结果都会被Vue框架缓存起来,反复使用。除非依赖的变量发生改变时,才重新计算,然后再重新缓存,反复使用。
vs 函数: 也可以实现计算的效果
    问题: 不会被缓存!每用一次就重复计算一次!
总结: 如果只关心计算结果时,首选计算属性
    如果不关心结果,甚至没有返回值,只关心执行的过程时,首选函数。
  1. 绑定样式:
    2种:
    1. 动态绑定单个css属性:(两种)

      1. 用字符串方式,绑定整个style属性:
            <ANY :style="变量"
            data:{
                变量:"top:50px; left:50px"
            }
缺点: 在字符串中不便于修改某一个css属性
  1. 都用对象方式,绑定style:
            <ANY :style="变量"
            data:{
                变量:{
                    top:"50px", //必须px
                    left:"50px" //必须px
                }
                //绑定时,被自动翻译为字符串:
                //"top:50px; left:50px"
            }
    强调: 固定的style和动态绑定的style可同时存在
        比如: 
        <div style="position:fixed" :style="divStyle">
        data:{
            divStyle:{
                top:"50px", //必须px
                left:"50px" //必须px
            }
        }
        运行时,结果: 动态绑定的style会和写死的style合并为一个style:
        <div style="position:fixed; top:50px; left:50px"
  1. 动态绑定class:(两种)
    1. 将整个class属性当做一个字符串绑定
    问题: 不便于控制一个class的启用或禁用
    2. 今后也要使用对象格式绑定:
            <b class="固定不变的class" :class="变量名"
            data:{
                变量名:{
                    class1: true/false,
                    class2:true/false,
                        ... ...
                }
            }
   运行时: 
            1. 将变量中值为true的class转为字符串: 
                比如: { down:true, fade:true }
                    -> "down fade"
                    {down:false, fade:true}
                    -> "fade"
            2. 用翻译好的class字符串和元素上规定的class="",合并为一个class
        如果想用程序切换使用/不使用某个样式类,只要修改类名对应的true/false就行
            值为true,就是应用该样式类
            值为false,就是不应用该样式类
  1. 自定义指令:
    何时: 当希望元素自动执行一件事,但是vue中的指令不够用,就可以自定义指令。
    如何:
    1.定义一个新的自定义指令:
        Vue.directive("指令名",{//指令名不应该带v-前缀
            //会在当前元素加载后,自动执行
            inserted(elem){
                //elem: 接住的是当前指令所在的DOM元素
                //可对elem执行任何原生DOM的函数
            }
        })
    强调: 应该定义在不属于任何new Vue()的外部全局
        将来所有new Vue()都可以共用这个自定义指令。
  1. 使用指令:
    <ANY v-指令名
    但是,使用指令时,必须加v-前缀
    原理: 当<ANY>这个元素在HTML中加载完之后,自动去调用指
    令中携带的inserted()函数

  2. 过滤器:
    什么是: 将不能直接使用的变量值,过滤成可以给人看的新值的函数
    何时: 只要变量的原始值不是想要的,都可用过滤器过滤成想要的值给人看。
    如何:

    1. 定义过滤器:
        Vue.filter("过滤器名称",function(oldVal){
            return 新值
        })
  1. 使用过滤器:
    在绑定语法中都可用"|"将过滤器连接在变量之后
    运行时: 原始变量值->过滤器->oldVal参数->return过滤后的新值->给人看
    过滤器参数:
    何时: 当根据不同值,选择过滤成不同的新结果时
    如何: 2步:
        1. 定义过滤器时添加形参:
                  function(oldVal,lang="cn"){
        2. 使用过滤器时传入实参:
            {{sex2|sexFilter("en")}}

强调: 定义时添加过滤器形参,从第二个形参开始添加。但是使用过滤器
时,自定义实参值,却从第一个实参传入。但是还不会出错!因为过滤器
函数在调用时,自动回将原始值作为第一个实参传入。我们添加的自定义
实参,只能排在第二。
其实程序中的过滤器也可以用|串联多个:
{{变量|过滤器1|过滤器2|... }}
坑:定义后一个过滤器时,拿到的值不是原始值,而是上一个过滤过滤后的中间产物。

  1. axios
    什么是: 专门发送ajax请求的基于Promise的函数库
    为什么:
    1. 然哥四步/五步:
    2. 可以自己封装
    3. jQuery库中的.ajax() 将来在Vue项目中,几乎不会用jQuery 如果仅仅为了发ajax请求而引入jQuery函数库,特别小题大做。 4. Vue官方有一个vue.resource组件 但已停止维护 5. axios: Vue官方推荐的最好的ajax函数库。 何时: 今后只要在任何位置想发ajax请求,都可用axios 如何: 1. 引入axios.js 2. 调用axios.get()函数发送请求 axios.get("url",{ params:{//相当于.ajax中的data:{ ... }
    参数1:值1,
    ... : ...
    }
    //运行时params中的参数会被翻译为字符串,拼接到url的结尾:
    "url?参数1=值1&参数2=值2&..."
    }).then( result=> {
    为this保持和外部VUe一致,必须用箭头函数
    result返回的不只是服务端响应结果
    真正的响应结果包含在result.data中
    })

  2. new Vue的生命周期:
    什么是: 一个new Vue()的加载过程:
    何时: 如果希望在加载过程某个阶段,自动执行一项任务时。
    如何: new Vue()的声明周期包括4个阶段,8个函数
    钩子函数——其实就是在不同阶段自动执行的回调函数
    前: beforeCreate(){ ... }

    1. 创建(create)阶段: 创建new Vue()对象和data()对象
      已经有data对象了,但是没有虚拟DOM树
      可以发送ajax请求
      因为没有虚拟DOM树,所以暂时不能用DOM操作
      后: created(){ ... }
      前: beforeMount() { ... }
    2. 挂载(mount)阶段: 创建虚拟DOM树,将data中的变量值开始向DOM树上绑定
      即有data对象,又有虚拟DOM树
      即可发送ajax请求,又可执行DOM操作
      后: mounted(){ ... }
      //后两个阶段不是必须:
      前: beforeUpdate(){ ... }
    3. 更新(update)阶段: 当data中的变量值被改变时才触发
      后: updated(){ ...}
      前: beforeDestroy(){ ... }
    4. 销毁(destroy)阶段: 当调用专门的$destroy函数销毁一个组件时,才触发
      后: destroyed(){ ... }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容

  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,217评论 0 6
  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 2,915评论 1 4
  • 第一章 Vue概述 what? Vue是实现UI层的渐进式js框架,核心库关注视图层,简单的ui构建,复杂的路由控...
    fastwe阅读 718评论 0 0
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 3,329评论 0 3
  • vue.js简介 Vue.js读音 /vjuː/, 类似于 viewVue.js是前端三大新框架:Angular....
    LiWei_9e4b阅读 505评论 0 0