美文网首页
Vue.js篇<1>

Vue.js篇<1>

作者: xinmin | 来源:发表于2018-12-23 22:15 被阅读0次
  • node+vue:前后端分离MVC+MVVM的开模式


    图片.png
  • vue的基础用法
    • 导入vue.js
      <style>
      [v-cloak] {
        display: none;
      }
      </style>
      <div id="app">
        <!-- 这里相当于MVVM中的V-->
        <!-- 使用v-cloak能解决差值表达式闪烁的问题-->
        <p v-cloak> {{ msg }} </p>
         <!-- 使用v-text没有闪烁的问题-->
         <!-- 使用v-text会覆盖原本的内容"123"-->
        <p v-text="msg">123</p>
        <!-- 使用v-text会覆盖原本的内容"123",还会解析html-->
        <p v-html="msg1">456</p>
        <!-- 使用v-bind是绑定属性指令, 可简写为:,还可以写合法的js表达式-->      
        <input type="button" value="按钮" v-bind:title="mytitle + '123' ">
        <!-- 使用v-on绑定事件,简写@-->     
        <input type="button" value="按钮" :title="mytitle + '123' " @:click="show">
      </div>
      
      // 这里的vm就是MVVM中的VM
      var vm = new Vue({
        el: '#app', // 表示控制页面的id='app'的区域
        // 这里的data就是MVVM中的M
        data: {
          msg: '欢迎学习vue',
          msg1: '<h1>hello world</h1>',
          mytitle: '自定义title'
        },
        methods: {
          show: function () {
            alert('hello')
        }
      })
      
  • 事件修饰符
    • 使用.stop阻止事件冒泡
    • 使用.prevent阻止默认事件
    • 使用.capture实现捕获触发的机制(从外到内)
    • 使用.self实现只有点击当前元素才会触发事件处理函数
    • 使用.once实现事件函数只触发一次
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>vue_test</title>
      </head>
      <body>
          <style>
              .outer {
                  background: blue;
                  border: 1px solid #ccc;
                  height: 300px;
              }
          </style>
          <div id="app">
              <div class="outer" @click='divHandler'>
                  <input type="button" value="阻止事件冒泡" @click.stop='btnHandler'>
              </div>
          </div>
      </body>
      <script src="./vue2.5.js"></script>
      <script>
          var vm = new Vue({
              el: '#app',
              data: {
      
              },
              methods: {
                  btnHandler(){
                      console.log('btn')
                  },
                  divHandler(){
                      console.log('div')
                  },
              },
          })
      </script>
      </html>
      
  • 双向数据绑定
    • v-bind:只能实现数据从model -> view的数据绑定
    • v-model:可实现双向数据绑定,注意:只能使用在表单元素中
  • 生命周期
    • 创建阶段钩子函数
      • beforeCreate:data,methods等还没有初始化
      • created:发ajax请求,最好时机
      • beforeMount
      • mounted:只要执行完mounted,就表示Vue实例已经初始化完毕了,
        如果要通过某些插件操作页面上的Dom节点,最早要在mounted中进行
    • 组件运行周期钩子函数
      • beforeUpadate:当执行时页面上的数据还是旧数据,尚未与更新
      • upadated:执行时页面与data中的数据已经保持同步了,是最新数据
    • 组件销毁的钩子函数
      • beforeDestroy:Vue实例从运行阶段进入到销毁阶段,Vue实例上的data和methods、以及过滤器f(ilters)、自定义指令。。。都处于可用状态,此时,还没有真正的销毁
      • destroyed:所有的东西都不可用了
  • vue-resource:发起ajax请求,它依赖与Vue
    • get请求


      get请求.png
    • post请求


      post请求.png
    • jsonp请求


      jsonp请求.png
  • Vue动画
    • 1.自定义动画
      使用transition包裹标签
      添加一组类,transition 可以添加name='my',默认是'v-',添加了就是'my-'


      添加的类.png
    • 2.使用第三方库
      animate.css


      图片.png
      另一种写法.png

      使用':duration'设置动画进场与出场时间


      动画时间控制.png
    • JavaScript钩子函数实现动画(半场动画)


      图片.png

      绑定事件


      图片.png
      图片.png
      图片.png

      在实现列表过渡的时候,如果需要过渡元素,是通过 v-for 循环渲染出来的,不能使用transition包裹,需要使用transitionGroup


      图片.png
      图片.png
      图片.png
  • Vue组件
    使用驼峰命名是的用法


    图片.png

    不使用驼峰命名的用法


    图片.png
    直接写成一步
    图片.png
    还可以更简单
    图片.png

    无论是那种方式创建出来的组件,都只能有一个根元素
    最常用的一种方式


    图片.png
  • 阶段总结


    图片.png

    components定义私有组件的

相关文章

网友评论

      本文标题:Vue.js篇<1>

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