美文网首页
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