2018-05-19 zn社 笔记三

一、过渡(动画)

引入 vue.js
bower-> (前端)包管理器
npm install bower -g
验证: bower --version
bower install <包名> 安装
bower uninstall <包名> 卸载
bower info <包名> 查看相关的包版本信息
<script src="bower_components/vue/dist/vue.js"></script>

  • 动画
    本质是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);
        }

animate.css 做动画

二、组件

  1. vue组件:一个大对象
  • 全局组件
 var Aaa=Vue.extend({
        template:'<h3 @click="change">{{msg}}</h3>',
        data:function () {
            return{
                msg:'111',
            }
          },
          methods:{
            change(){
                this.msg = 'aaa'

            }
          }
        });
        Vue.component('aaa',Aaa);
        var vm = new Vue({
            el:'#box',
        });

*组件里面放数据:
data必须是函数的形式,函数必须返回一个对象(json)

  • 局部组件
    可以放到某个组件内部
var vm=new Vue({
    el:'#box',
    data:{
        bSign:true
    },
    components:{ //局部组件
        aaa:Aaa
    }
});

另一种编写方式:
全局

    Vue.component('my-aaa',{
        template:'<strong>好</strong>'
    });

局部

    var vm=new Vue({
        el:'#box',
        components:{
            'my-aaa':{
                template:'<h2>标题2</h2>'
            }
        }
    });
  1. 配合模板:
    1. template:'<h2 @click="change">标题2->{{msg}}</h2>'
    2. 单独放到某个地方
<script type="x-template" id="aaa">
            <h2 @click="change">标题2->{{msg}}</h2>
        </script>
<template id="aaa">
            <h1>标题1</h1>
            <ul>
                <li v-for="val in arr">
                    {{val}}
                </li>
            </ul>
        </template>
  1. 动态组件:
    <component :is="组件名称"></component>
  2. vue-devtools -> 调试工具
    https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd

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

5. 组件数据传递: √

  1. 子组件就想获取父组件data
    在调用子组件:
    <bbb :m="数据"> </bbb>
    子组件之内:
        第一种:props:['m','myMsg']
        第二种:props:{
            'm':String,
            'myMsg':Number
        }

在html中属性有-的话,在js中要变成驼峰的形式,例如my-msg->myMsg

  1. 父级获取子级数据
    *子组件把自己的数据,发送到父级
    vm.$emit(事件名,数据);
    v-on: @
  • vm.$dispatch(事件名,数据) 子级向父级发送数据

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

    在vue2.0里面已经,报废了


slot:
位置、槽口
作用: 占个位置(自定义组件中还有内容可以用这个
<ul slot="name">
template中:<slot name="name">
类似ng里面 transclude (指令)


三、SPA应用(单页面应用)

  1. vue-resouce 交互
    vue-router 路由
    根据不同url地址,出现不同效果
    目前版本:0.7.13
主页  home
新闻页 news
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. 关联
    router.map({
        'home':{
            component:Home
        },
        'news':{
            component:News
        }
    });
    //5. 启动路由
    router.start(App,'#box');
  • 跳转:(访问某页打开直接跳转,不需要点击)
    router.redirect({
        ‘/’:'/home'
    });
  1. 路由嵌套(多层路由):
    主页 home
    登录 home/login
    注册 home/reg
    新闻页 news
    subRoutes:{
        'login':{
            component:{
                template:'<strong>我是登录信息</strong>'
            }
        },
        'reg':{
            component:{
                template:'<strong>我是注册信息</strong>'
            }
        }
    }
  1. 路由其他信息:
    /detail/:id/age/:age
    {{$route.params | json}} -> 当前参数
    {{$route.path}} -> 当前路径
    {{$route.query | json}} -> 获取'?a=1'这种数据
  2. vue-loader:(无需刷新)
    其他loader -> css-loader、url-loader、html-loader.....
    后台: nodeJs -> require exports
  • broserify 模块加载,只能加载js
  • webpack 模块加载器,一切东西都是模块, 最后打包到一块了。

require('style.css'); -> css-loader、style-loader
vue-loader基于webpack
.css .js .html .php 这些文件
a.vue / b.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 地址

  1. 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  下载vueloader
    cnpm install vue-html-loader --save-dev 
    vue-html-loader、css-loader、vue-style-loader 将vue解析成html/css
    vue-hot-reload-api@1.3.2 验证代码有没有错误

es6语法:bable相关模块需要去下载

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

最最核心:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 1 Webpack 1.1 概念简介 1.1.1 WebPack是什么 1、一个打包工具 2、一个模块加载工具 3...
    Kevin_Junbaozi阅读 6,656评论 0 16
  • 相关概念 混合开发和前后端分离 混合开发(服务器端渲染) 前后端分离后端提供接口,前端开发界面效果(专注于用户的交...
    他爱在黑暗中漫游阅读 2,784评论 4 45
  • 基本格式 以json的形式、将数据(支持所有格式)挂载在vue的data上、方法挂载在vue的methods上。 ...
    kirito_song阅读 762评论 0 21
  • 不知夏天是否已悄悄离去,一场冷空气,一场雨,风中似乎闻到了秋的气息,又似乎一夜之间进入了初冬。 在南方,除了夏天给...
    禾小沫阅读 258评论 2 3
  • 面对爱情总是小心翼翼的样子,好不容易鼓足勇气想要表白的前一秒,又总能想到“万一她不喜欢我该怎么办”,“万一被拒绝了...
    Zero_Tao阅读 188评论 0 0