首页 > 其他分享 >Vue 非单文件组件(不常用)3步骤(创建、注册、使用)

Vue 非单文件组件(不常用)3步骤(创建、注册、使用)

时间:2023-02-20 22:34:17浏览次数:28  
标签:el Vue 非单 注册 组件 data

Vue中使用组件的三大步骤:

1、定义组件(创建)

2、注册组件

3、使用组件(写组件标签)

一、如何定义一个组件?

使用Vue.extend(options)创建,其中options 和 new Vue(options)时传入的options几乎一样,但也有点区别

区别如下:

(1)el不要写,为什么?---最终所有的组件都要经过一个vm的管理,由vm中的el决定服务哪个容器。

(2)data必须写成函数,为什么?---避免组件被复用时,数据存在引用关系

备注:使用template可以配置组件结构。

二、如何注册组件?

(1)局部注册:new Vue的时候传入components选项

(2)全局注册:靠Vue.component('组件‘,组件)

三、编写组件标签:

<school></school>

非单文件案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script type="text/javascript" src="../js/vue.js"></script>
    <title>非单文件组件</title>
</head>
<body>
    <div id="root">
        <h2 style="background-color: antiquewhite; ">{{msg}}非单文件组件</h2>
        <hr>
        <!--引入组件,编写组件标签-->
        <xuexiao></xuexiao>
        <hr>
        <xuesheng></xuesheng>
        <hr>
        <xuesheng></xuesheng>
    </div>
</body>
<script type="text/javascript">
    Vue.config.productionTip = false;

    //组件作用:复用编码,简化项目编码,提供运行效率

    //(1.1)创建school组件
    const school=Vue.extend({
        // el:"#root",//定义组价时,一定不要写el配置项,因为最终所有的组件都要被一个vm管理,由vm决定服务于哪个容器
        template:`
            <div>
                <h2>学校名:{{schoolName}}!</h2>
                <h2>学校地址:{{address}}!</h2>
                <button @click="showSchoolName">点我提示学校名</button>
            </div>
        `,
        data(){//写成函数式
            return{
                schoolName:"尚硅谷",
                address:"背景昌平",
            }
        },
        methods:{
            showSchoolName(){
                alert(this.schoolName);
            }
        }
    })

    //(1.2)创建学生组件
    const student = Vue.extend({
        template:`
            <div>
                <h2>学生名:{{studentName}}</h2>
                <h2>年龄:{{age}}</h2>    
            </div>
        `,
        data:function(){
            return{
                studentName:"张三",
                age:18,
            }
        }
    })

    //(2.2)全局注册组件
    Vue.component('xuexiao',school)
    Vue.component('xuesheng',student)

    new Vue({
        el:"#root",
        data:{
            msg:"你好啊!"
        },
        //(2.1)局部注册组件
        components:{
            // xuexiao:school,
            // xuesheng:student
        }

    })

</script>
</html>
View Code

结果图(注意:第2个学生组件修改年龄后,第1个学生组件的年龄不会跟着改变,因为data使用了函数式,是创建了一份数据给每个使用的组件):

 

标签:el,Vue,非单,注册,组件,data
From: https://www.cnblogs.com/technicist/p/17139236.html

相关文章

  • Vue-cli
    1.什么是 vue-clivue-cli(俗称:vue 脚手架)是vue官方提供的、快速生成vue工程化项目的工具。特点:①开箱即用,②基于 webpack,③功能丰富且易于扩展,④支持创建v......
  • 组件间通信
    组件其他根组件和组件一些问题 -newVew()--->管理div---》根组件-自己再定义的全局,局部是组件-组件有自己的html,css,js---》数据,事件。。。-在组件中......
  • vue项目
    vue-cli创建项目前端做成项目---》使用工具(vue-cli),创建出vue项目,单页面应用,组件化开发把xx.vue,ts,saa,less---》编译---》在浏览器中执行vue-cli创建项目开发,在......
  • Vue3之v-show不能放置于自定义组件
    控制台警告Runtimedirectiveusedoncomponentwithnon-elementrootnode.Thedirectiveswillnotfunctionasintended.原因意思是自定义指令不能放到组件上,而......
  • vue day06
    上节回顾#1组件使用 -局部-全局#2组件间通信 -一旦组件化开发----》组件间通信-父传子:自定义属性-子传父:自定义事件-ref属性: ......
  • vue项目
    目录1vue-cli创建项目2vue项目目录介绍3es6导入导出语法4小练习-登录功能5scoped1vue-cli创建项目#前端做成项目----》使用工具(vue-cli),创建出vue项目,单......
  • Vue - 7 Vue-cli项目
    Vue-7Vue-cli项目目录1.Vue-cli创建项目(1)下载和安装1.用cnpm替换npm2.cnpm安装vue-cil(2)使用vue-cil创建项目1.新建目录2.使用终端vue-cil创建项目3.使用vue提供的vu......
  • vue_day06 vue-cli基本使用了解
    目录今日内容详细一、vue-cli创建项目二、vue项目目录介绍三、es6导入导出语法1.App.vue,main.js,About.vue写了什么2.导入导出语法3.vue项目编写步骤四、小练习-登录功能1.A......
  • Vue-cli
    Vue-clivue-cli创建项目1.下载node解释器在node官网中下载node解释器,安装时一直下一步就行2.验证node下载完是自动添加环境变量的,可以在cmd中输入node来验证......
  • vue-cli项目01
    今日内容vue-cli创建项目#下载node解释器 -路径:http://nodejs.cn/#使用cnpm来代替npm --g表示装全局-指令:npminstall-gcnpm--registr......