美文网首页
Vue学习笔记3-高级知识

Vue学习笔记3-高级知识

作者: 页川叶川 | 来源:发表于2019-06-11 21:12 被阅读0次
    • 注意: 撰写本文目的主要是为了给自己做一个备忘录,如果你学过vue并且希望从本文中找到一些忘记的知识点,那么你可以阅读本文章。由于文章内讲解并不是很多,因此此文章并不适合小白入门使用。

    8.生命周期

    • 每个Vue实例创建时,都会经历一系列的初始化过程,同时也会调用相应的生命周期钩子,我们可以利用这些钩子,在合适的时机执行我们的业务逻辑。
    • 常用的钩子:
      create: 实例创建完成后调用,此阶段完成了数据的观测等,但尚未挂载,$el还不可用,需要初始化处理一些数据时会比较有用。
      mounted: el挂载到实例上后调用,一般我们的第一个业务逻辑会在这里开始。
      beforeDestory: 实例销毁之前。主要解绑一些使用addEventListener监听的事件

    示例代码:

      <div id="test">
        <button @click="killVM">killvm</button>  <!--click的名称不能含有destory?-->
        <p v-show="isShow">王顺顺</p>
      </div>
    
      <script type="text/javascript">
        new Vue({
          el: '#test',
          data: {
            isShow: true
          },
    
          mounted() {                  //初始化之后立即调用(1次)
            this.intervalId = setInterval(() => { //如果用function的话,this就是指window
              this.isShow = !this.isShow
                console.log("---------");
            }, 1000)
          },
    
          beforeDestroy() {            //死亡时前调用一次
              //清除定时器
              clearInterval(this.intervalId)
          },
    
          methods: {
              killVM() {
                  this.$destroy()       //但是停止之后会有内存泄漏,定时器仍然在执行,需要清除定时器
              }
          }
        })
      </script>
    

    9.过滤器

    • 过滤器主要用于数据的格式化,例如格式化日期。

    前端页面展示:

    日期格式化
    前端代码:
    <div id="test">
    
        <h2>显示格式化的日期时间</h2>
        <p>{{date}}</p>
        <p>完整版:{{date | dateString}}</p>
        <p>日期:{{date | dateString('YYYY-MM-DD')}}</p>
        <p>时间:{{date | dateString('HH:mm:ss')}}</p>
        <!--此语句会将date的值传输给dateString过滤器处理-->
    
    </div>
    

    js代码:

    <script>
        //自定义过滤器
        Vue.filter('dateString', function (value, format) {
          return moment(value).format(format || 'YYYY-MM-DD HH:mm:ss')
        })
        // Vue.filter('dateString', function (value, format='YYYY-MM-DD HH:mm:ss') {
        //   return moment(value).format(format)
        // })
    
        new Vue({
          el: '#test',
          data: {
            date: new Date()
          }
        })
    </script>
    

    10.指令

    10.1.基础使用

    <!--css样式-->
    <style>
        [v-cloak] {
          display: none;
          /*配合实现 v-cloak*/
        }
    </style>
    
    
    <!--前端页面代码-->
    <div id="example">
        <p ref="content">xztywss.top</p>
        <button @click="hint">提示</button>
    
        <!-- <p>{{msg}}</p> -->
        <p v-cloak>{{msg}}</p> //v-cloak 防止闪现 需要配合css实现
    </div>
    
    
    <!--js代码-->
    <script>
        new Vue({
            el: '#example',
            data: {
                msg: "wss"
            },
            methods: {
                hint() {
                    alert(this.$refs.content.textContent) //textContent = innerhtml
                }
            }
        })
    </script>
    

    10.2.注册指令

    • 没有太多需要解释的,这里仅仅给出一段示例代码,想了解更多请百度搜索吧!

    示例代码:

    <body>
    
        <!-- 1) 注册全局指令 
            Vue.directive('my-directive',function(el,binding){ 
            el.innerHTML=binding.value.toupperCase() 
        }) 
        2) 注册局部指令 
        directives:{ 
            'my-directive':{
                 bind(el,binding){
                     el.innerHTML=binding.value.toupperCase() 
                 } 
             } 
        } 
        3) 使用指令 v-my-directive='xxx' -->
    
    
        <div id="test1">
            <p v-upper-text="msg1"></p>
            <p v-lower-text="msg1"></p>
        </div>
    
        <div id="test2">
            <p v-upper-text="msg2"></p>
            <p v-lower-text="msg2"></p>
        </div>
    
        <script>
            //定义全局指令
            //el 指令属性所在的标签对象
            //binding 包含指令相关信息数据的对象
            Vue.directive('upper-text', function (el, binding) {
                console.log(el, binding)
                el.textContent = binding.value.toUpperCase()
            })
    
            new Vue({
                el: '#test1',
                data: {
                    msg1: 'NBA I Love This Game'
                },
    
                //局部指令
                directives: {
                    // 'lower-text': function (el, binding) {
                    //     el.textContent = binding.value.toLowerCase()
                    // }
                    'lower-text'(el, binding) {
                         el.textContent = binding.value.toLowerCase()
                    }
                }
            })
    
            new Vue({
                el: '#test2',
                data: {
                    msg2: 'Just Do It!'
                }
            })
      </script>
    
    </body>
    

    11.插件

    • 合理地使用插件能使我们做项目的过程中达到事半功倍的效果,此处给出一个简单示例

    简单实例:

    <body>
    
        <div id="test">
            <p v-my-directive="msg"></p>
        </div>
    
        <script type="text/javascript">
            //声明使用插件
            Vue.use(MyPlugin) //内部会执行MyPlugin.install(Vue)
    
            Vue.myGlobalMethod()
    
    
            const vm = new Vue({
                el: '#test',
                data: {
                    msg: 'I Love You!'
                }
            })
            vm.$myMethod();
        </script>
    
    </body>
    

    文集推荐:

    Java基础方法集1
    Python基础知识完整版
    Spring Boot学习笔记
    Linux指令进阶
    Java高并发编程
    SpringMVC基础知识进阶
    Mysql基础知识完整版
    健康管理系统学习花絮(学习记录)
    Node.js基础知识(随手笔记)
    MongoDB基础知识
    Dubbo学习笔记
    Vue学习笔记(随手笔记)

    声明:发表此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本我们(QQ:981086665;邮箱:981086665@qq.com)联系联系,我们将及时更正、删除,谢谢。

    相关文章

      网友评论

          本文标题:Vue学习笔记3-高级知识

          本文链接:https://www.haomeiwen.com/subject/uiicfctx.html