Vue学习之组件小结(七)

一、组件:

组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用相应的组件即可。

二、组件和模块:

1、模块化:是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的只能单一;

2、组块化:是从UI界面的角度进行划分的;前端的组块化,方便UI组件的重用。

三、定义全局组件的方式:

    三种方式:

<!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>组件</title>
    <script src="./lib/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <!-- 如果要使用组件,直接把组件的名称,以HTML标签的形式,引入到页面中即可 -->
      <mycom1></mycom1>
    </div>
    <!-- 3.在被控制的 #app外面,使用 template 元素,定义组件的HTML模板结构-->
    <template id="tmp1">
      <div>
        <h1>
          这是通过
          template元素,在外部定义的组件结构,这个方式,有代码的智能提示和高亮
        </h1>
        <h4>好用,不错</h4>
      </div>
    </template id="tmp2">
    <h2>
        这是私有的 login 组件
    </h2>
    <template>

    </template>
    <script>
      Vue.component("mycom1", {
        template: "#tmp1"
      });

      // 1.1 使用 Vue.extend 来创建全局的Vue组件
      //   var com1 = Vue.extend({
      //   通过template 属性,指定了组件要展示的HTML结构
      //     template: "<h3>这是使用 Vue.extend 创建的组件<h3>"
      //   });
      //   1.2 使用 Vue.component(‘组件的名称‘,创建出来的组件模板对象)
      //   如果使用 Vue.component 定义全局组件的时候,组件的名称使用了驼峰命名,则在引用组件的时候,
      // 需要把大写的驼峰改成小写的字母,同时,两个单词之前,使用 - 连接;
      // 如果不使用驼峰,则直接拿名称来使用即可;
      //   Vue.component("mycom1", com1);

      //   2. Vue.component 第一个参数:组件的名称,将来在引用组件的时候,就是一个标签的形式来引入它的
      // 第二个参数:Vue.extend 创建的组件,其中 template 就是组件将来要展示的HTML内容。
      //   相当于第一种方式的简写
      //   Vue.component(
      //     "mycom1",
      //     Vue.extend({
      //       //注意:不论是哪种方式创建出来的组件,组件的 template 属性指向的模板内容,必须有且只能有唯一的一个元素
      //       template:
      //         "<div><h3>这是使用 Vue.extend 创建的组件<h3><span>123</span></div>"
      //     })
      //   );

      var vm = new Vue({
        el: "#app",
        data: {},
        methods: {},
        filters: {},
        directives: {},
        components: {  //定义实例的内部私有组件的
          login: {
            template: "#tmp2"
          }
        }
      });
    </script>
  </body>
</html>

四、定义私有的组件:如上图代码中的  tmp2 ;

五、组件内可以有data数据,但其是一个有return的function方法。

<!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>组件</title>
    <script src="./lib/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <!-- 如果要使用组件,直接把组件的名称,以HTML标签的形式,引入到页面中即可 -->
      <mycom1></mycom1>
    </div>
    <script>
      Vue.component("mycom1", {
        template: "<h1>这是全局组件-----{{ msg }}</h1>",
        data: function() {
          return {
            msg: "这是组件的中data定义的数据"
          };
        }
      });

      var vm = new Vue({
        el: "#app",
        data: {},
        methods: {},
        filters: {},
        directives: {}
      });
    </script>
  </body>
</html>

原文地址:https://www.cnblogs.com/21-forever/p/11107675.html

时间: 2024-08-06 10:36:45

Vue学习之组件小结(七)的相关文章

vue学习之组件

vue官方文档中定义组件通过调用Vue.component方法,一般没使用 定义组件 一个组件为一个vue文件,包含template(必须有),script,style三部分 //com.vue<template lang="html"> <div>//只能有一个html标签包裹里面所有节点 child component{{name}} </div> </template> <script> export default{

Vue学习之组件切换及父子组件小结(八)

一.组件切换: 1.v-if与v-else方式: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv=&q

Vue 学习(组件相关)

实现组件三个步骤 组件构造器,Vue.extend(). 这个相当于模板,模板是干什么的呢?理解为 你看到的都是这货渲染出来的,它里面有data,template之类的 注册组件,Vue.component("name",module).这货相当于打标签,上一步创建的,他给命名,第二个参数如果是对象的话,可以省去第一步 挂载组件 注册全局组件 Vue.component("my-component",{ //选项 }) 局部组件 var Child={ templa

vue 学习一 组件生命周期

先上一张vue组件生命周期的流程图 以上就是一个组件完整的生命周期,而在组件处于每个阶段时又会提供一些周期钩子函数以便我们进行一些逻辑操作,而总体来讲 vue的组件共有8个生命周期钩子 beforeCreate 实例创建前 create 实例创建后 beforeMount dom挂载前 mounted dom挂载后 beforeUpdate 数据更新前 updated 数据更新后 beforeDestroy 组件实例销毁前 destroyed 组件实例销毁后 每一个生命周期,vue做的事情不同,

45.VUE学习之--组件之父组件使用scope定义子组件模板样式结构实例讲解

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>--> <script type="text/javascript"

Vue学习之路第七篇:跑马灯项目实现

前面六篇讲解了Vue的一些基础知识,正所谓:学以致用,今天我们将用前六篇的基础知识,来实现类似跑马灯的项目. 学前准备: 需要掌握定时器的两个函数:setInterval和clearInterval以及作用域的概念 上代码,大家可以复制下来直接运行看看效果(vue.min.js 第一篇有下载链接): <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g

Vue学习之vue-resource小结(五)

一.Vue实现数据交互的方式: 1.Vue除了vue-resource之外,还可以使用‘axios’的第三方包实现数据的请求: 2.常见的数据请求类型有: get.post.jsonp 3.JSONP的实现原理: 由于浏览器的安全性限制,不允许AJAX访问,协议不同.域名不同.端口号不同的数据接口,浏览器认为这种访问不安全: 可以通过动态创建script标签的形式,把script标签的src属性,指向数据接口的地址,因为script标签不存在跨域限制,这种数据获取方式,称为JSONP(注意:根据

Vue学习之动画小结(六)

一.Vue中实现动画的方式:https://cn.vuejs.org/v2/guide/transitions.html Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.css 在过渡钩子函数中使用 JavaScript 直接操作 DOM 可以配合使用第三方 JavaScript 动画库,如 Velocity.js 二.使用过渡类名实现动画: <!DOC

## vue学习笔记--简单父子组件--

## vue学习笔记 ### 组件之间的通讯1. 父组件到子组件```js //father <div> <son msg="父组件的信息写在这"></son> <son title="title"></son> <!--:title--> </div> <script> export default { data(){ return { title: '当传递一个变量过