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

网站建设重庆最加科技整站优化哪家专业

网站建设重庆最加科技,整站优化哪家专业,百度排名规则,贵阳景观设计公司3 组件基础#xff08;上#xff09; 摘要 ​ 在本文中#xff0c;我们将学习什么是SPA#xff0c;以及Vue中组件的基本使用。 声明#xff1a;为了文章的清爽性#xff0c;在文章内部的代码演示中只会附上部分演示代码#xff0c;main.js文件的代码通常不贴出#xff…3 组件基础上 摘要 ​ 在本文中我们将学习什么是SPA以及Vue中组件的基本使用。 声明为了文章的清爽性在文章内部的代码演示中只会附上部分演示代码main.js文件的代码通常不贴出如果感兴趣可以前往代码仓库获取 作者来自ArimaMisaki创作 文章目录3 组件基础上3.1 SPA3.1.1 单页面应用程序3.1.2 创建工程化的SPA项目3.1.3 Vite创建项目3.1.4 Vite基本使用3.2 组件3.2.1 组件化开发3.2.2 组件结构3.2.3 组件注册3.2.4 注册组件时名称的大小写3.2.5 通过name属性注册组件3.2.6 组件冲突的解决3.2.7 样式穿透3.2.8 props3.2.9 动态绑定HTML的class3.1 SPA 3.1.1 单页面应用程序 说明单页面应用程序Single Page Application简称SPA即在Web网站中只有唯一的一个HTML页面所有功能与交互都在一个页面内完成。 特点所有功能局限于一个页面中这就意味着如果想要做出切换页面的效果就需要通过JS来动态变化HTML的内容做出一种切换页面的假象。 优点 良好用户体验良好的前后端工作分离减轻服务器压力 缺点 首屏加载慢不利于SEO搜索引擎优化但可以使用SSR服务器端渲染 3.1.2 创建工程化的SPA项目 说明Vue官方提供了两种快速创建工程化SPA项目的方式即Vite和Vue-cli。 区别 3.1.3 Vite创建项目 创建项目 运行npm init vite-app进入项目npm i安装所有依赖包npm run dev可执行脚本启动项目 项目结构 运行流程通过main.js将App.vue渲染到index.html的指定区域中。 3.1.4 Vite基本使用 说明按照运行流程我们应该做如下的几件事 在vue文件中编写模板结构模板上采用html语法书写用template标签括起在index.html中预留一块区域给vue模板。常用div并且用id指明模板名称如app在main.js中关联模板和html书写如下 //1 按需导入createApp函数 import { createApp } from vue;//2 导入组件 import App from ./App.vue;// 3 调用createApp函数创建SPA应用实例 const app createApp(App);// 4 调用mount()把APP组件的模板结构渲染到指定的el区域中这里我们渲染到index.html标签id为app的元素中 app.mount(#app);3.2 组件 3.2.1 组件化开发 说明从宏观来看我们可以把可复用的结构封装为组件然后在index.html上进行多次使用。从而方便项目的开发和维护。 vue组件化vue是一个完全支持组件化开发的框架vue中规定组件的后缀名为.vue。 vue组件结构vue的组件可以由三个节点组成 template相当于html是组件的模板结构script组件的js行为style组件的样式 3.2.2 组件结构 template在vue3.x版本中可以在该模板定义多个根节点但在vue2.x版本中仅支持定义一个根节点。 script可以在script中定义行为并且通过ES6模块化暴露语法export default来暴露模板中的内容除此之外还可以定义一些属性来为组件提供功能性辅助。 name键值对形式用于指定模板名称名称建议首字母大写。data函数形式用于渲染模板的数据需要采用return返回一个对象的形式来返回模板所需的数据methods对象形式对象中的每个属性都是一个方法。 style可以编写组件的样式其中可以通过添加标签属性lang来指定style采用什么语言编写样式langcss则采用css方式这也是默认方式langless则采用less方式。不过要使用less之前需要使用npm i less来安装依赖包获得less语法的编译支持。 3.2.3 组件注册 说明组件中可以引入其他组件进行使用这也就催生了两种组件的注册方式即全局注册和局部注册。 全局注册可以在全局被任何一个组件使用局部注册在当前注册的范围内使用 全局注册的方法使用app.component(‘使用的标签名’组件) 局部注册的方法在需要导入的模块下的script节点中导入组件并声明components选项该选项是一个对象可以按照使用的标签名形式填写。 提示在官方文档中我们把module.exports对象中的各个属性称为选项。如components选项data选项name选项。 script import MyArticle from ./Article.vue; export default {name:MyApp,components:{MyArticle} } /script3.2.4 注册组件时名称的大小写 说明在进行组件的注册时定义组件注册名称的方式有两种 使用kebab-case命名法即短横线命名法如my-swiper使用PascalCase命名法即大驼峰命名法如MySwiper 如果使用的标签名使用短横线命名法的方式则在使用标签时只能严格按照自己命名的名称来使用但如果使用的是帕斯卡命名法则在后续的使用中都可以转换为短横线命名来表示。 3.2.5 通过name属性注册组件 说明组件的注册也可以使用组件中暴露出的name属性 3.2.6 组件冲突的解决 组件冲突原因如果一个组件里面嵌套一个子组件则在渲染样式时有可能会影响子组件的样式。出现这种情况的根本原因是因为vue文件下的模板节点我们写的结构都是虚拟DOM而所有的组件都是基于唯一的index.html页面来呈现的。 解决方法为每个组件分配唯一的自定义属性在编写组件样式时在传统的选择器后跟一个中括号里面放你分配的自定义属性名这样就可以解决冲突了。 templatediv classcontainer//自定义data-v-001属性h3 data-v-001/h3/div /templatestyle.container[data-v-001]{border:1px soild red;} /style更好的方法如果手动指定自定义样式这样会很麻烦。为此vue为style节点提供了scoped属性让vue自动为各个组件分配随机的属性。 3.2.7 样式穿透 说明如果给当前组件的style节点添加了scoped属性则当前组件的样式对其子组件不再生效。如果想让某些样式对子组件生效可以在选择器前添加:deep()。 原理当加上样式穿透后scoped的效果由原先的选择器[自定义属性]变为了[自定义属性] 选择器。 style scoped:deep() p {color: gold;} /style3.2.8 props 引入为了提高组件的复用性我们在封装组件时要遵循的规则是 组件的DOM结构和style样式要尽量复用组件中展示的数据尽量由组件的使用者提供 比较显著的一个例子是我们封装轮播图组件组件的外观和轮换时间我们希望都一样但是轮播图里的图片我们可不希望一样。我们希望在调用组件时轮播图的图片由我们自己提供。 说明如果我们希望数据由组件使用者提供那我们就要使用到props。props是组件的一个选项可以通过props暴露想要传递的数据。当我们在编写组件模板的时候模板中需要数据的地方用插值表达式来声明而后在module.exports对象中新增props以数组形式编写插值表达式对应的位置数据。当我们需要使用模板时在data中提前准备好数据利用v-bind传到组件上即可。 提示在组件的插值表达式中不允许声明未定义的props。如果传递了未声明的props属性则这些属性会被忽略无法被子组件使用。 命名问题props数组中存放的数据命名也采用短横线和帕斯卡命名的方式声明帕斯卡时也可以转换短横线。 templatedivh3标题{{title}}/h3h5作者{{author}}/h5h6发布时间{{pubTime}}/h6/div /templatescript export default {name:MyArticle,// 外界可以传递数据到当前的组件中props:[title,author,pubTime] } /scripttemplatedivh1这是App.vue根组件/h1hrmy-article :title info.title :author post by info.author :pubTimeinfo.pubTime/my-article/div /templatescript import MyArticle from ./Article.vue; export default {name:MyApp,data(){return {info:{title:abc,author:123,pubTime:1989},}},components:{MyArticle} } /script3.2.9 动态绑定HTML的class 说明我们可以通过三元表达式动态的为元素绑定class的类名。 绑定多个class如果元素需要动态地绑定多个class类名可以使用数组的语法格式不同的三元表达式之间采用逗号分隔。 简化使用数组语法动态绑定class会导致模板结构臃肿的问题此时可以使用对象语法进行简化。 以对象语法绑定内联style使用:style可以在模板结构标签中添加内联样式这种语法的本质是一个js。 templatediv!-- h3 class thin :class isItalic ? italic:MyStyle组件/h3 --!-- h3 class thin :class [isItalic ? italic:,isDelete ? delete:]MyStyle组件/h3button clickisItalic !isItalicToggle Italic/buttonbutton click isDelete !isDeleteToggle Delete/button --h3 class thin :class classObjMyStyle组件/h3button clickclassObj.italic !classObj.italic Toggle Italic/buttonbutton click classObj.delete !classObj.deleteToggle Delete/buttonhrdiv :style {color:active,fontSize:fSize px,backgroundColor:bgcolor}人才/divbutton clickfSize 字号 1/buttonbutton clickfSize --字号 -1/button/div /templatescript export default {name:Mystyle,data(){return {isItalic:false,isDelete:false,classObj:{italic:false,delete:false,},// 高亮的文本颜色active:red,//文字的大小fSize:30,// 背景颜色bgcolor:pink,}}, } /scriptstyle.thin{font-weight: 200;}.italic{font-style: italic;}.delete{text-decoration: line-through;}/styletemplatediv!-- h3 class thin :class isItalic ? italic:MyStyle组件/h3 --!-- h3 class thin :class [isItalic ? italic:,isDelete ? delete:]MyStyle组件/h3button clickisItalic !isItalicToggle Italic/buttonbutton click isDelete !isDeleteToggle Delete/button --h3 class thin :class classObjMyStyle组件/h3button clickclassObj.italic !classObj.italic Toggle Italic/buttonbutton click classObj.delete !classObj.deleteToggle Delete/buttonhrdiv :style {color:active,fontSize:fSize px,backgroundColor:bgcolor}人才/divbutton clickfSize 字号 1/buttonbutton clickfSize --字号 -1/button/div /templatescript export default {name:Mystyle,data(){return {isItalic:false,isDelete:false,classObj:{italic:false,delete:false,},// 高亮的文本颜色active:red,//文字的大小fSize:30,// 背景颜色bgcolor:pink,}}, } /scriptstyle.thin{font-weight: 200;}.italic{font-style: italic;}.delete{text-decoration: line-through;}/style
http://wiki.neutronadmin.com/news/24746/

相关文章:

  • 网站推广的软文深圳建设交易宝安
  • 江西那家做网站公司好小程序开发平台要多少钱
  • 免费 网站模板网站如何添加统计代码
  • 铜仁市网站建设服装加工平台
  • 个人怎么做一个网站集团做网站
  • 2018做网站 工具程序源码网站
  • asp免费网站模板wordpress提交工单
  • 鲜花网站建设规划书软件制作app
  • 文章网站是怎么做的建筑工程承包网沈阳
  • 张家口购物网站开发设计asp.net做网站的流程
  • 直播网站开发核心技术wordpress支持php几
  • 网站建设基本技术网站开发组合 lamp
  • 长尾关键词查询珠海优化seo
  • 低价网站建设费用预算容桂做外贸网站
  • 西安道桥建设有限公司网站四川城乡和住房建设厅网站
  • 企业公司网站建设公司wordpress上传主题没有反应
  • 多元网站宁波seo排名优化培训
  • 佛山哪里有网站开发?网站建设百度认证
  • 极致优化WordPress网站速度网站制作和设计需要多少钱
  • 上海哪家做网站好装修公司网站 源码
  • linux网站服务器配置网站建设方案包括哪些内容
  • 网站建站上海百度站长工具是什么意思
  • 东营建设网站wordpress 安装插件
  • 做漫画网站湖南邵阳建设局网站
  • 合肥专业网站建设流行网站开发框架
  • 汕头网站时优化前端入职一周被劝退
  • 品牌网站建设教程wordpress 简约论坛
  • 杭州设计企业网站高端公司宁波建设网谢家限价期房2004
  • 找活做的网站定制杯子
  • 丽江网站设计公司访问数据库的网站开发语言