vue

一般什么情况下使用Vue?

      一般是需要开发SPA应用程序的时候去用,可以使用它开发大型的SPA单页面应用程序。vue是渐进式的,Vue其实可以融入到不同的项目中

Object.defineProperty(user,'age',{ get(){ return 123}, set(){ } } ) 以get得到的值为主

①vue的安装及使用

npm install vue

页面引入vue.js,   

var vue1 = new Vue({ el:      data: { }  methods:{ } }) ;


②vue条件渲染

当需要按条件控制渲染多个元素的时候,可以把他们都放到template这个特殊的标签中,vue会识别它,在渲染的结果中不会包含template

③自定义指令

什么时候需要封装自定义指令:操作dom的时候封装自定义指令,当你需要进行一些底层dom操作的时候更为方便

3.1. 注册一个全局自定义指令

Vue.directive('focus', {

  // 当被绑定的元素插入到 DOM 中时……

  inserted: function (el) {

    // 聚焦元素

    el.focus()

  }

})

使用这个指令时   ‘v-focus’ 

el 是 根据指定的dom元素的变化而变化 在指令钩子中,函数内部的this是window

3.2 . 局部自定义指令

directives:{

      girlClass: function(){},     // 简写方式:自动应用到 binding 和 update 两个钩子   

                                             //  在渲染的时候要  v-girl-class;

}

directives : {

      girlClass: {

      bind:function(){},

inserted:function(){}

      }

}

④vue中的指令

A. v-cloak

{{msg}}
v-cloak 在编译结束之前不会显示 msg

          使用v-cloak要先加样式  [v-cloak] { display:none; } 当vue解析完dom模板后这个样式会自动去除。

B. v-html    渲染html时如果发现有script标签则不渲染。目的是为了防止XSS攻击

C. vue-if 和 v-show      vue-if 才是真正的条件渲染,false则移除这个dom,  v-show都会渲染,是通过控制样式 display:none;

  v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好

D. v-once  被v-once包裹的元素都不会再更新了   

{{msg}}

 

{{msg}}

E. v-pre   

{{msg}}

  原样输出 {{msg}} Vue不处理带有 v-pre指令的DOM元素

⑤ vue的生命周期

A. befordCreate : 未拿到 el 和 data等

B. created : 未拿到 el , 拿到了 data 但还未把数据渲染到 dom元素里 , created钩子是最早能拿到data中的数据的钩子

C. beforeMount :  拿到el,拿到了 data 但还未把数据渲染到 dom元素里

D. mounted : 拿到el,拿到了 data 数据已经渲染到 dom元素里

I . errorCaptured  :钩子级别的错误捕获, 捕获组件中发生的错误

⑥ watch 默认只监视一层,若要让其深度监视需要加

watch:{

    todos: {

          handler: function ( newVal, oldVal) { localStorage.setItem( 'todos', JSON.stringify(val) ) },

          deep : true,

    }

}

⑦vue-router

A. 当你使用路由的时候,需要告诉路由匹配到的组件往哪里渲染 这里渲染

B. 推荐使用 go to foo 跳转, 默认渲染成 a 链接 go to foo

注意: B.1  也可以通过配置让它渲染成别的属性    go to foo   等于 

  • go to foo
  • B.2  点击这个链接标签时会自动添加一个样式类class  router-link-active

    B.3  关于自动添加类名,它有一个包含匹配规则,如果一个  /foo      则/ 和 /foo 都会同时加上这个类名  加上exact解决这个包含问题

           

    C. 配置路由表  var Foo = { template:'

    '我是Foo
    }

          var router = new VueRouter( { routes:[ { path:'/foo',component:Foo }, ]} ) 

          new Vue( {el:"" , router})

    url传值:  编辑 

    在/crud/update页面通过  const {id}  =  this.$route.query  拿到route和router  , this.$router访问到的是路由实例对象,this.$route访问到的是路由参数对象

    ⑧ vue 热更新 (浏览器不刷新也能更新数据)

    在webpack.config.js里配置 const webpack = require('webpack')

                                                    在 devServer:{  hot:true }

    在 Plugins: [ new webpack.NamedModulesPlugin()

      new webpack.HotModuleReplacementPlugin()

    ]

    你可能感兴趣的:(vue)