首页 > 编程语言 >23-Vue组件化编程-非单文件组件和单文件组件

23-Vue组件化编程-非单文件组件和单文件组件

时间:2023-10-14 23:01:00浏览次数:31  
标签:文件 school Vue name schoolName address 组件

非单文件组件

一个文件中包含有n个组件

 

Vue中使用组件的三大步骤

1. 定义组件(也就是创建组件)

2. 注册组件(这里有局部注册和全局注册)

3. 使用组件(编写组件标签)

 

注册组件(局部注册)

靠new Vue的时候传入components选项

<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>基本使用</title>
    <script type="text/javascript" src="../js/vue.js"></script>
  </head>
  <body>
    <!--准备好一个容器-->
    <div id="root">
      <!--<h2>学校名称:{{schoolName}}</h2>-->
      <!--<h2>学校名称:{{address}}</h2>-->
      <!--第三步:编写学校组件标签-->
      <xuexiao></xuexiao>
      <hr>
      <!--<h2>学生姓名:{{studentName}}</h2>-->
      <!--<h2>学生年龄:{{age}}</h2>-->
      <!--第三步:编写学生组件标签-->
      <xuesheng></xuesheng>
    </div>

    <script type="text/javascript">
      // 阻止 vue 在启动时生成生产提示
      Vue.config.productionTip = false

      // 第一步:创建school组件
      const school = Vue.extend({
        // 这里需要注意,组件定义时一定不要写el配置项,因为最终所有的组件都要被一个vm管理,由vm决定服务于哪一个容器
        // el:"#root",

        template:'<div>' +
                '<h2>学校名称:{{schoolName}}</h2>' +
                '<h2>学校名称:{{address}}</h2>' +
                '</div>',

        // 在组件的使用中,data必须使用以下的函数式写法,否则会报错
        data(){
          return {
            schoolName:"东华理工大学",
            address:"江西南昌"
          }
        }
      })

      // 第一步:创建student组件
      const student = Vue.extend({

        template:'<div>' +
                '<h2>学生姓名:{{studentName}}</h2>' +
                '<h2>学生年龄:{{age}}</h2>' +
                '</div>',

        data(){
          return {
            studentName:"马铃薯",
            age:26
          }
        }
      })

      // 创建vm
      new Vue({
        el:"#root",

        // data(){
        //   return{
        //     schoolName:"东华理工大学",
        //     address:"江西南昌",
        //     studentName:"马铃薯",
        //     age:26
        //   }
        // }

        // 第二步:注册组件(局部注册)
        components:{
          xuexiao:school,
          xuesheng:student
        }
      })

    </script>
  </body>
</html>

注册组件(全局注册)

靠Vue.component("组件名",组件)

<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>基本使用</title>
    <script type="text/javascript" src="../js/vue.js"></script>
  </head>
  <body>
    <!--准备好一个容器-->
    <div id="root">
      <!--第三步:编写hello组件标签-->
      <hello></hello>
    </div>

    <script type="text/javascript">
      // 阻止 vue 在启动时生成生产提示
      Vue.config.productionTip = false

      // 第一步:创建hello组件
      const hello = Vue.extend({
        // 这里需要注意,组件定义时一定不要写el配置项,因为最终所有的组件都要被一个vm管理,由vm决定服务于哪一个容器
        // el:"#root",

        template:'<div>' +
                '<h2>你好啊,{{name}}</h2>' +
                '</div>',

        // 在组件的使用中,data必须使用以下的函数式写法,否则会报错
        data(){
          return {
            name:"好久不见!"
          }
        }
      })

      // 第二步:注册组件(全局注册)
      Vue.component("hello",hello)

      // 创建vm
      new Vue({
        el:"#root",
      })

    </script>
  </body>
</html>

组件名的注意事项

一个单词组成:

1)第一种写法(首字母小写):school

2)第二种写法(首字母大写):School

多个单词组成:

1)第一种写法(kebab-case命名):my-school

2)第二种写法(CamelCase命名):MySchool(这里需要Vue脚手架支持)

备注:

1)组件名尽可能回避HTML中已有的元素名称,例如:h2、H2都不行

2)可以使用name配置项指定组件在开发者工具中呈现的名字

<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>几个注意点</title>
    <script type="text/javascript" src="../js/vue.js"></script>
  </head>
  <body>
    <!--准备好一个容器-->
    <div id="root">
      <h1>{{msg}}</h1>
      <!--第三步:使用组件标签-->
      <!--<School></School>-->
      <my-school></my-school>
    </div>

    <script type="text/javascript">
      // 阻止 vue 在启动时生成生产提示
      Vue.config.productionTip = false

      // 第一步:创建组件
      const school = Vue.extend({
        // 可以使用name配置项,指定组件在开发者工具中呈现的名字
        // 也就是说,只要使用了name配置项,不管注册组件时使用的名字是什么,组件在开发者工具中的名字都为Malingshu
        name:"malingshu",
        
        template:"<div>" +
                "<h2>学校名称:{{schoolName}}</h2>" +
                "<h2>学校地址:{{address}}</h2>" +
                "</div>",

        data(){
          return{
            schoolName:"东华理工大学",
            address:"江西南昌"
          }
        }
      })

      new Vue({
        el:"#root",
        data(){
          return{
            msg:"欢迎来到马铃薯的学习空间!"
          }
        },
        // 第二步:注册组件(局部注册)
        components:{
          // School:school,
          "my-school":school  // 组件在开发者工具中的名字为 MySchool
        }
      })

    </script>
  </body>
</html>

  

组件标签的注意事项

1)第一种写法:<school></school>

2)第二种写法:< school/> (这里需要Vue脚手架支持)

备注:

不实用脚手架时,<school/>会导致后续组件不能渲染

 

一个简写方式

const school = Vue.extend(options) 可简写为:const school = options

这是因为父组件components引入的时候会自动创建

// 创建组件
const school = Vue.extend({
    // 可以使用name配置项,指定组件在开发者工具中呈现的名字
    // 也就是说,只要使用了name配置项,不管注册组件时使用的名字是什么,组件在开发者工具中的名字都为Malingshu
    name:"malingshu",
    
    template:"<div>" +
            "<h2>学校名称:{{schoolName}}</h2>" +
            "<h2>学校地址:{{address}}</h2>" +
            "</div>",
    
    data(){
      return{
        schoolName:"东华理工大学",
        address:"江西南昌"
      }
    }
})

// 简写
const school2 = {
    // 可以使用name配置项,指定组件在开发者工具中呈现的名字
    // 也就是说,只要使用了name配置项,不管注册组件时使用的名字是什么,组件在开发者工具中的名字都为Malingshu
    name:"malingshu",
    
    template:"<div>" +
            "<h2>学校名称:{{schoolName}}</h2>" +
            "<h2>学校地址:{{address}}</h2>" +
            "</div>",
    
    data(){
      return{
        schoolName:"东华理工大学",
        address:"江西南昌"
      }
    }
}

 

 

 

 

单文件组件

一个文件中只包含有1个组件

 

标签:文件,school,Vue,name,schoolName,address,组件
From: https://www.cnblogs.com/REN-Murphy/p/17764500.html

相关文章

  • Javascript、axios、vue基础命令快速学习
    1.js:JavaScript基础学习JavaScript基础学习简单案例1.点击img1,则展示img1图片默认,点击img2则展示img2图片2.输入框鼠标聚焦onfocus后,显示小写toLowerCase(),失去焦点onblur后显示大写toUpperCase()3.点击全选按钮,所有复选框为被选中状态,点击反选则取消勾选状态JavaScrip......
  • 轻松掌握组件启动之MongoDB:快速入门、Linux安装和Docker配置指南
    引言我们将继续深入研究组件启动专题。在之前的文章中,我们已经详细介绍了Redis的各种配置使用方法,为读者提供了全面的指导。然而,今天我们将转向另一个备受关注的数据库——MongoDB。MongoDB是一种流行的NoSQL数据库,具有强大的灵活性和可扩展性。在这篇文章中,我们将探索MongoDB的......
  • OnTheSSH使用技巧(六)修改文件属性
    OnTheSSh提供了图形化的文件属性修改功能。在远端主机管理界面中,鼠标右键点击列表中的文件或目录:  ......
  • 金蝶EAS myUploadFile任意文件上传漏洞
    漏洞简介金蝶EAS及EASCloud是金蝶软件公司推出的一套企业级应用软件套件,旨在帮助企业实现全面的管理和业务流程优化。金蝶EAS及EAScloud存在任意文件上传漏洞影响版本金蝶EAS8.0,8.1,8.2,8.5金蝶EASCloud8.6私有云,8.6公有云,8.6.1,8.8漏洞复现fofa语法:app="Kingdee-EA......
  • Linux常见配置文件总结
    /etc/passwd:这个文件包含了系统上的用户账户信息,如用户名、用户ID、用户所属组ID、用户主目录等。/etc/shadow:该文件存储了用户账户的密码哈希值和其他安全相关设置,只有root用户及授权用户可以访问。/etc/group:该文件记录了用户组的信息,包括组名、组ID和组成员。/etc/hosts:这个文件......
  • Vue3 + Quasar系列-代码配置以及报错汇总记录(不断更新中)
    1.Vue3+Quasar系列-代码配置打包去掉hash后缀去掉hashhttps://quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa2.Vue3+Quasar改变主题背景quasar的样式和其他的框架修改不太一样,需要我们使用动态的方式来进行变更,一般来说有两种方案进行主题修改方案一:......
  • 【科研01】【代码复现】TransUnet-文件目录安排
    目录1.信息TransUnet1.1.时间opentime1.2.链接Linkgithub1.3.应用Use2.自用TransUnet2.1.目录Tree2.2.修改Change1.信息TransUnet1.1.时间opentime20211.2.链接Linkgithubhttps://github.com/Beckschen/TransUNet1.3.应用Use  本是应用于......
  • Vue3| Pinia 持久化插件
    对vuex或Pinia里面的内容做本地持久化1.安装插件:npmipinia-plugin-persistedstate2.将插件添加到pinia实例上①main.js里导入持久化插件:importpiniaPluginPersistedstatefrom'pinia-plugin-persistedstate'② app.use(pinia.use(piniaPluginPersistedstate))......
  • 手撕Vue-提取元素到内存
    接着上一篇文章,我们已经实现了构建Vue实例的过程,接下来我们要实现的是提取元素到内存。主要是通过文档碎片来实现,文档碎片是一个轻量级的文档,可以包含和控制节点,但是不会像真实的DOM那样占用内存,所以我们可以通过文档碎片来提高性能。大致的思路是这样的:创建一个空的文档碎片......
  • 用友NC_download文件读取漏洞
    漏洞简介用友NC的download文件存在任意文件读取漏洞,攻击者可以利用该漏洞读取服务器上的敏感文件。漏洞复现fofa语法:app="用友-UFIDA-NC"POC:/portal/pt/xml/file/download?pageId=login&filename=..%5Cindex.jspnuclei批量yaml文件id:yonyouNC_download_filereadinfo:......