前端三大框架之一 Vue.js

现在每个公司在招聘时都说要精通Angular.js、React.js、Vue.js,那如果不会的同学今天咱们先从Vue.js学起,我给大家带来的是常用的一些功能,如果大家觉得还不错请给我一些(喜欢)、或评价,如果真的可以帮助到大家我还会继续给大家整理Angular.js和React.js.
好了废话少说进入今天的主题:Vue.js;

Vue:
官网:http://vuejs.org.cn/
教程:http://vuejs.org.cn/guide/

使用vue
    1、引文件
    2、
        new Vue({
            el:'id或class选择器',       //为模板作用域,Vue可操作的区域;
            data:{
                数据;
            },
            methods:{
                函数调用;
            }
        });
        注意: el data不能变  数据中的名字可以随便
               class选择器也可以使用,但是只取第一个模板,所以一般用id
    3、放数据的盒子
        {{msg}}

        如果不想更新页面数据
        {{*msg}}

        转译输出
        {{{msg}}}  当数据中出现标签时;
        ---------------------

        绑定v-model后msg:

        radio      选中是on
        checkbox   true  false
        select v-model="msg"   是value值

Vue指令:  v-
    v-model  表单绑定数据的;
    v-for="value in arr"            循环数组
    v-for="(key,value) in json"     循环json
    v-show="true/false"             显示隐藏
    v-hide="true/false"
    v-if="true/false"               显示隐藏(会从DOM中删除元素)
    v-else="true/false"
    v-bind:class=""                 绑定className 可以改变样式
    :class="{class名称:true/false,red:a}"    同上 (只是简写)

    事件指令:
            v-on:click                      点击事件
            @click                          点击事件(简写)
            DOM中有的事件Vue中都有,加在@后即可;

        v-on:keyup:                     操作键盘按键的keyCode;
            @keyup.13                   (简写)
            @keyup.enter="add()"
            @keyup.left
            @keyup.right
            @keyup.up
            @keydown.down
            @keydown.delete  backspace

        $event   需要在函数实参中上传$event    操作事件对象
            ev.clientX                       鼠标坐标
            ev.keycode                       键盘按键
            stopPropagation()                阻止冒泡
            ev.preventDefault();             阻止默认行为


        自定义指令

        Vue.directive('指令名字',function(){
            this.el.style.background='red';
        });
        this还是Vue,谁调用this.el就是谁


过滤器:filter
    {{msg | currency '¥' 参数1 参数2}}

        currency   msg首字母大写货币默认$  小数点后两位  后面跟参数:currency                                          参数1 参数2;

        capitalize msg首字母大写

        uppercase  msg全部大写   

        lowercase  msg全部小写 

    过滤器连写
        过滤器名称 |  过滤器名称 | 过滤器名称

    自定义过滤器
        Vue.filter('过滤器名字',function(input,a,b){     input为系统自带函数;
            alert(a+b);
            return input.split(' ').reverse().join(' ');  
        });
        input 展示的数据  input 需要过滤的内容
        使用{{msg | 过滤器名字}}     


Vue:动画(简单运动)
    动画的定义
        //跟写class名是一样的  写在style中;
        .go-transition{
            transition:1s all ease;   全部改变用all 一个时写一个属性 如:(width)即可;
            width:100px;height:100px; background: red;
                //最终元素在DOM结构中展示的样子
        }
        .go-enter{            进入时
            width: 0;
            height: 0;
            opacity: 0;
        }
        .go-leave{            离开时
            width: 0;
            height: 0;
            opacity: 0;
        }
    动画是使用
        <p transition="go"></p>     go 动画的名称


监控Vue中的数据的改变
    var v=new Vue();
    v.$watch('msg',function(){
        //数据变化后执行的函数
    })


Vue:组件
    定义组件
        坑:组件定义需要放到new Vue({})上面
            不能使用系统自带的标签,汉字
    1-----------------------
        创造一个组件
            Vue.component('aaa',{
                template:'<div>我是备胎</div>'
            });
        使用一个组件
            <aaa></aaa>
    2--------------------
        Vue.component('aaa',{
            template:'<div>{{msg}}</div>',
            props:['msg']    保留原有标签上的属性;
        });

        <aaa msg=""></aaa>
    3----------------------
        <script type="x-template" id="t1"></script>

        Vue.component('aaa',{
            template:'#t1'    //template:模板id
        });

        <aaa></aaa>
    4---------------------
    通过扩展实现模板
        var t=Vue.extend({               //扩展模板
            template:'<div>123</div>'
        });
        Vue.component('aaa',t);         //创造组件,让自定义标签和模板关联


单页面开发 SPA

    点不同按钮展示不同的内容

    路由
        1、引文件  vue-router.js   在vue.js的基础上
        2、页面布局  <router-view></router-view>  路由的展示区
                    <li><a v-link="{path:'/home'}">首页</a></li>
        3、扩展模板  var home=Vue.extend({
                       template:'<h3>我是首页</h3>'
                    });
        4、扩展、初始化 var App=Vue.extend({})  //扩展整个页面
        5、var Router=new VueRouter()  //定义个路由
        6、Router.map({ }) //遍历所有的模板路径
        7、开启路由  Router.start(App,'#box');   

    实现Vue路由代码 (复制即可)
        <html>
        <head>
        <script src="vue.js"></script>
        <script src="vue-router.js"></script>
        <script>
            window.onload=function(){
                var Home=Vue.extend({
                    template:'<h3>我是首页</h3>'
                })

                var List=Vue.extend({
                    template:'<h3>我是列表页</h3>'
                })

                var App=Vue.extend({})

                var Router=new VueRouter()

                Router.map({
                    '/Home':{
                        component:Home
                    },
                    '/List':{
                        component:List
                    }
                })

                Router.start(App,'#box')
            }
        </script>
        </head>
        <body>
            <div id="box">
                <h1>路由展示页面</h1>
                <ul>
                    <li><a v-link="{path:'/Home'}">首页</a></li>
                    <li><a v-link="{path:'/List'}">列表页</a></li>
                </ul>
                <router-view></router-view>
            </div>
        </body>
        </html>    

Vue交互
    get
    post
    jsonp

    1、引文件
    2、this.$http.get('路径',{数据}).then(fnSucc,fnErr);
        fnSucc   function(res){
                      //res是对象
                      res.data  //数据
                 }
      -----------------------------------------
       this.$http.post('路径',{数据},{emulateJSON:true})).then(fnSucc,fnErr);
       fnSucc   function(res){
                     //res是对象
                     res.data  //数据
                }
       ------------------------------------------
       this.$http.jsonp('路径',{wd:'a'},{jsonp:'cb'}).then(function(res){
                                      //需要jsonp修改下cb或callback
               alert(res.data.s);
           },function(){})
       }

喜欢的希望帮click下哦;

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

推荐阅读更多精彩内容