Vue 非单文件组件

这篇具有很好参考价值的文章主要介绍了Vue 非单文件组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

  Vue 非单文件组件的创建与使用。

知识点

  •   组件的定义 :组件是能实现某个功能或具有某种属性的代码和资源集合。
  •   创建非单文件组件需要3个步骤:
    • 创建组件
    • 注册组件
    • 使用组件

创建组件

  使用Vue.extend(options)创建,格式与new Vue时几乎一样,但是这里有两点要注意;

  1. 不需要写el,因为组件是可复用的,不能固定在某一容器内。
  2. data必须写成函数,如果写成对象,这样组件复用时会引用同一个数据,所以只能写成函数形式,不同的组件data数据才会互不干扰。
  3. 如下图创建了2个组件:school 组件和student组件
     1  //创建school组件
     2     const school =Vue.extend({
     3         template:`<div>
     4             <h2>学校:{{schoolName}}</h2>
     5             <h2>地址:{{address}}</h2>
     6             </div>`,
     7         data(){
     8             return{
     9                 schoolName:'城西小学',
    10                 address:'南京市鼓楼区'
    11             }
    12             
    13         }
    14     });
    15     //创建student 组件
    16     const student =Vue.extend({
    17         template:`<div>
    18             <h2>学生:{{studentName}}</h2>
    19             <h2>年龄:{{age}}</h2>
    20             <h2>成绩:{{score}}</h2>
    21             <button @click=add>请点击我,成绩加一</button>
    22             </div>`,
    23         data(){
    24             return{
    25                 studentName:'李在容',
    26                 age:14,
    27                 score:56
    28             }
    29         },
    30         methods:{
    31             add(){
    32                 this.score++;
    33             }
    34         }
    35     });

     文章来源地址https://www.toymoban.com/news/detail-839906.html

注册组件

  • 注册局部组件
    • 在new Vue中使用components选项实现组件局部注册。
    • 如下图,我们在容器root 和root2上注册了相同的局部组件。
      var vm=new Vue(
              {
                  el:'#root',
                  //注册局部组件
                  components:{
                      xuexiao:school,
                      xuesheng:student
                  }
              }
          )
          var vm2=new Vue(
              {
                  el:'#root2',
                  //注册局部组件
                  components:{
                      xuexiao:school,
                      xuesheng:student
                  }
              }
          )

       

  • 注册全局组件
    • 使用Vue.component(组件名,组件)。
    • 如下图, 定义了一个组件,然后注册成全局组件。
       1  //创建hello组件
       2      const hello =Vue.extend({
       3         template:`<div>
       4             hello
       5             </div>`,
       6         data(){
       7             return{
       8                 msg:'我是hi组件',
       9             }
      10         },
      11         methods:{
      12             add(){
      13                 this.score++;
      14             }
      15         }
      16     });
      17     //注册全局组件
      18     Vue.component('hello',hello);

       

使用组件

  • 如下代码: 创建了3个组件student, school , hello组件
  • student 和 school组件被注册成局部组件,hello组件注册成全局组件。
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <div id="root" style="border: 1px solid yellow; margin-top: 50px;">
            <!-- 编写组件标签 -->
            我使用的是局部组件
            <xuexiao></xuexiao>
            <hr>
            <xuesheng></xuesheng>
        </div>
        <div id="root3" style="border: 1px solid rgb(17, 0, 255); margin-top: 50px;">
            使用全局组件
            <hello></hello>
        </div>
        <div id="root2" style="border: 1px solid red; margin-top: 50px;">
            <!-- 编写组件标签 -->
            我使用的是局部组件
            <xuexiao></xuexiao>
            <hr>
            <xuesheng></xuesheng>
        </div>
       
    </body>
    <script type="text/javascript">
        Vue.config.productionTip=false;//阻止Vue在启动时生成生产提示
        //创建school组件
        const school =Vue.extend({
            template:`<div>
                <h2>学校:{{schoolName}}</h2>
                <h2>地址:{{address}}</h2>
                </div>`,
            data(){
                return{
                    schoolName:'城西小学',
                    address:'南京市鼓楼区'
                }
                
            }
        });
        //创建student 组件
        const student =Vue.extend({
            template:`<div>
                <h2>学生:{{studentName}}</h2>
                <h2>年龄:{{age}}</h2>
                <h2>成绩:{{score}}</h2>
                <button @click=add>请点击我,成绩加一</button>
                </div>`,
            data(){
                return{
                    studentName:'李在容',
                    age:14,
                    score:56
                }
            },
            methods:{
                add(){
                    this.score++;
                }
            }
        });
       
        var vm=new Vue(
            {
                el:'#root',
                //注册局部组件
                components:{
                    xuexiao:school,
                    xuesheng:student
                }
            }
        )
        var vm2=new Vue(
            {
                el:'#root2',
                //注册局部组件
                components:{
                    xuexiao:school,
                    xuesheng:student
                }
            }
        )
        var vm3=new Vue(
            {
                el:'#root3',
               
            }
        )
         //创建hello组件
         const hello =Vue.extend({
            template:`<div>
                hello
                </div>`,
            data(){
                return{
                    msg:'我是hi组件',
                }
            },
            methods:{
                add(){
                    this.score++;
                }
            }
        });
        //注册全局组件
        Vue.component('hello',hello);
    </script>
    </html>

     

效果图

  • 使用上面的代码执行后的效果如下
  • 如下图,虽然root和root2使用了相同的组件,但是每个组件互不影响。第一个组件里的年龄是59,第二个组件的年龄是56:

    Vue 非单文件组件

     

     

  

 

到了这里,关于Vue 非单文件组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue2引入Element UI组件去创建新页面的详细步骤

    目录 一、Element UI介绍 Element UI的特点: 二、下载配置Element UI (零)创建vue项目 (一)下载Element UI依赖   (二)全局文件main.js中引入Element UI 三、删除多余的东西  (一)删除App.vue多余的  (二)删除多余的页面  (三)删除router路由多余的  四、新建vue页面 (一)新建

    2024年02月12日
    浏览(30)
  • vue3之vite创建h5项目之2 (sass公共样式、声明组件、路由配置和layout组件 )

    pnpm i -D sass 1-1-1 main.ts 引入公共样式方式 1-3-1 src / style / index.scss ( 适配iphonex等还有引入其他公共的样式 ) 1-3-2 src / style / mixin.scss ( 公共样式方法抽离 ) 1-3-3 src / style / reset.scss ( 重置样式 ) 1-3-4 src / style / variables.scss ( 定义的公共变量样式 ) 1-3-5 使用变量 3-1 路径文件

    2024年02月05日
    浏览(36)
  • vue2引入Element UI组件去创建新的页面的详细步骤

    目录 一、Element UI介绍 Element UI的特点: 二、下载配置Element UI (零)创建vue项目 (一)下载Element UI依赖   (二)全局文件main.js中引入Element UI 三、删除多余的东西  (一)删除App.vue多余的  (二)删除多余的页面  (三)删除router路由多余的  四、新建vue页面 (一)新建

    2024年02月14日
    浏览(25)
  • 基于vscode实现vue3项目创建启动+安装配置路由vue-router实现单页面组件切换

    访问https://nodejs.org/en,点击下载最新版本的nodejs,并安装。 在项目目录文件下,通过cmd运行下述指令。 依次输入下列命令,启动vue项目 在浏览器中加载http://localhost:5173/,页面加载成功,说明vue项目安装启动成功。 建议安装第三方库通过vscode中的终端来操作,项目启动通过

    2024年02月03日
    浏览(46)
  • 【学Vue就跟玩一样】组件-单文件组件

    单文件组件在实际开发中是经常使用的,那么如何创建一个单文件组件呢?那么本篇就来简单入一下单文件组件。 1.切换到你想要创建该文件的目录下,我这里切换的是desktop这个目录,当然,也可以根据自己需要来进行切换该命令为 cd 目录/文件名称 2.打开cmd,输入 npm conf

    2024年01月19日
    浏览(49)
  • vue2引入Element UI组件去创建新页面的详细步骤--项目阶段2

    目录 一、Element UI介绍 Element UI的特点: 二、下载配置Element UI (零)创建vue项目 (一)下载Element UI依赖   (二)全局文件main.js中引入Element UI 三、删除多余的东西  (一)删除App.vue多余的  (二)删除多余的页面  (三)删除router路由多余的  四、新建vue页面 (一)新建

    2024年02月07日
    浏览(37)
  • 【Vue3】3-1 : 章节介绍 - Vue3组件应用及单文件组件

    本书目录:点击进入 一、本章学习目标 二、课程安排 Vue3组件相关概念 掌握组件之间的通信 封装一个可复用的组件 单文件组件SFC: 即.vue文件 = 样式 + 结构 + 逻辑 脚手架的使用和底层实现机制 工程化的认知 组件的概念及组件的 基本使用方式 组件之间 是如何进行互相 通信

    2024年01月19日
    浏览(26)
  • Vue Element upload组件和Iview upload 组件上传文件

    今天要分享的是使用这俩个UI组件库的upload组件分别实现调用组件本身的上传方法实现和后台交互。接下来就是开车的时间,请坐稳扶好~ 一、element upload组件传送门  1、html文件 注意事项: 使用组件本身的上传事件,必须加auto-upload属性设置为false;                 

    2024年02月11日
    浏览(33)
  • Vue|单文件组件与脚手架安装

    [.vue]文件,称为单文件组件,是Vue.js自定义的一种文件格式,一个.vue文件就是一个单独的组件,在文件内封装了组件相关的代码:html、css、js。 .vue文件由三部分组成,其中template存放响应的html代码,style存放响应的css代码,script存放响应的js代码。 在上一小节非单文件组件

    2024年02月12日
    浏览(29)
  • uniapp之通过vue-cli命令行创建Vue3/Vite版,JavaScript开发,引入uni-ui扩展组件

    注意: Vue3/Vite版要求 node 版本^14.18.0 || =16.0.0 如果使用 HBuilderX(3.6.7以下版本)运行 Vue3/Vite 创建的最新的 cli 工程,需要在 HBuilderX 运行配置最底部设置 node路径 为自己本机高版本 node 路径(注意需要重启 HBuilderX 才可以生效) HBuilderX Mac 版本菜单栏左上角 HBuilderX-偏好设置

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包