首页 > 其他分享 >vue(vue.js)—组件(1)非单文件组件

vue(vue.js)—组件(1)非单文件组件

时间:2024-10-28 14:43:36浏览次数:4  
标签:vue 非单 header Vue 注册 组件 data

原文连接:vue(vue.js)—组件(1)非单文件组件 – 每天进步一点点

现在流行的前端框架都支持组件化开发,什么是组件呢?试想一个场景,你开发了一个系统,系统中有一个修改密码的功能,点击后弹出一个小窗口,然后修改密码。

系统中一共有5个页面需要用到这个功能,按照以前的做法是把写完的代码复制份,分别放到这5个页面中去,而组件化开发是把修改密码这个功能单独定义成一段代码集合(html/css/js/image等资源),然后对外暴露一个名称,需要用的地方直接把名称拿过来用就可以,你可以把它理解成一个函数,有相应的参数,我们在需要的地方调用这个函数即可。

当然,这个地方需要区别与模块

模块

对外提供特定功能的js程序,一般就是一个js程序

组件(Component):

对外提供要一段特定功能的代码合集,一般包含html,js,css等

1.非单文件组件

什么是非单文件组件,其实就是组件的嵌套,一个组件中包含其他组件。

单文件组件就是只有一个组件。

组件的使用分成三步,1.创建组件 2.注册组件3.使用组件

创建组件

在vuejs中,通过Vue.extend()来创建组件,比如下面这样:

//创建组件,名称叫header const header =Vue.extend({ //el:'#root', //组件不能写el配置项,因为所有的组件都要被一个vm管理。 template:` <div> <h2>公司名称:{{companyName}}</h2> </div> `, //data必须写成函数式 data(){ return { companyName:'百度', address:'北京', } } })

注意一点,我们这里data必须写成函数式,里面存想要输出的变量,可以写多个变量。

注册组件

注册组件分为局部注册和全局注册,先说局部注册,局部注册就是注册到内部,比如下面这样:

new Vue({ el: '#root', data: {   }, //组件 components:{ //注册组件(局部注册) newhead:header,   }

components中就是我们注册的组件,newhead:header 这种写法,冒号前面是对外暴露的组件名称,冒号后面是我们上方定义的组件。这里注意,对外暴露的组件名称有规定:

如果是一个单词,可以是全部小写或者首字母大写

如果是多个单词,推荐单词全小写,中间用横线连起来,比如company-name。或者每个单词的首字母都大写,比如CompanyName,注意这个必须在vue脚手架环境下才能正常使用,vuejs环境下会报错

全局注册就是和const header 同级,比如下面这样:

Vue.components('newheader',header)

使用组件

当我们注册完后,我们就可以使用组件了,这时组件就跟我们的div标签一样,放到页面中就可以了。比如下面这样:

<div id="root"> <newhead></newhead> <div>我是内容1</div> <div>我是内容2</div> <newbottom></newbottom> </div>

这里面, <newhead></newhead>和  <newbottom></newbottom>都是我们创建的组件。

页面效果如下:

我们可以复用多次标签,比如下面这样:

源代码:

<!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"> <title>vue测试</title> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script> </head>   <body>   <div id="root"> <newhead></newhead> <div>我是内容1</div> <div>我是内容2</div> <newbottom></newbottom> <newhead></newhead> <newbottom></newbottom> </div> <script type="text/javascript">   //创建组件,名称叫header const header =Vue.extend({ //el:'#root', //组件不能写el配置项,因为所有的组件都要被一个vm管理。 template:` <div> <h2>公司名称:{{companyName}}</h2> </div> `,   //data必须写成函数式 data(){ return { companyName:'百度', } } })   //创建bottom组件 const bottom = Vue.extend({ template:` <div> <h4>当前时间:{{time}}</h4> </div> `,   data(){ return{ time:new Date() } } })   //全局注册组件 // Vue.components('newheader',header) new Vue({ el: '#root', data: {   }, //组件 components:{ //注册组件(局部注册)b newhead:header, newbottom:bottom } }) </script> </body>   </html>

 

标签:vue,非单,header,Vue,注册,组件,data
From: https://www.cnblogs.com/longkui-site/p/18510593

相关文章

  • vue—组件(2)单文件组件
    原文链接:vue—组件(2)单文件组件–每天进步一点点上一篇文章介绍了vuejs中非单文件组件,这篇文章介绍一下单文件组件。单文件组件需要用到vue脚手架,可以参考前面的文章:vue3.0(1)—项目搭建–每天进步一点点(longkui.site)1.默认组件我们通过脚手架创建了一个vue项目。其......
  • Vue3+TS中的web Worker实战
    在开始使用WebWorkers之前,首先让我们先了解一下什么是WebWorkersWebWorkers是一种在浏览器后台独立于主线程运行的JavaScript线程,它允许在Web应用程序中进行后台和长时间运行的脚本处理,而不会影响用户的界面性能。WebWorkers通过在后台线程中执行JavaScript脚......
  • 1、前端项目创建(vue3 + vite + element-plus)
    vue3+vite+element-plus项目创建:1、npmcreatevite@latestdata-relationship----templatevue2、npminstall  安装依赖3、npmielement-plus 安装element-plus4、修改main.jsimport{createApp}from'vue'importAppfrom'./App.vue'importElemen......
  • 基于nodejs+vue基于手机售后管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于手机售后管理系统的研究,现有研究多集中于售后服务的一般性流程或特定品牌手机售后的部分环节,专门针对一个全面整合多方面功能(如包含用户、服务类型......
  • 基于nodejs+vue基于考研资料分享系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于考研资料分享系统的研究,现有研究主要以考研资料的整合与提供为主,如一些考研资料数据库主要侧重于资料的分类整理与存储,而专门针对考研资料分享系统......
  • 基于nodejs+vue基于开源工作流的自来水业扩报装系统[开题+源码+程序+论文]计算机毕业
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于自来水业扩报装系统的研究,现有研究主要集中在传统的工作流程与管理模式方面,专门针对基于开源工作流构建自来水业扩报装系统的研究较少。在国内外,传......
  • 基于nodejs+vue基于酒店管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于酒店管理系统的研究,现有研究主要以酒店整体运营管理为主,专门针对包含会员等级、多种特色服务(如叫车、叫醒等)的综合性酒店管理系统的研究较少。在国......
  • webpack打包js代码(ES6->ES5)和vue文件
    为什么需要babel?Babel命令行使用Babel插件的使用Babel的预设presetbabel-loaderbabel-preset编写App.vue代码App.vue的打包过程@vue/compiler-sfcresolve模块解析确实文件还是文件夹extensions和alias配置......
  • 基于nodejs+vue基于和vue的酒吧运营系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景在当今数字化时代,酒吧运营管理面临着诸多挑战与机遇。关于酒吧运营管理系统的研究,现有研究主要以传统管理模式或单一功能模块为主,专门针对将Vue技术应用......
  • 基于nodejs+vue基于工作流的会议和督办管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于会议和督办管理系统的研究,现有研究多集中在传统的管理模式和简单的信息化实现方面。专门针对基于工作流技术来构建完整的会议和督办管理系统的研究......