zoukankan      html  css  js  c++  java
  • vue的全家桶

    自定义指令

    <div v-demo="{ color: 'white', text: 'hello!' }"></div>
    Vue.directive('demo', function (el, binding) {
      console.log(binding.value.color) // => "white"
      console.log(binding.value.text)  // => "hello!"
    });

    项目中自定义滚动指令(main.js)

    Vue.directive('scroll',{
      bind:function(el,binding){
        window.addEventListener('scroll',() => {
            let fnc = binding.value; // 该项目中绑定到函数
            fnc(el);
        })
      }
    })
    

    组件中使用

    <div class="..." v-scroll="showTop">
      ...
      <div @click="gotop" class="go-top" :class="goTop?'active':''"></div>
      ...
    </div>
    methods: {
      gotop: function() {
        let speed = 10;
        let timer = setInterval(function(){
          if (document.body.scrollTop > 0){
            document.body.scrollTop = document.body.scrollTop - speed > 0 ? document.body.scrollTop - speed : 0;
            speed += 20;
          } else {
            clearInterval(timer);
          }
        }, 16)
      },
      showTop: function() {
        if(document.body.scrollTop > 200){
          this.goTop = true
        } else {
          this.goTop = false
        }
      },
    }
    

    Modules

    使用单一状态树,导致应用的所有状态集中到一个很大的对象。但是,当应用变得很大时,store 对象会变得臃肿不堪。为了解决以上问题,Vuex 允许我们将 store 分割到模块(module)。每个模块拥有自己的 state、mutation、action、getters。

    cinema-modules

    import * as types from '../types'
    
    const state = {...};
    const actions = {...};
    const getters = {...};
    const mutations = {...};
    
    export default {
      state,
      actions,
      getters,
      mutations
    }
    

    index.js

    import Vue from 'vue'
    import Vuex from 'vuex'
    import cinema from './modules/cinema'
    
    Vue.use(Vuex)
    
    const store = new Vuex.Store({
      modules: {
        cinema
      },
    })
    
    export default store;
    

    跨域问题

    有时候,本地使用webpack开启一个node的dev端口,项目中使用vuejs去访问别人家的api,
    比如豆瓣或者其他的api,不使用jsonp肯定就会报跨域的问题。

    解决方法:使用http-proxy-middleware插件

    在vue-cli生成的build/dev-server.js中添加

    app.use('/api',proxyMiddleware({
      target:'http://www.example.org',
      changeOrigin:true
    }))

    路由

    响应路由参数的变化

    当使用路由参数时,例如从 /user/foo 导航到 user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。 不过,这也意味着组件的生命周期钩子不会再被调用。

    复用组件时,想对路由参数的变化作出响应的话,你可以简单地 watch(监测变化) $route 对象。

    const User = {
      template: '...',
      watch: {
        '$route' (to, from) {
          // 对路由变化作出响应...
        }
      }
    }

    路由常用API

    表达式返回类型意义
    $route.name String 当前路由的名称
    $route.path String 对应当前路由的路径,总是解析为绝对路径
    $route.params Object 一个 key/value 对象,包含了 动态片段 和 全匹配片段
    $route.query Object 一个 key/value 对象,表示 URL 查询参数。/foo?user=1,$route.query.user == 1

    小结

    1. 每个组件只能包含一个根节点
    2. actions弥补了mutations不能异步操作的缺陷

    参考:http://www.jianshu.com/p/25379164a9a6

  • 相关阅读:
    深度学习——02、深度学习入门——经典卷积神经网络架构实例——RNN
    深度学习——02、深度学习入门——经典卷积神经网络架构实例——RNN
    深度学习——02、深度学习入门——经典卷积神经网络架构实例——VGGNet
    深度学习——02、深度学习入门——经典卷积神经网络架构实例——VGGNet
    深度学习——02、深度学习入门——经典卷积神经网络架构实例——VGGNet
    asp.netweb formURL 路由​​​​​​​
    asp.netweb formURL 路由​​​​​​​
    CSS 加粗(css fontweight)
    CSS 加粗(css fontweight)
    MongoDB$unwind操作符展开
  • 原文地址:https://www.cnblogs.com/crazycode2/p/6649261.html
Copyright © 2011-2022 走看看