vue相关

vue相关

vue入门

  • 下载vue.js
  • 创建静态web项目
  • 将vue.js导入项目
  • 编写hello页面,引入vue.js查看效果
    <head>
 <meta charset="UTF-8">
 <title>hello-vue</title>
 <script src="/js/vue/vue.js"></script>
</head>
<body>
<div id="app">
    {{ message }}
</div>

<script>
    var app = new Vue({
    el: '#app',
    data: {
    message: 'Hello Vue!'
        }
    })
</script>
</body>
</html>

常见指令

  • {{属性}}:常规的取值方式,只在和vue关联的标签中有效,对应上面绑定了id='app'的div标签中才有效
  • v-bind:表示通知vue在渲染的DOM标签时,将bind绑定的属性和Vue实例data中同名属性值保持一致(也就是绑定数据),可以简写成(:)
    <div id="app">
 <!--v-bind-->
 <span v-bind:title="testTitle">看这里,看这里</span>
 <!--下面这种写法是一个意思-->
 <span :title="testTitle">看这里,看这里</span>
</div>
<script>
    var vue = new Vue({
    el:"#app",
    data:{
        testTitle:"瞅啥瞅~"
    }
    })
</script>
  • v-model:双向数据绑定和单向数据绑定:使用 v-model 进行双向数据绑定
    功能与v-bind类似,不过数据可同步改动,即修改标签中的元素数,对应的Vue实例对象中data对应的数据也会发生变化
  • v-html:按照html的格式进行取值
        <div id="app" >
        <!--这种直接取出来的数据是带有span标签的-->
    {{content}}
    </div>
        <!--v-html(这种取出来是不带标签的):将html格式数据渲染出来-->
        <div id="app" v-html="content">
    </div>
    <script>
        var vue = new Vue({
        el:"#app",
        data:{
            content:"<span style='color: red;'>这是内容</span>"
            }
        })
    </script>
    
  • v-if判断指令
        <!--age是否大于18,等于18,小于18-->
        <div id="app">
        <span v-if="age > 18">成年了</span>
        <span v-else-if="age < 18">未成年</span>
        <span v-else="age == 18">踩线了</span>
        </div>
        <script>
            var vue = new Vue({
            el:"#app",
            data:{
                age:18
            }
            })
        </script>
    
  • v-for:循环指令
        <body>
            <ul id="app">
                <!--<li>a</li>
                <li>b</li>
                <li>c</li>-->
                <li v-for="item in arrs">{{item}}</li>
            </ul>
            <script>
            var app = new Vue({
                el:'#app',
                data:{
                    arrs:['aa','bb','cc']
                }
            })
        </script>
        </body>
    
  • 对象集合
        <body>
        <ul id="app">
            <!--(item,index)前面的是元素,后面的是元素顺序,这是固定的位置,不能更改-->
            <li v-for="(item,index) in arrs">{{index}}-{{item.name}}</li>
        </ul>
    
        <script>
        var app = new Vue({
        el:'#app',
        data:{
            arrs:[
                {id:1,name:'zs',age:18},
                {id:2,name:'ls',age:19},
                {id:3,name:'ww',age:20}
            ]
        }
        })
        </script>
        </body>
    
  • v-on:事件绑定,可简写成@,如v-on:click //绑定点击事件-->(@click注意了,这里的@后面是没有冒号的)
        <body>
        <ul id="app">
        <!--(item,index)前面的是元素,后面的是元素顺序,这是固定的位置,不能更改-->
        <!--$event:表示事件信息封装对象,写法是固定的,这里表示的就是z整个事件对象,-->
        <li v-on:click="choseClick($event)" v-for="(item,index) in arrs">{{index}}-{{item.name}}</li>
        <!--以下写法与上面的效果一样-->
        <!--<li @click="choseClick" v-for="(item,index) in arrs">{{index}}-{{item.name}}</li>-->
        </ul>
    
        <script>
            var app = new Vue({
                el:'#app',
                data:{
                    arrs:[
                        {id:1,name:'zs',age:18},
                        {id:2,name:'ls',age:19},
                        {id:3,name:'ww',age:20}
                    ]
                },
                methods:{
                    //这个就是事件函数
                    choseClick:function (ev) {
                        //拿到事件对象
                       console.log(ev);
                       //获取当前的事件元素(也就是当前项目中的li元素)
                       console.log(ev.currentTarget);
                        alert(11);
                    }
                }
            })
        </script>
        </body>
    
  • 事件传参
        <ul>
        <li v-for="u in list" v-on:click="choseClick($event,u.id,u.name)">
        {{u.id}}-{{u.name}}-{{u.age}}-{{u.sex==1?'男':'女'}}
        </li>
        </ul>
        methods:{
            choseClick:function (e, id, name) {
            console.log(e.currentTarget, id, name);
            }
        }
    

属性

  • el:用来指定编译器从什么地方开始解析语法(可以简单理解为将Vue实例对象绑定在页面的那个标签上的)
  • data:用来组织从view中抽象出来的属性,可以说将视图的数据抽象出来存放在data中
  • methods:放置页面中的业务逻辑,js函数一般都放置在methods中(可以简单理解为存放自定义方法的方法区)
  • filters:过滤器集合,专门存放过滤器的
        <body>
        <ul id="app">
            <li v-for="(item,index) in arrs">
                {{index}}-{{item.name}}-{{item.sex | sexFilter}}</li>
        </ul>
        <script>
            var app = new Vue({
                el:'#app',
                data:{
                    arrs:[
                        {id:1,name:'zs',age:18,sex:1},
                        {id:2,name:'ls',age:19,sex:0},
                        {id:3,name:'ww',age:20,sex:-1}
                    ]
                },
                filters:{
                    dataFormat:function () {
                        //多用来做数据格式转换
                    },
                    sexFilter:function (sex) {
                        if (sex == 0){
                            return '女'
                        }else if(sex == 1){
                            return '男'
                        }else {
                            return '保密'
                        }
                    }
                }
            })
        </script>
        </body>
    
  • mounted:是一个函数,在Vue实例对象创建时调用,也就是data之前,常用来初始化data中的数据
        <body>
    <ul id="app">
        <li v-for="(item,index) in arrs">
            {{index}}-{{item.name}}-{{item.sex}}</li>
    </ul>
    
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                arrs:[
                    /*{id:1,name:'zs',age:18,sex:1},
                    {id:2,name:'ls',age:19,sex:0},
                    {id:3,name:'ww',age:20,sex:-1}*/
                ]
            },
            mounted:function () {
                console.log('先执行了吧');
                let _this = this;
                //模拟请求获取数据
                $.get('/data/employ-data.json',function (data) {
                    console.log(data);
                    _this.arrs = data;
                })
            }
        })
    </script>
    </body>
    

前后端项目分离相关问题

  • 在后端服务器配置类里面配置跨域的Bean,解决跨域问题
        //跨域访问时要配置这里
        @Bean
        public WebMvcConfigurer corsConfigurer() {
            return new WebMvcConfigurer() {
                @Override
                //重写父类提供的跨域请求处理的接口
                public void addCorsMappings(CorsRegistry registry) {
                    //添加映射路径
                    registry.addMapping("/**")
                            //放行哪些原始域
                            //.allowedOrigins("*")
                            /*这里要配置下新版版的,上面这个allowedOrigins是老版本的,会报错*/
                            .allowedOriginPatterns("*")
                            //是否发送Cookie信息
                            .allowCredentials(true)
                            //放行哪些原始域(请求方式)
                            .allowedMethods("GET", "POST", "PUT", "DELETE","OPTIONS")
                            //放行哪些原始域(头部信息)
                            .allowedHeaders("*")
                            //暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
                            .exposedHeaders("Header1", "Header2");
                }
            };
        }
    
  • 在html页面获取url上的参数
    <script>
        //获取url上的请求参数
        function getParams() {
        //获取问号及问号后面的内容
        var url = window.location.search;
        var params = new Object();
        if (url.indexOf("?") != -1) {
            //截取问号后面的内容,再使用&分割多个属性
            //从第1个开始截取,因为第0个是?
            var arr = url.substr(1).split("&");
            for (var i = 0; i < arr.length; i++) {
                //使用=分割为keyvalue
                var keyValue = arr[i].split("=");
                params[keyValue[0]] = keyValue[1];
                }
            }
            return params;
        }
    </script>
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容

  • 1、对于Vue是一套渐进式框架的理解 2、vue.js的两个核心是什么? 3、请问 v-if 和 v-show 有...
    Mylovesunshine阅读 362评论 0 0
  • 一、文本传值 首先通过这个例子来介绍vue的一些基础语法和基础结构,一个vue项目主要由html结构,处理逻辑和样...
    刘越姐姐啊阅读 509评论 0 0
  • vue面试题 一、vue优点 1.轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb; 2.简单...
    没糖_cristalle阅读 1,617评论 0 3
  • 1.Vue的数据双向绑定如何实现?Vue的数据双向绑定如何实现? v-model指令或者.sync修饰 2.Vue...
    骑着蜗牛逛妓院阅读 3,851评论 1 11
  • 1. 组件的data为什么必须是函数? 组件中的 data 写成一个函数,数据以函数返回值形式定义,这样每复用一次...
    郭先生_515阅读 983评论 0 12