前端三大框架之一 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下哦;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容