表严肃讲Vue

vue的安装及语法

  • v-model
  • v-show
    main.js
var app = new Vue({
   el: '#app',
    data:{
       name: '奔奔',
        age:22,
        gender:null,
    }
});

index.html

<body>
<div id="app">
    <div>
        <input type="text" v-model="name">
        <span v-show="name">姓名:{{name}}</span>
    </div>
    <div>
        <input type="text" v-model="age">
        <span v-show="age">年龄:{{age}}</span>
    </div>
    <div>
        <input type="text" v-model="gender">
        <span v-show="gender">性别:{{gender}}</span>
    </div>
</div>
<script src="../lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

v-for指令


main.js

var app = new Vue({
   el: '#app',
    data:{
       // foodList:['葱', '姜', '蒜']
        foodList:[
            {
                name: '葱',
                price: 10,
                discount: .9,
            },{
                name: '姜',
                price: 5,
                discount: .6,
            },{
                name: '蒜',
                price: 20,
            },

        ]
    }
});

index.html

<body>
<div id="app">
    <li v-for="food in foodList ">{{food.name}}:${{food.discount? food.price * food.discount : food.price}}</li>
</div>
<script src="../lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

chrome.console

app.foodList.push({name: '辣椒', price:30, discount: .5})

v-bind

main.js

var app = new Vue({
   el: '#app',
    data:{
        url: 'http://www.baidu.com',
        isActive: true,
    }
});

index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>18.1</title>
    <style>
        .active{
            background: #aa1100;
        }
    </style>
</head>
<body>
<div id="app">
    <a :class="{active: isActive}" :href="url">
        点我
    </a>
</div>
<script src="../lib/vue.js"></script>
<script src="js/main.js"></script>
</body>
</html>

chrome.console

app.isActive = false

v-on

main.js

var app = new Vue({
    el: '#app',
    data:{
    },
    methods:{
        onClick : function () {
            console.log('cliked');
        },
        onMouse : function () {
            console.log('on enter')
        },
        onOut : function () {
            console.log('on out')
        },
        onSubmit : function () {
            console.log('submit')
        },
        onKeyup : function () {
            console.log('keyup')
        },
        onEnter : function () {
            console.log('enter')
        }


    }
});

index.html

<body>
<div id="app">
    <button v-on="{mouseenter: onMouse, mouseout: onOut}" @click="onClick">点我</button>
    <form action="" @keyup.enter="onEnter" @submit.prevent="onSubmit">
        <input type="text">
        <button type="submit">提交</button>
    </form>
</div>
<script src="../lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

v-model

  • v-model.lazy
    光标消失才会显示所输
  • v-model.trim
    去除左右两边空格
  • v-model.number
    转化为数字
    main.js
var app = new Vue({
    el: '#app',
    data:{
        name1: 'null111',
        name2: 'null222',
        name3: 'null333',
    },
});

index.html

<body>
<div id="app">
    <input type="text" v-model.lazy="name1"><br>{{name1}}
    <br>
    <input type="text" v-model.trim="name2">
    <pre>{{name2}}</pre>
    <input type="text" v-model.number="name3">
    <pre>{{name3}}</pre>

</div>
<script src="../lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

v-model其他元素及类型

main.js

var app = new Vue({
    el: '#app',
    data:{
        gender: 'male',
        gender1:['male'],
        text: 'a b c d e f g h i j k l m n o p q r s t u v w x y z',
        city: 2,
    },
});

index.html

<body>
<div id="app">
    <label for=""><input v-model:name="gender" type="radio" value="male">男</label>
    <label for=""><input v-model:name="gender" type="radio" value="female">女</label>
    {{gender}}
    <br>
    <label for=""><input v-model:name="gender1" type="checkbox" value="male">男</label>
    <label for=""><input v-model:name="gender1" type="checkbox" value="female">女</label>
    {{gender1}}
    <br>
    <textarea v-model.lazy="text" id="" cols="30" rows="10"></textarea>{{text}}
    <br>
    <select v-model="city" id="">
        <option value="1">长沙</option>
        <option value="2">成都</option>
        <option value="3">北京</option>
        <option value="4">上海</option>
        <option value="5">西安</option>
    </select>
    {{city}}
</div>
<script src="../lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

v-if控制流指令

main.js

var app = new Vue({
    el: '#app',
    data:{
        role: 'super_admin'
    },
});

index.html

<body>
<div id="app">
    <div v-if="role == 'admin' || role ==  'super_admin'">
        admin
    </div>
    <div v-else-if="role == 'hr'">
        hr
    </div>
    <div v-else=>
        user
    </div>
</div>
<script src="../lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

计算属性

  • parseFloat
  • v-model.number
  • computed
  • Math.round()
    main.js
var app = new Vue({
    el: '#app',
    data:{
        math: 90,
        physics: 70,
        english: 40,
    },
    computed: {
        sum: function () {
            return parseFloat(this.math) + parseFloat(this.physics) + parseFloat(this.english);
        },
        average: function () {
            return Math.round(this.sum/3);
        }
    }
});

index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>18.1</title>
</head>
<body>
<div id="app">
    <table border="1">
        <thead>
        <th>学科</th>
        <th>分数</th>
        </thead>
        <tbody>
        <tr>
            <td>数学</td>
            <td><input type="text" v-model.number="math"></td>
        </tr>
        <tr>
            <td>物理</td>
            <td><input type="text" v-model.number="physics"></td>
        </tr>
        <tr>
            <td>英语</td>
            <td><input type="text" v-model.number="english"></td>
        </tr>
        <tr>
            <td>总分</td>
            <td>{{sum}}</td>
        </tr>
        <tr>
            <td>平均分</td>
            <td>{{average}}</td>
        </tr>
        </tbody>
    </table>
</div>
<script src="../lib/vue.js"></script>
<script src="js/main.js"></script>
</body>
</html>

全局及局部组件

mian.js

// Vue.component('alert', {
//     template:'<button @click="OnClick">弹弹弹</button>',
//     methods: {
//         OnClick: function(){
//             alert("Yo.");
//         }
//     }
// })

var alert_component = {
    template:'<button @click="OnClick">弹弹弹</button>',
    methods: {
        OnClick: function(){
            alert("Yo.");
        }
    }
}

new Vue({
    el: '#seg1',
    components: {
        'alert': alert_component,
    }
})

new Vue({
    el: '#seg2',

})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="seg1">
        <alert></alert>
    </div>
    <div id="seg2">
        <alert></alert>
    </div>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>

    
</body>
</html>

配置组件

main.js

Vue.component('like', {
    template: '#like-component-tpl',
    data: function(){
        return{
            likeCount: 10,
            liked: false,
        }
    },
    methods: {
        toggleLike: function(){
            if(!this.liked)
                this.likeCount++;
            else
                this.likeCount--;
            this.liked = !this.liked;
        }
    }
})

new Vue({
    el: '#app',
    
})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .liked{
            color: gold;
        }
    </style>
</head>

<body>
    <div id="app">
      <like></like>
    </div>
    <template id="like-component-tpl">
        <button :class="{liked: liked}" @click="toggleLike">
                赞 {{likeCount}}
        </button>
    </template>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>

    
</body>
</html>

组件通信之父子通信

  • props
    main.js
Vue.component('user', {
   template: '<a :href="\'/user/\' + username">{{username}}</a>',
   props: ['username'],
    methods: {}
})

new Vue({
    el: '#app',
    
})

index.html

<body>
    <div id="app">
      <user username='zxc'>
      </user>
    </div>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

组件通信之子父通信

main.js

Vue.component('balance',{
    template:
    `
    <div>
        <show @show_balance="show_balance"></show>
        <div v-if="show">您的余额为98元</div>
    </div>
    `,
    data: function(){
        return{
            show: false,
        }
    },
    methods: {
        show_balance: function(data){
            this.show =true;
            console.log('data:', data);
        }
    }
});

Vue.component('show', {
    template: '<button @click="onClick">显示余额</button>',
    methods: {
        onClick: function(){
            this.$emit('show_balance', {a:1, b:2});
        }
    }
});

new Vue({
    el: '#app',
    
})

index.html

<body>
    <div id="app">
      <balance></balance>
    </div>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

组件通信之任意组件通信

main.js

var Event = new Vue();

Vue.component('huahua',{
    template:`
    <div>
        我说:<input @keyup="on_change" v-model="i_said"/>
    </div>`,
    data: function(){
        return {
            i_said: '',
        }
    },
    methods: {
        on_change: function(){
            Event.$emit('huahua-said-something', this.i_said);
        }
    }
});

Vue.component('quandan', {
    template: `<div>花花说了:{{huahua_said}}</div>`,
    data: function(){
        return {
            huahua_said: '',
        };
    },
    mounted: function(){
        var me = this;
        Event.$on('huahua-said-something', function(data){
            me.huahua_said = data;
        });
    }

});

new Vue({
    el: '#app',
    
})

index.html

<body>
    <div id="app">
      <huahua></huahua>
      <quandan></quandan>
    </div>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

过滤器

  • (val / 1000).toFixed(2)
    保留小数点后2位

main.js

Vue.filter('currency', function(val, unit) {
    val = val || 0;
    unit = unit || '元';
    return val + unit;
});

Vue.filter('meter', function(val, unit){
    val = val || 0;
    unit = unit || 'm';
    return (val / 1000).toFixed(2) + unit;
});

new Vue({
    el: '#app',
    data: {
        price: 10,
        length: 11,
    }    
})

index.html

<body>
    <div id="app">
        <input v-model="length">mm
        <br>
        {{length | meter}}
        <hr>
        <input v-model="price">
        {{price | currency('USD')}}
    </div>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

自定义指令的基本用法

  • Vue.directive('xx',function(){});
  • el.style.position = 'fixed'

生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 left, top, right 以及 bottom 属性进行规定。

  • el.style.position = "static"
    默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
  • binding.value
    main.js
Vue.directive('pin', function(el, binding){
    var pinnded = binding.value;
    if(pinnded){
        el.style.position = 'fixed';
        el.style.top = '10px';
        el.style.left = '10px';
    }else
        el.style.position = "static"
});
new Vue({
    el: '#app',
    data: {
        card1: {
            pinned:false,
        },
        card2: {
            pinned: false,
        },
    }    
})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .card{
            width: 200px;
            background: #cccccc;
            padding: 10px;
            margin: 5px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div v-pin="card1.pinned" class="card">
            <button @click="card1.pinned = !card1.pinned">pin it</button>
            有没有那么一刻,你感觉人生格局已定?

            你感觉再往上走,越来越难了?
            
            你曾经雄心壮志,但现在每个月还房贷,都拼尽全力。
            
            你苦苦思索,自己到底是怎样输掉了人生。
        </div>
        <div v-pin="card2.pinned" class="card">
            <a href="#" @click="card2.pinned = !card2.pinned">pinned it</a>
            李嘉诚的几篇演讲,刷爆网络,它也是这个问题的最佳答案。

            从15岁在一家钟表公司当小学徒,到44岁创办的长江实业上市,再到成为香港首富资产千亿,李嘉诚花了73年。
            
            我梳理了李嘉诚的演讲稿,然后发现,那些决胜千里的人,都有这5种特质。
            
            请问你有没有在其中?
        </div>
        <div>优秀的人,都极其懂得自我管理。自律的人有多可怕?他会昼度夜思、殚精竭虑、不知疲倦。14岁的时候,李嘉诚就知道要赚取足够一家的生活费。一方面他紧守角色,尽管是小工,也坚持把每件交托的事情做得妥当出色;另一方面他绝不浪费时间,把剩下来的一分一毫都拿来买旧书籍。20岁起,他就要求自己大量阅读大公司年报。60多年来,他每天工作12小时,晚饭后看20分钟英文电视,并跟着大声说;睡前一定要看书;早餐必须在5:59分起床。甚至,李嘉诚还把这种静态管理延伸至动态管理上。22岁成立公司后,李嘉诚就深刻明白,要想取得成功,知识要和意志结合。他建立了各种随机应变的制度,避免聪明的组织干愚蠢的事。这个时代,决定一个人优秀与否,早已不仅仅是勤奋程度,还有你对自我的管理。网上有篇文章说,为什么一流成功人士的闹钟,都定在早晨5:57?因为他们虽然每天只早起了一个小时,但日积月累,事实上,他每天都比别人多“活”了一个小时。如果你是这样的人,你的生命会被拉长,自然能活得更精彩。平庸是条死胡同如今的李嘉诚,已经90岁。可能有人觉得,他这把年纪,时间已经不再没有方向。但尽管已经高龄,他依然坚持做一件事:每天6点起床,坚持打1个半小时左右的高尔夫球。可能有人会说,都一把年纪了干嘛折腾自己。可不折腾的人生,有多平庸、乏味。在最近一次演讲上,90岁的李嘉诚还坦言很多时候感到沮丧无力。为了每一个明天,他仍然在不断思考,不断感受,不断行动。为了脱离平庸,读书的时候天一亮他就起来学英语,这种狂热使得他晚年还坚持每天晚上看英文电视,温习英语;为了变得优秀,打工时他每天工作16个小时,期间还去夜校深造,后来他从一个塑料厂推销员晋升为公司总经理;长江创建初期,因为无视质量控制,工厂处于破产边缘,他召集员工开会并向他们承认自己的商业错误,并承诺工厂度过非常时期后,欢迎被解雇的工人回来工作。当一个人立志改变世界的时候,他会使出浑身力气去打破所有艰难险阻。而努力,没有长度。李嘉诚说道:我一直深信,如果世界上有任何“成功秘方”,其中最关键的元素必定是你对成功的欲望远远大于对失败的恐惧。坚持学习,哪怕你90岁为什么李嘉诚能够将长江从一个小厂做成业务遍及全球52个国家、拥有27万员工的大集团,并且68年屹立不倒?因为他严于律己,一个人无论做什么行业,在一个行业内就要尽量做到最好,这才是最重要的。李嘉诚年轻的时候,常常喜欢翻阅上市公司的年度报告书,看上去很沉闷,但日积月累他明白了会计处理的方法的优点与利弊,方向的选择和公司资源的分布对他有着很大的启示。他常常追求最新的知识,最新的商业动态、知识动态,这也使得他能够站在更高更远的地方来看现在的格局,从而做出最睿智的判断与选择。在创业初期,李嘉诚就已开始投资一些华尔街上市公司的股票。每次买入一个公司之前,他都会仔细研读他们的财报,研究他们的商业规则。华尔街上市公司的财报因此成为他的英文老师、商业教练,也是他的私人投资获利来源。李嘉诚还没退休的时候,他每周都会亲自教导孙子。上课都是自己准备课程、案例,既涉及经济,又有道德讨论、文化批评。就连现在的李嘉诚,仍在学习。我所见到月薪低于5000的人,无一不是工作后不学习的人。他们最喜欢的活动,是在家里看芒果台的综艺节目,是葛优瘫。他们听过许多道理,却从来没有意识到:学习,也应当是终身的自选动作。今天,不管你是打工,还是处于管理阶层,都要让自己得到最好、最新的知识。这样你才有交谈的资本。曾经,李嘉诚见了一个银行主席,结果发现这个人没有真材实料,讲的东西都是假大空,后来他跟秘书说以后那个人再来都不会再见他了。如果一个没有真才实料的CEO,整天都在外面跑,连自己的事情都没有做好的话,这是最危险的。由此可见,只有学习,能为你的人生加冕。时常保持危机感保持危机感的人,常常比一般的人更能对抗一切不确定因素。对大多数年轻人来说,一方面要供还房贷、结婚生子,一方面还要赡养父母。很多人会随波逐流,生活慢慢磨平,甚至人到中年,有些还在国企做着流水线的工作。这些年,“中年危机”话题常常被人提起。因为没有核心竞争力,老员工面临被裁员的危机。2017年初,华为宣布辞退34岁以上的交付工程维护人员;2017年12月,中兴42岁员工跳楼自杀,当场死亡。任正非说了一句让人深思的话:“华为是没有钱的,大家不奋斗就跨了,不可能为不奋斗者支付什么。30多岁年轻力壮,不努力,光想躺在床上数钱,可能吗?”保持危机感,能让你清楚自己的位置,悄然应对即将发生的变化。事情。他总是时刻在内心创造公司的逆境,不停地给自己提问,然后想出解决问题的方式。“等到危机来的时候,他就已经做好了准备”。李嘉诚说道:我凡事必有充分的准备才去做。例如天文台说天气很好,但我常常问我自己,如5分钟后宣布有台风,我会怎样,在香港做生意,亦要保持这种心理准备。2008年,金融危机爆发。而在这之前,李嘉诚早就预见并做好了准备。等到危机来临时,集团不但安然无恙,还从中获得了扩张的机会。有的人25岁,却过着52岁的人生;有的人52岁,却活成了25岁。拥有危机感,你很可能脱颖而出。相反,你还未起跑,就可能被抛下。差不多的人生,其实差很多在汕头大学演讲中,李嘉诚曾对学生说,不要成为差不多先生。但我们,却常常在犯这样的毛病。你总是觉得差不多就好。微胖的体型,差不多;月薪六千,差不多;每天朝九晚五,差不多;25岁结婚,27岁生小孩,差不多。你总是习惯给自己设限,从不做那些有难度的事,你觉得岁月静好。然而,你不知道,自己慢慢成为了温水里的青蛙。等有一天,你突然发现熟悉的人越来越优秀,你再也追赶不上了.李嘉诚,为什么从一个小学徒,走到今天?最大的一个原因,就是他有野心,从不接受差不多的人生。蔡康永说,15岁觉得游泳难,放弃游泳,到18岁遇到一个你喜欢的人约你去游泳,你只好说“我不会耶”。18岁觉得英文难,放弃英文,28岁出现一个很棒但要会英文的工作,你只好说“我不会耶”。从不挑战潜能,结局其实已定:只能变得平庸,接受低成就。反之,你终能与众不同。
        </div>
    </div>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>
</body>
</html>

自定义指定配置传参及修饰符

  • var position = binding.modifiers;
  • var warning = binding.arg;
    main.js
Vue.directive('pin', function(el, binding){
    var pinnded = binding.value;
    var position = binding.modifiers;
    var warning = binding.arg;
    if(pinnded){
        el.style.position = 'fixed';
        for(var key in position){
            if(position[key])
                el.style[key] = '10px';
        }
        if(warning == 'true')
        el.style.background = 'yellow';
    }else{
        el.style.position = "static";
        el.style.background = '#cccccc';
    }
        
});
new Vue({
    el: '#app',
    data: {
        card1: {
            pinned:false,
        },
        card2: {
            pinned: false,
        },
    }    
})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .card{
            width: 200px;
            background: #cccccc;
            padding: 10px;
            margin: 5px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div v-pin:true.bottom.right="card1.pinned" class="card">
            <button @click="card1.pinned = !card1.pinned">pin it</button>
            有没有那么一刻,你感觉人生格局已定?

            你感觉再往上走,越来越难了?
            
            你曾经雄心壮志,但现在每个月还房贷,都拼尽全力。
            
            你苦苦思索,自己到底是怎样输掉了人生。
        </div>
        <div v-pin="card2.pinned" class="card">
            <a href="#" @click="card2.pinned = !card2.pinned">pinned it</a>
            李嘉诚的几篇演讲,刷爆网络,它也是这个问题的最佳答案。

            从15岁在一家钟表公司当小学徒,到44岁创办的长江实业上市,再到成为香港首富资产千亿,李嘉诚花了73年。
            
            我梳理了李嘉诚的演讲稿,然后发现,那些决胜千里的人,都有这5种特质。
            
            请问你有没有在其中?
        </div>
        <div>优秀的人,都极其懂得自我管理。自律的人有多可怕?他会昼度夜思、殚精竭虑、不知疲倦。14岁的时候,李嘉诚就知道要赚取足够一家的生活费。一方面他紧守角色,尽管是小工,也坚持把每件交托的事情做得妥当出色;另一方面他绝不浪费时间,把剩下来的一分一毫都拿来买旧书籍。20岁起,他就要求自己大量阅读大公司年报。60多年来,他每天工作12小时,晚饭后看20分钟英文电视,并跟着大声说;睡前一定要看书;早餐必须在5:59分起床。甚至,李嘉诚还把这种静态管理延伸至动态管理上。22岁成立公司后,李嘉诚就深刻明白,要想取得成功,知识要和意志结合。他建立了各种随机应变的制度,避免聪明的组织干愚蠢的事。这个时代,决定一个人优秀与否,早已不仅仅是勤奋程度,还有你对自我的管理。网上有篇文章说,为什么一流成功人士的闹钟,都定在早晨5:57?因为他们虽然每天只早起了一个小时,但日积月累,事实上,他每天都比别人多“活”了一个小时。如果你是这样的人,你的生命会被拉长,自然能活得更精彩。平庸是条死胡同如今的李嘉诚,已经90岁。可能有人觉得,他这把年纪,时间已经不再没有方向。但尽管已经高龄,他依然坚持做一件事:每天6点起床,坚持打1个半小时左右的高尔夫球。可能有人会说,都一把年纪了干嘛折腾自己。可不折腾的人生,有多平庸、乏味。在最近一次演讲上,90岁的李嘉诚还坦言很多时候感到沮丧无力。为了每一个明天,他仍然在不断思考,不断感受,不断行动。为了脱离平庸,读书的时候天一亮他就起来学英语,这种狂热使得他晚年还坚持每天晚上看英文电视,温习英语;为了变得优秀,打工时他每天工作16个小时,期间还去夜校深造,后来他从一个塑料厂推销员晋升为公司总经理;长江创建初期,因为无视质量控制,工厂处于破产边缘,他召集员工开会并向他们承认自己的商业错误,并承诺工厂度过非常时期后,欢迎被解雇的工人回来工作。当一个人立志改变世界的时候,他会使出浑身力气去打破所有艰难险阻。而努力,没有长度。李嘉诚说道:我一直深信,如果世界上有任何“成功秘方”,其中最关键的元素必定是你对成功的欲望远远大于对失败的恐惧。坚持学习,哪怕你90岁为什么李嘉诚能够将长江从一个小厂做成业务遍及全球52个国家、拥有27万员工的大集团,并且68年屹立不倒?因为他严于律己,一个人无论做什么行业,在一个行业内就要尽量做到最好,这才是最重要的。李嘉诚年轻的时候,常常喜欢翻阅上市公司的年度报告书,看上去很沉闷,但日积月累他明白了会计处理的方法的优点与利弊,方向的选择和公司资源的分布对他有着很大的启示。他常常追求最新的知识,最新的商业动态、知识动态,这也使得他能够站在更高更远的地方来看现在的格局,从而做出最睿智的判断与选择。在创业初期,李嘉诚就已开始投资一些华尔街上市公司的股票。每次买入一个公司之前,他都会仔细研读他们的财报,研究他们的商业规则。华尔街上市公司的财报因此成为他的英文老师、商业教练,也是他的私人投资获利来源。李嘉诚还没退休的时候,他每周都会亲自教导孙子。上课都是自己准备课程、案例,既涉及经济,又有道德讨论、文化批评。就连现在的李嘉诚,仍在学习。我所见到月薪低于5000的人,无一不是工作后不学习的人。他们最喜欢的活动,是在家里看芒果台的综艺节目,是葛优瘫。他们听过许多道理,却从来没有意识到:学习,也应当是终身的自选动作。今天,不管你是打工,还是处于管理阶层,都要让自己得到最好、最新的知识。这样你才有交谈的资本。曾经,李嘉诚见了一个银行主席,结果发现这个人没有真材实料,讲的东西都是假大空,后来他跟秘书说以后那个人再来都不会再见他了。如果一个没有真才实料的CEO,整天都在外面跑,连自己的事情都没有做好的话,这是最危险的。由此可见,只有学习,能为你的人生加冕。时常保持危机感保持危机感的人,常常比一般的人更能对抗一切不确定因素。对大多数年轻人来说,一方面要供还房贷、结婚生子,一方面还要赡养父母。很多人会随波逐流,生活慢慢磨平,甚至人到中年,有些还在国企做着流水线的工作。这些年,“中年危机”话题常常被人提起。因为没有核心竞争力,老员工面临被裁员的危机。2017年初,华为宣布辞退34岁以上的交付工程维护人员;2017年12月,中兴42岁员工跳楼自杀,当场死亡。任正非说了一句让人深思的话:“华为是没有钱的,大家不奋斗就跨了,不可能为不奋斗者支付什么。30多岁年轻力壮,不努力,光想躺在床上数钱,可能吗?”保持危机感,能让你清楚自己的位置,悄然应对即将发生的变化。事情。他总是时刻在内心创造公司的逆境,不停地给自己提问,然后想出解决问题的方式。“等到危机来的时候,他就已经做好了准备”。李嘉诚说道:我凡事必有充分的准备才去做。例如天文台说天气很好,但我常常问我自己,如5分钟后宣布有台风,我会怎样,在香港做生意,亦要保持这种心理准备。2008年,金融危机爆发。而在这之前,李嘉诚早就预见并做好了准备。等到危机来临时,集团不但安然无恙,还从中获得了扩张的机会。有的人25岁,却过着52岁的人生;有的人52岁,却活成了25岁。拥有危机感,你很可能脱颖而出。相反,你还未起跑,就可能被抛下。差不多的人生,其实差很多在汕头大学演讲中,李嘉诚曾对学生说,不要成为差不多先生。但我们,却常常在犯这样的毛病。你总是觉得差不多就好。微胖的体型,差不多;月薪六千,差不多;每天朝九晚五,差不多;25岁结婚,27岁生小孩,差不多。你总是习惯给自己设限,从不做那些有难度的事,你觉得岁月静好。然而,你不知道,自己慢慢成为了温水里的青蛙。等有一天,你突然发现熟悉的人越来越优秀,你再也追赶不上了.李嘉诚,为什么从一个小学徒,走到今天?最大的一个原因,就是他有野心,从不接受差不多的人生。蔡康永说,15岁觉得游泳难,放弃游泳,到18岁遇到一个你喜欢的人约你去游泳,你只好说“我不会耶”。18岁觉得英文难,放弃英文,28岁出现一个很棒但要会英文的工作,你只好说“我不会耶”。从不挑战潜能,结局其实已定:只能变得平庸,接受低成就。反之,你终能与众不同。
        </div>
    </div>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>
</body>
</html>

mixins混合

  • mixins: [base]
    main.js
var base = {
    data: function(){
        return {
            visible: false,
        }
    },
    methods: {
        show: function(){
            this.visible = true;
        },
        hide: function(){
            this.visible = false;
        },
        toggle: function(){
            this.visible = ! this.visible;
        }
    }
}

Vue.component('tooltip',{
    template: `
    <div>
    <span @mouseenter="show" @mouseout="hide">bys</span>
    <div v-if="visible">
    白岩松
    </div>
    </div>
    `,
    data: function(){
        return {
            visible: true,
        }
    },
    mixins: [base] 
});
Vue.component('popup',{
    template: `
    <div>
    <button @click="toggle">Popup</button>
    <div v-if="visible">
    有没有那么一刻,你感觉人生格局已定? 你感觉再往上走,越来越难了? 你曾经雄心壮志,但现在每个月还房贷,都拼尽全力。 你苦苦思索,自己到底是怎样输掉了人生。
    </div>
    </div>
    `,
    mixins: [base] 
});
new Vue({
    el: '#app',
    data: {
 
    }    
})

index.html

<body>
    <div id="app">
        <tooltip></tooltip>
        <popup></popup>
    </div>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>
</body>

slots插槽

  • .pannel > *

main.js

Vue.component('pannel',{
    template: '#pannel-tpl',

});
new Vue({
    el: '#app',
    data: {
 
    }    
})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .pannel {
            max-width: 300px;
            border: 1px solid #999;
            margin-bottom: 15px;
        }

        .pannel > * {
            padding: 15px;
        }

        .pannel .title{
            border-bottom: 1px solid #999;
        }
        
        .pannel .footer{
            border-top: 1px solid #999;
        }
    </style>
</head>
<body>
    <div id="app">
        <pannel>
            <div slot="title">李嘉诚说</div>
            <div slot="content"> 
                有没有那么一刻,你感觉人生格局已定?

                你感觉再往上走,越来越难了?
                
                你曾经雄心壮志,但现在每个月还房贷,都拼尽全力。
                
                你苦苦思索,自己到底是怎样输掉了人生。
            </div>
        </pannel>    
        <pannel></pannel>   
        <pannel></pannel>   
    </div>
    <template id='pannel-tpl'>
            <div class="pannel">
                    <div class="title">
                        <slot name="title">Yo.1</slot>
                    </div>
                    <div class="content">
                        <slot name="content">Yo.2</slot>
                    </div>
                    <div class="footer">
                        <slot name="footer">更多详情...</slot>
                    </div>
                </div>
    </template>
<script src="lib/vue.js"></script>
<script src="js/main.js"></script>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容