二六.vue2与vue1的区别(二)

16.vue过渡(动画)

  • bower (前端包管理器)

    • 安装:npm install bower -g
    • 验证:bower --version
    • bower install 包名
    • bower uninstall 包名
    • bower info 包名 (查看包版本信息)

    transform 转换 变化 translate 转化 transition 过渡

  • 本质上是CSS3过渡 :transtion animation

     - fade-enter{opacity=0} 进入
     - fade-leave{opacity=0;transform:translateX(200px)}
    
     - type="button" value='按钮' @click='toggle'
       id='d1' class="animated" v-show='bSign' transition="bounce"
       methods:{
                   toggle:function () {
                       this.bSign=!this.bSign;
                   }
       //            es6:
       //            toggle(){
       //                this.bSign=!this.bSign;
       //            }
               },
               transitions:{ //定义所有动画名称
                   bounce:{
                       enterClass:'flip',  //自定义
                       leaveClass:'rotateOut'
                   }
               }
    

17.vue组件 (一个大的对象)

  • 定义一个组件:

    • 1全局组件 var qaz=Vue.extend({ template:'

      我是h1标题

      ' }); Vue.component('qaz',qaz);

    • 组件里面放数据 ** var qaz=Vue.extend({
         data(){   //data使用es6函数的形式
            return {  //return一个对象(json)
                msg:'我是h1标题aaaaaaaa'
            }
         },
        template:'<h1>{{msg}}</h1>'
      
      });
    • 2 局部组件 (放到根组件内部) +var vm=new Vue({

            el:'#box',
            data:{
      
            },
            components:{  //局部组件
                qaz:qaz
            }
        })
      
  • 简写

    • 全局
      Vue.component('my-aaa',{

          template:'<h1>简写</h1>'
      })
      var vm=new Vue({
          el:'#box',
          data:{
      
          }
      })
      
    • 局部 var vm=new Vue({

          el:'#box',
          data:{
      
          },
          components:{
              'my-aaa':{
                  template:'<h1>简写</h1>'
              }
          }
      })
      
  • eg: var vm=new Vue({

           el:'#box',
           data:{
    
           },
           components:{
               'my-aaa':{
                   data(){
                       return{
                           msg:'aaaaaa'
                       }
                   },
                   methods:{
                       change(){
                           this.msg='bbbbbbbbbb';
                       }
                   },
    
                   template:'<h1 @click="change()">简写++{{msg}}</h1>'
               }
           }
       })      
    

18.组件配合模板:

  • 1.template:'

    简写++{{msg}}

    '
  • 2.类似模板引擎
    • template:'#tmp'
  • 动态组件

  • vue-devtools 调试工具

  • vue默认情况是 子组件不能继承父组件的数据

  • 组件数据传递

    • 一、子组件要获取父组件data 在调用子组件:
      • 在子组件内 1 props:['m','myMsg'] 2 props:{
          'm':String,
          'myMsg':Number
        
        }
    • 二、父组件获取子组件的数据
      • 子组件把自己的数据发送到父组件
      • $emit(事件名,数据); //发送
      • v-on --@事件名

19、slot: (位置 槽口)

  • 作用:占个位置

    • eg: ```

          <my-aaa>
              <ul>
                  <li>aaa</li>
                  <li>bbb</li>
                  <li>ccc</li>
              </ul>
          </my-aaa>
      </div>
      <template id='tmp'>
          <h1>哈哈哈</h1>
          <slot>默认情况</slot>
          <p>啦啦啦</p>
      </template>
      <script>           
          var vm=new Vue({
              el:'#box',
              data:{
                a:'aaa'
              },
              components:{
                  'my-aaa':{      
                      template:'#tmp'
                  }
              }
          })
      </script>
      
      ==     <ol slot='ol-slot'>
             <ul slot='ul-slot'>
             <slot name='ol-slot'>默认情况</slot>
             <slot name='ul-slot'>默认情况2</slot>
      

20.SPA应用,单页面应用

  • vue-resouce 交互
  • vue-router 路由

    • 根据url地址不同,出现不同的效果
    20.1 view
  • 主页 跳转链接
  • 展示内容
  • eg:初体验

    • ```
         <ul>
             <li><a v-link="{path:'/home'}">主页</a></li>
             <li><a v-link="{path:'/news'}">笨蛋</a></li>
         </ul>
         <div>
             <router-view></router-view>
         </div>
      
    • 1准备一个根组件

         var app = Vue.extend();
      

      /2home News组件都准备/

         var Home=Vue.extend({
             template:'<h1>我是主页</h1>'
         })
         var News=Vue.extend({
             template:'<h3>笨蛋笨蛋</h3>'
         })
      
         /*3 准备路由*/
         var router=new VueRouter();
      
         /*4 关联*/
         router.map({
             'home':{
                 component:Home
             },
             'news':{
                 component:News
             }
         });
            /*5 启动路由*/
            router.start(app,'#box')
            /*6 跳转*/
            router.redirect({
                '/':'/home'
            })
      

20.2 路由嵌套(多层路由)

  • 主页 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}} -> 数据

21.vue-loader 基于webpack

  • node --require exports
  • webpack 模块加载器 一切东西都是模块最后打包到一块
    • require('style.css')
  • .vue文件:放置的是vue组件代码
    • 1 template>html
    • 2 style>-->css
    • 3 script>-->js
      • babel-loader 将es6编译成es5 让浏览器识别

22.vue配置

    .vue文件:
         放置的是vue组件代码

         <template>
             html
         </template>         
         <style>
             css
         </style>

         <script>
             js    (平时代码、ES6)    babel-loader
         </script>
 -------------------------------------
 简单的目录结构:
     |-index.html
     |-main.js    入口文件
     |-App.vue    vue文件,官方推荐命名法
     |-package.json    工程文件(项目依赖、名称、配置)
         npm init --yes 生成
     |-webpack.config.js    webpack配置文件

 ES6: 模块化开发
     导出模块:
         export default {}
     引入模块:
         import 模块名 from 地址
 --------------------------------------------
 webpak准备工作:
     cnpm install webpack --save-dev
     cnpm install webpack-dev-server --save-dev

     App.vue    -> 变成正常代码        vue-loader@8.5.4
     cnpm install vue-loader@8.5.4 --save-dev

     cnpm install vue-html-loader --save-dev

     vue-html-loader、css-loader、vue-style-loader、
     vue-hot-reload-api@1.3.2

     babel-loader
     babel-core
     babel-plugin-transform-runtime
     babel-preset-es2015
     babel-runtime

 最最核心:cnpm install vue  

23.项目运行

  • 手动配置自己:

    webpack+vue-loader     
    webpack加载模块
    

    如何运行此项目?

    1. npm install    或者    cnpm install
    2. npm run dev
        ->  package.json
            "scripts":{
                "dev":"webpack-dev-server --inline --hot --port 8082"
            }     
    

    以后下载模块:

    npm install <package-name>  --save-dev
    

    EADDRINUSE 端口被占用

    少了:

    webpack-dev-server
    webpack          
    
  • 运行 npm run dev

24.手动配置vue开发环境

+ .v ue 结尾,之后称呼组件

路由:
    vue-router

        ->  如何查看版本:
            bower info vue-router

    路由使用版本: 0.7.13
配合vue-loader使用:
1. 下载vue-router模块
    cnpm install vue-router@0.7.13
2. import VueRouter from 'vue-router'

3. Vue.use(VueRouter);

4. 配置路由
    var router=new VueRouter();
    router.map({
        路由规则
    })
5. 开启
    router.start(App,'#app');

注意:
    之前: index.html    ->   <app></app>
    现在: index.html    ->   <div id="app"></div>

    App.vue    ->   需要一个 <div id="app"></div>  根元素

home    news
---------------------------------------------
路由嵌套:
    和之前一模一样
--------------------------------------------
上线:
    npm run build
        ->    webpack -p

25 脚手架 vue-cli

  • 提供基本项目结构
  • 本身集成很多项目模板

    • simple //不推荐使用
    • webpack //可以使用(大型项目)Eslint检查代码规范
    • webpack-simple
    • browserify 了解
    • browserify-simply
  • 基本使用流程 1 npm install vue-cli -g 安装vue环境 验证 vue --version

    1. 生成项目模板 vue init <模板名> 本地文件夹名称
    2. 进入到生成目录里面 cd xxx npm install
    3. npm run dev

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值