Vue(2)

六:Vue组件

   组件是可以重复用的Vue实列,说白了就是一组可以重复使用的模板,跟JSTL的自定义标签,Thymeleaf的替换:fragment等框架有着异曲同工之妙,通常一个应用会以一颗嵌套的组件数的形式来组织。

   使用Vue.component()方法注册组件

   使用props属性传递参数,我们是需要传递参数到组件的,此时就需要使用props属性了

列子:

<body>
  <div id="app">
      //这里我们直接使用我们的组件
      <zph>123</zph>
  </div>
<script>
    //定义一个Vue组件component
    Vue.component("zph",{
            Template: '<h1>74455</h1>'
    }
    )
});
</script>
</body>

列二:体现组件的工作原理

<body>
  <div id="app">
      //组件:传递给组件中的值:props
      <zph v-for="team in messages" v-bind:pin="team"></zph>
  </div>
<script>
    //定义一个Vue组件component
    Vue.component("zph",{
            props: ['pin'],
            template: '<h1>{{pin}}</h1>'
    });
    var  vm=new  Vue({
       //el绑定标签,data是指数据
        el: "#app",
        data: {
           messages: ["java","c++","c"],
        },
    });
</script>
</body>

我们要通过组件读取的时候,我们要在上面的<zph>进行遍历,遍历以后我们进行将每个值绑定给pin,这个时候我们底下定义的组件template读取的时候要通过props进行读取,然后再传给<h1>

·v-for=‘’item in items” :遍历Vue实列中定义名为items的数组,并创建同等数量的组件

·v-bind:item=“item”:将遍历的item项绑定到组件中props定义的名为item属性上;=号左边的item为props定义的属性名,右边的为item in items中遍历的item项的值。

七:Axios异步通信

  ①.什么是Axios

  Axios是一个开源的可以用在浏览器端和Node.js的异步通信框架,她的主要作用就是实现Ajax异步通信,其功能特点如下:

 ·从浏览器中创建XMLHttpRequests

 ·从node.js创建http请求

 ·支持PromiseApi【js链式编程】

 ·拦截请求和响应

 ·转换请求数据和响应数据

 ·取消请求

 ·自动转换json数据

 ·客户端支持防御XSRF(跨站请求伪造)

  ②.为什么要使用Axios

  由于Vue.js是一个视图层框架,所以Vue.js并不包含Ajax的通信功能,为了解决通信问题,作者单独开发了一个名为vue-resource的插件,不过在进入2.0版本以后停止  了对该插件的维护并推荐Axios框架,少用Jquery,因为它操作dom太频繁。

 此时我用的cdn直接从网站上的:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

   我们用的钩子函数来进行Axios异步

<body>
  <div id="app">
      <div>{{info.name}}</div>
      <div>{{info.version}}</div>
      <a v-bind:href="info.url">点我</a>
      这里一定要用v-bind来进行绑定,不然的话实现不了url
</div>
<script>
    //定义一个Vue组件component
    // Vue.component("zph",{
    //         props: ['pin'],
    //         template: '<h1>{{pin}}</h1>'
    // });
    var  vm=new  Vue({
       //el绑定标签,data是指数据
        el: "#app",
        data(){
            //请求的返回参数合格,必须和json字符串一样
            return{
                info:{
                    name: null,
                    version: null,
                    url: null
                }
            }
        },
        mounted(){//钩子函数,链式编程,ES6新特性
            axios.get('package.json').then(response=>(this.info=response.data));
        }
    });
</script>
</body>

本章结束

posted @ 2021-02-25 17:52  iLisa  阅读(63)  评论(0编辑  收藏  举报