当前位置: 首页 > news >正文

推广网站加盟低价网站建设推广优化

推广网站加盟,低价网站建设推广优化,怀化网络营销,网站定位的核心意义Vue CLI安装和使用 全局安装最新vue3 npm install vue/cli -g升级Vue CLI#xff1a; 如果是比较旧的版本#xff0c;可以通过下面命令来升级 npm update vue/cli -g通过脚手架创建项目 vue create 01_product_demoVue3父子组件的通信 父传子 父组件 template…Vue CLI安装和使用 全局安装最新vue3 npm install vue/cli -g升级Vue CLI 如果是比较旧的版本可以通过下面命令来升级 npm update vue/cli -g通过脚手架创建项目 vue create 01_product_demoVue3父子组件的通信 父传子 父组件 templatedivdiv classitem v-for(item,index) in user_list :keyindexuser-component :nameitem.name :ageitem.age/user-component/div/div /templatescriptimport UserComponent from ./components/UserComponentexport default {components:{UserComponent},data(){return {user_list:[{name:why,age:18},{name:zhang,age:26},]}}} /scriptstyle scoped/style子组件 UserComponent.vue templatedivdiv名字{{ name }}/divdiv年龄{{ age }}/div/div /templatescriptexport default {props:{name:{type:String,default:},age:{type:Number,default:0},// 对象类型friend:{type:Object,default:()({name:james})},// 数组类型hobbies:{type:Array,default:()[篮球,rap,唱跳]}}} /scriptstyle scoped/style子传父 父组件 templatedivdiv{{ counter }}/divJiaComponent jiajia/JiaComponent JianComponent jianjian/JianComponent /div /templatescriptimport JiaComponent from ./JiaComponentimport JianComponent from ./JianComponentexport default {components:{JiaComponent,JianComponent},data(){return {counter:1}},methods:{jian:function(data){this.counter this.counter - data;},jia:function(data){this.counter this.counter data;}}} /scriptstyle scoped/style**子组件1 JiaComponent.vue ** templatedivdivbutton clickjia(1)1/buttonbutton clickjia(5)5/buttonbutton clickjia(10)10/button/div/div /templatescriptexport default {emits:[jia], // 使用的时候会有提醒// emits:{// // 验证// jia:function(data){// if(data 5){// return true// }// return false// }// },methods:{jia(data){this.$emit(jia,data);}}} /scriptstyle scoped/style** 子组件2 JianComponent.vue ** templatedivdivbutton clickjian(1)-1/buttonbutton clickjian(5)-5/buttonbutton clickjian(10)-10/button/div/div /templatescriptexport default {methods:{jian(data){this.$emit(jian,data);}}} /scriptstyle scoped/style插槽基本使用 父组件 templatedivTitleComponents title标题 desc描述描述描述描述描述/TitleComponents !-- 1.插入button --TitleComponents title标题 desc描述描述描述描述描述button按钮/button/TitleComponents!-- 2.插入a链接 --TitleComponents title标题 desc描述描述描述描述描述a hrefhttps://www.baidu.com百度一下/a/TitleComponents!-- 3.插入image --TitleComponents title标题 desc描述描述描述描述描述img srchttps://gimg3.baidu.com/search/srchttp%3A%2F%2Fpics6.baidu.com%2Ffeed%2F34fae6cd7b899e512cb62692d10fdf3ec9950db4.jpeg%40f_auto%3Ftoken%3D8ce9dbae74003846c318068640c41183referhttp%3A%2F%2Fwww.baidu.comapp2021sizef360,240n0g0nq75fmtauto?sec1698944400te504855a1a7b815dfa76940bb9ac2a07 //TitleComponents!-- 4. 默认显示 --TitleComponents title标题 desc描述描述描述描述描述/TitleComponents /div /templatescript import TitleComponents from ./TitleComponents.vueexport default {components:{TitleComponents}} /scriptstyle scoped/style子组件 TitleComponents.vue templatedivh1{{ title }}/h1div{{ desc }}/divslotdiv这里是默认内容/div/slot/div /templatescriptexport default {props:{title:{type:String,default:默认标题},desc:{type:String,default:}}} /scriptstyle scoped/style插槽_具名插槽 父组件 templatedivNavComponenttemplate v-slot:leftbutton返回/button/templatetemplate v-slot:center首页/templatetemplate v-slot:righta href# 登录/a/template/NavComponentNavComponenttemplate v-slot:[position]button返回/button/template/NavComponentbutton clickposition left左边/buttonbutton clickposition center中间/buttonbutton clickposition right右边/button/div /templatescriptimport NavComponent from ./NavComponent.vue;export default {components:{NavComponent},data(){return {position:left}}} /scriptstyle scoped/style**子组件 NavComponent.vue ** templatedivdiv styledisplay: flex;flex-direction: row;height: 100px;div classleft slot nameleft左边/slot /divdiv classcenter slot namecenter中间/slot /divdiv classrightslot nameright右边/slot/div/div/div /templatescriptexport default {} /scriptstyle scoped.left{width:30%;background-color: aqua;}.center{width: 40%;background-color: bisque;}.right{width: 30%;background-color: blueviolet;} /style组件插槽_作用域插槽 父组件 templatedivNavComponet :nav_listnav_listtemplate v-slot:defaultporps_val{{ porps_val.item }}---{{ porps_val.abc }}/template/NavComponet!-- --hrNavComponet :nav_listnav_listtemplate #defaultporps_vala href#{{ porps_val.item }}---{{ porps_val.abc }}/a/template/NavComponet/div /templatescriptimport NavComponet from ./NavComponet.vueexport default {components:{NavComponet},data(){return {nav_list:[{id:1,title:标题1},{id:1,title:标题2},{id:1,title:标题3},]}}} /scriptstyle scoped/style子组件 NavComponet.vue templatedivdiv classnavdiv v-for(item,index) in nav_list :keyindex classnav_itemdiv{{ item.title }}/divslot :itemitem.title abccbadiv{{ item.title }}/div/slot/div/div/div /templatescriptexport default {props:{nav_list:{type:Array,default:(){return [{id:1,title:衣服},{id:1,title:食物},{id:1,title:玩具},];}}},data(){return {}}} /scriptstyle scoped.nav{display: flex;flex-direction: row;}.nav_item{flex:1;} /styleProvide和Inject App.vue templatediv classapphome-component/home-componenth2app:{{ message }}/h2button clickmessage hello world改变message/button/div /templatescriptimport { computed } from vueimport HomeComponent from ./HomeComponent.vueexport default {components:{HomeComponent},data(){return {message:Hello App}},provide(){return {name:why,age:18,message:computed((){return this.message}) }}} /scriptstyle scoped/style**子组件 HomeBanner.vue ** templatedivh2HomeBanner:{{ name }} - {{ age }} - {{ message }}/h2/div /templatescriptexport default {inject:[name,age,message]} /scriptstyle scoped/style孙组件 HomeComponent.vue templatedivhome-banner/home-banner/div /templatescriptimport HomeBanner from ./HomeBanner.vue;export default {components:{HomeBanner},data(){return {}}} /scriptstyle scoped/style事件总线的使用 App.vue templatediv classapp!-- 安装状态管理库 npm install hy-event-store --!-- Mitt事件状态略 --HomeCon/HomeCon h2{{ message }}/h2button clickshow_cate_gory !show_cate_gory是否显示cate_gory/buttoncate-gory v-ifshow_cate_gory/cate-gory/div /templatescriptimport eventBus from ./utils/event.bus;import HomeCon from ./HomeCon.vueimport CateGory from ./CateGory.vueexport default {components:{HomeCon,CateGory},data(){return {message:hello vue,show_cate_gory:true}},created(){// 事件监听eventBus.on(whyEvent,(name,age,height){console.log(whyEvent事件在app中的监听,name,age,height)this.message name:${name},age:${age},height:${height}})}} /scriptstyle scoped/style** 子组件 CateGory.vue** templatedivh2Category/h2/div /templatescriptimport eventBus from ./utils/event.bus.jsexport default {methods:{whyEventHandler(){console.log(whyEvent在category中监听)}},created(){eventBus.on(whyEvent,this.whyEventHandler)},unmounted(){console.log(category umounted)eventBus.off(whyEvent,this.whyEventHandler)}} /scriptstyle scoped/style**子组件 HomeBanner.vue ** templatedivbutton clickbannerBtnClickbanner按钮/button/div /templatescriptimport eventBus from ./utils/event.bus;export default {methods:{bannerBtnClick(){console.log(bannerBtnClick)eventBus.emit(whyEvent,why,18,1.88)}}} /scriptstyle scoped/style** 子组件 HomeCon.vue** templatedivhome-banner/home-banner/div /templatescriptimport HomeBanner from ./HomeBanner.vue;export default {components:{HomeBanner},data(){return {}}} /scriptstyle scoped/style事件总线 event.bus.js import { HYEventBus } from hy-event-storeconst eventBus new HYEventBus()export default eventBus生命周期函数演练 App.vue templatedivh2{{ message }}---{{ counter }}/h2button clickmessage hello world 修改message/buttonbutton clickcounter1/buttonbutton clickshowHome !showHome隐藏home/buttonhome-com v-ifshowHome/home-com/div /templatescriptimport HomeCom from ./HomeCom.vueexport default {components:{HomeCom},data(){return {message:hello vue,counter:1,showHome:true}},// 1.组件创建之前beforeCreate(){console.log(beforeCreate)},// 2.组件被创建完成created(){console.log(组件被创建完成created)console.log(1.发送网络请求请求数据)console.log(2.监听eventbus事件)console.log(3.监听watch数据)},// 3. 组件template准备被挂在beforeMount(){console.log(beforeMount)},// 4.组件template被挂载虚拟dom》真实dommounted(){console.log(mounted)console.log(1.获取DOM)console.log(2.使用DOM)},// 5.数据发生改变// 5.1 准备更新DOMbeforeUpdate(){console.log(beforeUpdate)},// 5.2 更新DOMupdated(){console.log(updated)},// 6.卸载Vnode-》DOM原生// 6.1 卸载之前beforeUnmount(){console.log(beforeUnmount)},// 6.2 DOM元素被卸载完成unmounted(){console.log(unmounted)}} /scriptstyle scoped/style子组件 HomeCom.vue templatedivHome/div /templatescriptexport default {unmounted(){console.log(unmounted home)},beforeUnmount(){console.log(beforeUnmout home)}} /scriptstyle scoped/styleref获取元素组件 App.vue templatedivh2 reftitle classtitle :style{color:titleColor}{{ message }}/h2button refbtn clickchangeTitle修改title/buttonBannerCom refbanner/BannerComBannerCom refbanner/BannerComBannerCom refbanner/BannerComBannerCom refbanner/BannerComBannerCom refbanner/BannerCom/div /templatescriptimport BannerCom from ./BannerCom.vue;export default {components:{BannerCom},data(){return {message:hello world,titleColor:red}},methods:{changeTitle(){// 1.不要主动去获取DOM并且修改DOM内容this.message 你好啊世界this.titleColor blue// 2.获取h2/button元素console.log(this.$refs.title)console.log(this.$refs.btn)// 3.获取banner组件组件实例console.log(this.$refs.banner)// 3.1在父组件中可以主动的调用子组件的方法this.$refs.banner.bannerClick()// 3.2 获取banner组件实例获取banner中的元素console.log(this.$refs.banner.$el)// 3.3 如果banner template是多个根拿到的是一个node节点console.log(this.$refs.banner.$el.nextElementSibling)// 第二个node节点console.log(this.$refs.banner.$el.previousElementSibling)// 4.组件实例了解console.log(this.$parent); // 父组件console.log(this.$root); //根组件}}} /scriptstyle scoped/style**子组件 BannerCom.vue ** templatediv classbannerBanner/divdiv classbanner2/div /templatescriptexport default {methods:{bannerClick(){console.log(bannerClick)}}} /scriptstyle scoped/style内置组件的使用 App.vue templatedivbutton v-for(item,index) in tab_arr :styledefault_tab item ? color:red; : :keyindex clickshow_tab(item){{ item }}/button!-- 第一中方法 --!-- div v-ifdefault_tabhomeHomeCom/HomeCom/divdiv v-ifdefault_tababoutAboutCom/AboutCom/divdiv v-ifdefault_tabcategoryCategoryCom/CategoryCom/div --!-- 第二种方式 --component namekb age20 homebtnhomebtn :isdefault_tab/component/div /templatescriptimport HomeCom from ./views/HomeCom.vueimport AboutCom from ./views/AboutCom.vueimport CategoryCom from ./views/CategoryCom.vueexport default {components:{HomeCom,AboutCom,CategoryCom},data(){return {tab_arr:[HomeCom,AboutCom,CategoryCom],default_tab:HomeCom}},methods:{show_tab(item){this.default_tab item},homebtn(eve){console.log(homebtn,eve)}}} /scriptstyle scoped/style** 子组件 AboutCom.vue** templatedivabout组件/div /templatescriptexport default {} /scriptstyle scoped/style子组件 CategoryCom.vue templatedivcategory组件/div /templatescriptexport default {} /scriptstyle scoped/style子组件 HomeCom.vue templatedivhome组件{{ name }} --- {{ age }}button clickhomebtnhomebtn/button/div /templatescriptexport default {data(){return {}},props:{name:{type:String,default:why},age:{type:String,default:18}},emits:[homebtn],methods:{homebtn(){this.$emit(homebtn,home)}}} /scriptstyle scoped/styleKeep-Alive的使用-分包 App.vue templatedivbutton v-for(item,index) in tab_arr :styledefault_tab item ? color:red; : :keyindex clickshow_tab(item){{ item }}/button!-- 第一中方法 --!-- div v-ifdefault_tabhomeHomeCom/HomeCom/divdiv v-ifdefault_tababoutAboutCom/AboutCom/divdiv v-ifdefault_tabcategoryCategoryCom/CategoryCom/div --!-- 第二种方式 --KeepAlive includeHomeCom,AboutComcomponent :isdefault_tab/component/KeepAlive/div /templatescript import { defineAsyncComponent } from vueimport HomeCom from ./views/HomeCom.vueimport AboutCom from ./views/AboutCom.vue // import CategoryCom from ./views/CategoryCom.vueconst AsyncCategory defineAsyncComponent(()import(./views/CategoryCom.vue))export default {components:{HomeCom,AboutCom,CategoryCom:AsyncCategory},data(){return {tab_arr:[HomeCom,AboutCom,CategoryCom],default_tab:HomeCom}},methods:{show_tab(item){this.default_tab item},homebtn(eve){console.log(homebtn,eve)}}} /scriptstyle scoped/style子组件 AboutCom.vue templatedivabout组件/div /templatescriptexport default {name:AboutCom,created(){console.log(about created)},unmounted(){console.log(about unmounted)},} /scriptstyle scoped/style**子组件 CategoryCom.vue ** templatedivcategory组件/div /templatescriptexport default {created(){console.log(category created)},unmounted(){console.log(category unmounted)},} /scriptstyle scoped/style子组件 HomeCom.vue templatedivhome组件div计数{{ counter }}/divbutton clickjia加1/button/div /templatescriptexport default {name:HomeCom,data(){return {counter:0}},created(){console.log(home created)},unmounted(){console.log(home unmounted)},// 对于保持keep-alive组件监听有没有进行切换// keep-alive组件进入活跃状态activated(){console.log(home activated)},deactivated(){console.log(home deactivated)}, methods:{jia:function(){this.counter;}}} /scriptstyle scoped/style组件的v-model App.vue templatediv classapp!-- 1.input v-model --!-- input typetext v-modelmessage --!-- input typetext :valuemessage inputmessage $event.target.value --!-- CounterCom :modelValueappCounter update:modelValueappCounter $event/CounterCom --!-- CounterCom v-modelappCounter/CounterCom --CounterCom2 v-model:counterappCounter v-model:whywhy/CounterCom2/div /templatescriptimport CounterCom2 from ./CounterCom2.vueexport default {components:{CounterCom2},data(){return {message:hello,appCounter:100,why:coderwhy}}} /scriptstyle scoped/style**子组件 CounterCom.vue ** templatedivcounterdivmodelValue:{{ modelValue }}/divbutton clickchangeCounter修改counter/button/div /templatescriptexport default {props:{modelValue:{type:String,default:}},emits:[update:modelValue],methods:{changeCounter(){this.$emit(update:modelValue,999999)}}} /scriptstyle scoped/style子组件 CounterCom2.vue templatedivdivcounter:{{ counter }}/divbutton clickchangeCounter修改counter/buttondivwhy:{{ why }}/divbutton clickchangeWhy修改why的值/button/div /templatescriptexport default {props:{counter:{type:String,default:},why:{type:String,default:}},emits:[update:counter,update:why],methods:{changeCounter(){ this.$emit(update:counter,999999)},changeWhy(){this.$emit(update:why,kobi)}}} /scriptstyle scoped/style组件的混入Mixin message-mixin.js export default {data(){return {message:Hello World}},created(){console.log(message:,this.message)} }**App.vue ** templatedivHomeCon/HomeConAboutCon/AboutConCatetoryCon/CatetoryCon/div /templatescriptimport HomeCon from ./views/HomeCon.vueimport AboutCon from ./views/AboutCon.vueimport CatetoryCon from ./views/CatetoryCon.vueexport default {components:{HomeCon,AboutCon,CatetoryCon}} /scriptstyle scoped/style子组件 AboutCon.vue templatedivh2AboutCon组件/h2/div /templatescript import messageMixin from ../mixins/message-mixinexport default {mixins:[messageMixin]} /scriptstyle scoped/style子组件 CatetoryCon.vue templatedivh2CatetoryCon组件/h2/div /templatescript import messageMixin from ../mixins/message-mixinexport default {mixins:[messageMixin]} /scriptstyle scoped/style子组件 HomeCon.vue templatedivh2HomeCon组件/h2/div /templatescript import messageMixin from ../mixins/message-mixinexport default {mixins:[messageMixin]} /scriptstyle scoped/style感谢观看我们下次再见
http://www.ho-use.cn/article/10822826.html

相关文章:

  • 做网站的意义制作个人网站怎么制作
  • 做公司网站需要多少钱建立网站容量
  • 门源县电子商务网站建设公司网站备案资料申请
  • 怎样做品牌推广网站网站图片一般多大
  • 仿站定制模板建站一个人在线观看视频播放免费
  • 建设网站用户名是什么意思广州注册公司挂地址费用
  • 如何搭建自己的网站服务器地址重庆网站怎么设置
  • 北京网站建设yi wl德阳市建设局网站地址
  • 网站seo诊断报告新手用jsp做网站
  • 网站建设佰首选金手指十八规划和布局营销型网站的四大重点
  • 石家庄英文网站建设长沙网络公关公司
  • 快速申请免费个人网站网站注册系统
  • 网站和h5网页设计培训点
  • 免费 成品模板网站郑州建设网站定制
  • 猎头公司网站建设方案濮阳是哪里
  • 如何做网站价格策略青海省西宁市住房城乡建设厅网站
  • 网站建设张景鹏兰州最好的互联网公司
  • 萍乡手机网站建设广告优化师发展前景
  • 任房保障和城乡建设局网站莆田网站制作企业
  • 网站备案费用银河麒麟软件下载网站
  • 图库素材网站模板北京ui网页设计素材
  • 哈密建设厅网站wordpress打开文章很慢
  • 太原网站建设技术托管中国建筑集团有限公司有几个局
  • 哈尔滨手机网站制作计算机网络技术专业
  • 上传网站步骤wordpress怎么改登陆不了
  • 松江网站制作无锡免费做网站
  • 如何建设物流网站网站开发和浏览器兼容问题
  • 深圳网站建设网络wordpress content widgets
  • 网站建设公司好哪家好定西市小企业网站建设
  • 石家庄网站建设找汉狮做直播网站找哪个网站好