vue过渡(动画)

  本质走的css3: transtion ,animation

  <div id="div1" v-show="bSign" transition="fade"></div>

    动画:
.fade-transition{ }
进入:
.fade-enter{
opacity: 0;
}
离开:
.fade-leave{
opacity: 0;
transform: translateX(200px);
} 也可以使用animation.css动画库,并且vue实例还有一个transition配置项 <div class="animated" transition="bounce" v-show="bSign"></div> new Vue({
el:'',
data:{},
methods:{},
transitions:{
bounce:{
enterClass:'zoonInLeft',
leaveClass:'zoomOutRight'
}
} })

vue组件

  组件:一个大对象,定义一个组件

var Aaa=Vue.extend({
template:'<h3>我是标题3</h3>'
});

  注册组件:  

  1、全局组件,通过Vue的方法component注册到全局类Vue上

Vue.component('aaa',Aaa); //挂在全局Vue对象上的
//全局组件可以在以后的通过new出来的vue实例中使用 *组件里面放数据:
组件里面的data必须是函数的形式,函数必须返回一个对象(json数据)

    2、局部组件

    放到某个组件内部,通过components配置项,注册到(组件)实例中

var vm=new Vue({
el:'#box',
data:{
bSign:true
},
components:{ //局部组件 挂在vue实例内的
aaa:Aaa
}
});

  另一种定义注册方式.(推荐);上面是定义和注册分步进行,这种方式是定义和注册合为一步了

      全局:
Vue.component('my-aaa',{
template:'<strong>好</strong>'
}); 局部:
var vm=new Vue({
el:'#box',
components:{
'my-aaa':{
template:'<h2>标题2</h2>'
}
}
});

组件配合模板使用

  将组件中的模板字符串,抽出模板(多个标签)到html中

   1. template:'<h2 @click="change">标题2->{{msg}}</h2>'

    2. 单独放到某个地方
a). <script type="x-template" id="aaa">
<h2 @click="change">标题2->{{msg}}</h2>
</script> b). 推荐
       <template id="aaa">
<h1>标题1</h1>
<ul>
<li v-for="val in arr">
{{val}}
</li>
</ul>
</template>

  动态组件:(可以做选择卡)

<component :is="组件名称"></component>

 组件间通信

   vue默认情况下,子组件也没法访问父组件数据 

1. 子组件就想获取父组件data
a、在调用子组件:绑定属性
<bbb :m="数据"></bbb> b、子组件之内:通过props获取以上绑定的属性
props:['m','myMsg'] 也可以指定类型的props
props:{
'm':String,
'myMsg':Number
}
   c、之后就可以在子组件的methods里面或者html插值里面使用了
2. 父级获取子级数据
*子组件实例主动把自己的数据,发送到父级,父级通过v-on:自定义事件监听,捕获到发送的事件触发,并接收到数据 vm.$emit(事件名,数据); v-on: @事件名=“自己的方法”

    另外还有一种传值方法(2.0中已经废除):

      vm.$dispatch(事件名,数据) 子级向父级发送数据
      vm.$broadcast(事件名,数据) 父级向子级广播数据
      配合: event:{}

vue中的slot

  位置、插槽;作用就是占个位置

  就是在使用组件时,为组件里面的内容能留有渲染的位置
  多个slot可以是用name进行区分

  类似ng里面 transclude (指令)

vue路由

  vue--->单页面(SPA)应用,是根据不同的路由(url地址),展示不同的效果(组件)

  用到插件vue-router

html:
<a v-link="{path:'/home'}">主页</a> 跳转链接 展示内容:
<router-view></router-view>
js:
//1. 准备一个根组件
var App=Vue.extend(); //2. Home News组件都准备
var Home=Vue.extend({
template:'<h3>我是主页</h3>'
}); var News=Vue.extend({
template:'<h3>我是新闻</h3>'
}); //3. 准备路由
var router=new VueRouter(); //4. 关联(将组件名与定义的组件关联,之后就可以在html中通过v-link使用了)
router.map({
'home':{
component:Home
},
'news':{
component:News
}
}); //5. 启动路由
router.start(App,'#box');    跳转(路由重定向):
router.redirect({
‘/’:'/home'
});

  路由多层嵌套:在map关联的路由名称后的配置项subRoutes里进行配置次级路由

    主页    home
登录 home/login
注册 home/reg
新闻页 news subRoutes:{
'login':{
component:{
template:'<strong>我是登录信息</strong>'
}
},
'reg':{
component:{
template:'<strong>我是注册信息</strong>'
}
}
}  

    路由其他信息:可以通过路由后面的参数传递,并在当前路由组件的模板中使用
    /detail/:id/age/:age

    {{$route.params | json}} -> 当前参数

    {{$route.path}} -> 当前路径

    {{$route.query | json}} -> 查询字符串数据

vue-loader(.vue文件加载器)

    通过路由实现页面切换,项目实现单文件组件,即使用.vue文件,.vue文件的编译需要vue-loader处理

    其他loader->  css-loader、url-loader、html-loader、file-loader.....

    后台: nodeJs ->  require  exports

    browserify  模块加载,只能加载js

    webpack   模块加载器, 一切东西都是模块, 最后打包到一块了 (包括图片、css)

    require('style.css'); ->   css-loader、style-loader

    vue-loader基于webpack

.vue文件

  vue单文件组件,放置的是vue组件代码,结构包括三部分

     <template>
html
</template> <style>
css
</style> <script>
//js (平时代码、ES6) babel-loader(编译es6)
       export default{
        //里面像组件使用一样的
        data(){
          return {
            msg:'welcome Vue'
          }
        }
       }
</script>

最新文章

  1. linux中inode、软链接、硬链接
  2. LruCache为GridView异步加载大量网络图片
  3. stm8s103头文件
  4. jQuery实现折叠下拉效果
  5. Linux下Hadoop2.6.0集群环境的搭建
  6. Memcached的安装和使用以及nginx整合memcached
  7. hud 2502 月之数
  8. 最长公共子序列(LCS)
  9. JDBC专题
  10. Q4: Two Sum
  11. iOS开发——百度地图SDK集成
  12. python 自动化之路 day 08_2 网络编程
  13. [BZOJ 1502] [NOI2005] 月下柠檬树 【Simpson积分】
  14. haproxy 服务端超时时间 timeout server 17000 --后台程序17秒没有响应,返回超时
  15. PrefixSpan算法原理总结
  16. esb和eai的区别
  17. EQueue
  18. MySQL5.7关于密码二三事
  19. 11.14 luffycity项目(6)
  20. Win10手记-取色器ColorPicker的实现

热门文章

  1. IDEA设置项目文件自动Add到Svn/Git
  2. Winserver-FailoverCluster验证异常
  3. (多核DSP快速入门)SYS/BIOS入门
  4. consul-服务发现、服务隔离、服务配置
  5. 使用Cloudera Manager搭建HBase环境
  6. 基于yum的方式安装Cloudera Manager Agent(使用Mysql 8.0版本)
  7. Django解析器
  8. python网络-静态Web服务器案例(29)
  9. Django之路——5 Django的模板层
  10. vue创建组件的方式