vue3 组件化开发
组件(Component)是自定义封装代码的功能。在前端开发过程中,经常出现多个网页的功能是重复的,而且很多不同的页面之间,也存在同样的功能。
所以,组件就是一个html网页中的功能,一般就是一个标签,标签中有自己的html内容结构,css样式和js特效。
这样,前端人员就可以在组件化开发时,只需要书写一次代码,随处引入即可使用。
vue的组件有两种:脚本化组件 和 单文件组件。
脚本化组件的组件名:单词小写加横杠。
脚本化组件
全局注册
// 封装一个全局注册的组件 const header_nav ={ data(){ // 组件内部的数据 return { nav_list: ["首页","开放平台", "企业团购", "资质证照", "协议规则", "下载app"], num:0, } }, methods:{ // 组件内部的操作方法 show(nav){ console.log(nav); } }, // 组件的HTML代码 template:` <div class="header"> <ul> <li v-for="nav in nav_list"><a href="" @click.prevent="show(nav)">{{nav}}</a></li> </ul> <button @click="num++">{{num}}</button> </div> `, }
html代码:
<!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"> <title>Title</title> <script src="../js/vue.global.3.2.20.js"></script> <script src="../js/components.js"></script> <style> </style> </head> <body> <div id="app"> <header-nav></header-nav> </div> </body> <script> var vm = Vue.createApp({ data(){ return { } }, methods: { }, }).component("header-nav", header_nav).mount("#app") </script> </html>
局部注册
<!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"> <title>Title</title> <script src="../js/vue.global.3.2.20.js"></script> <script src="../js/components.js"></script> <style> </style> </head> <body> <div id="app"> <header-nav></header-nav> </div> </body> <script> var vm = Vue.createApp({ data(){ return { } }, methods: { }, // 局部注册 components: { "header-nav": header_nav } }).mount("#app") </script> </html>
组件与组件之间,代码隔离,数据隔离。同一个组件被使用多次,实际上是对组件的对象进行了多次实例化,所以本质上在内存就不是同一个对象。因此才会出现数据隔离的情况。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号