【WEB前端全栈成长计划】第三阶段 考核开发实录(三)

举报
hwJw19 发表于 2020/09/22 11:34:21 2020/09/22
【摘要】 上一文中,我们搭建了页面路由,本文主要完成首页组件的开发。 观察一下首页有哪几块内容:轮播区域、开始上课区块、云课堂、教学市场、活动公告以及底部,下面我们开始一块一块来搭建。 根据我上面分的这几大块,我在components里新建对应的组件,轮播和开始上课这两块我合并到一个组件了,大家看下截图,我一共建了这么几个组件: 大家可以看到,我新建了个目录,把首页用到的组件...

    上一文中,我们搭建了页面路由,本文主要完成首页组件的开发。

    观察一下首页有哪几块内容:轮播区域、开始上课区块、云课堂、教学市场、活动公告以及底部,下面我们开始一块一块来搭建。
    根据我上面分的这几大块,我在components里新建对应的组件,轮播和开始上课这两块我合并到一个组件了,大家看下截图,我一共建了这么几个组件:

    大家可以看到,我新建了个目录,把首页用到的组件,都放到home目录下了,这样能开发清晰一些。
    然后我们把首页的非路由组件引入到首页Home.vue文件中:

<template>
       <div>
              <homeTop/>
              <cloudClass/>
              <cloudClass/>
              <notices/>
              <homeBottom/>
       </div>
</template>
 
<script>
       import cloudClass from "../components/home/cloudClass.vue"
       import homeBottom from "../components/home/homeBottom.vue"
       import homeTop from "../components/home/homeTop.vue"
       import notices from "../components/home/notices.vue"
      
       export default {
              components:{
                     cloudClass,
                     homeBottom,
                     homeTop,
                     notices
              }
       }
</script>
 
<style>
</style>

    这里有个注意事项,组件不能直接放置到template标签中,需要在template里组件外包裹一次div,不然会报错哦:

    注意看截图的那句话,让你有个root element,开发中同学们要注意哦~

    上面的截图可以看到,首页我已经成功把非路由组件引入进来了。
    这里细心的同学可能会观察到,我的cloudClass组件引用了两次,这是因为,我观察到云课堂和教学市场这两部分的展示内容结构很相似,所以我抽离出来一个组件为两部分内容所用。
    因为我做的是华为WEB全栈第三阶段的作业哈,在第一阶段,我已经写过了首页了,所以我把我之前首页的内容做了拆分,直接填入到各个组件内部了,然后把样式统一放到了assets目录下的public.css文件里了:

    因为我之前写的样式有点乱,把样式做拆分有点费劲,所以我就直接放到public.css文件里,然后再main.js文件里引入,当做全局样式来调用了:

    当然最好的习惯还是要做拆分哦,把公用的提出来就好了,这样维护起来比较方便~
    经过我一番整合,首页内容展示已经没有问题了

    但是,页面里展示的内容,都是死数据啊,我们下下一阶段,主要要完成的,就是数据动态展示这么一个功能,说到这个功能,我们首先要想到的是,根据现有需求,我们需要一个什么格式的数据,然后使用v-for去实现循环,由于云课堂和教学市场的展示相似,我前面提到了我抽离出来了一个组件,那这个组件的数据,我想要从home.vue传递给子组件,这就要用到props,所以技术点也就是数据整合、v-for、props,很简单,只需要它们几个就可以完成首页数据动态展示了(除了banner图哈,这个我们放到后面实现)
    我们以云课堂为例:
    先打开cloudClass.vue组件,实现对子组件数据改造,这里我直接贴代码了:

<template>
       <div>
              <div>
                     <h3>{{ccLists.title}}</h3>
                     <p>{{ccLists.desc}}</p>
              </div>
              <div>
                     <a href="" v-for="value in ccLists.listsData">
                            <div :style="{backgroundPosition: value.positionY}"></div>
                            <div>
                                   <div>
                                          <div>
                                                 <span>{{value.courseName}}</span>
                                          </div>
                                          <div>
                                                 <span>
                                                        <i></i>
                                                        <span>{{value.classroomUser}}</span>
                                                 </span>
                                                 <span>
                                                        <i></i>
                                                        <span>{{value.classroomSchool}}</span>
                                                 </span>
                                                 <span v-if="value.showTime">
                                                        <span>{{value.time}}</span>
                                                 </span>
                                          </div>
                                   </div>
                                   <div>{{value.desc}}</div>
                                   <div></div>
                                   <div>
                                          <div>
                                                 <p>{{value.operate}}</p>
                                          </div>
                                   </div>
                            </div>
                     </a>
              </div>
              <div>
                     <span> 查看更多 ></span></span>
              </div>
       </div>
      
</template>
 
<script>
       export default{
              props:{
                     ccLists: Object,
                     tmLists: Object
              }
       }
</script>
 
<style>
</style>

    大家可以看看,页面展示的内容都是用props拿的哦,课程列表用了v-for循环,需要注意的是,我在课程时间元素上使用了一个v-if指令,因为这一部分内容在云课程显示,在教学市场不显示,所以我需要做一下区别处理。
    首页的云课堂和教学市场的数据我是这样构造的,home.vue:

<template>
       <div>
              <homeTop/>
              <cloudClass :ccLists='ccLists'/>
              <cloudClass :ccLists='tmLists'/>
              <notices/>
              <homeBottom/>
       </div>
</template>
 
<script>
       import cloudClass from "../components/home/cloudClass.vue"
       import homeBottom from "../components/home/homeBottom.vue"
       import homeTop from "../components/home/homeTop.vue"
       import notices from "../components/home/notices.vue"
      
       export default {
              data(){
                     return {
                            ccLists:{
                                   title:'云课堂',
                                   desc:'免费精品公开课,覆盖丰富知识点、课件与在线习题',
                                   listsData:[{
                                   courseName:'区块链精品实践课',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   time:'6小时',
                                   desc:'本课程由浅入深的介绍区块链技术缘起、原理机制、演进和发展现状,分享区块链典型应用场景及特点。了解华为云区块链的方案及特点,参与动手实验。从入门到实践,循序渐进一站式学习。',
                                   operate: '限时免费',
                                   positionY:'0px 0px',
                                   showTime:true
                            },{
                                   courseName:'技术大咖在线论道-华为云技术开放视频合集课堂入口',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   time:'90小时',
                                   desc:'【技术大咖在线论道 百万+开发者精益成长】 汇聚多领域资深技术专家视频课程; 探讨国内外前沿技术领域发展趋势; 助力开发者专业技术能力精益成长; 分享可借鉴研发技术实践成功经验。',
                                   operate: '限时免费',
                                   positionY:'0px -200px',
                                   showTime:true
                            },{
                                   courseName:'HE2E DevOps实践',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   time:'16小时',
                                   desc:'HE2E即华为端到端的DevOps实施框架,集合了业界先进的实践,结合华为30年研发经验,形成的一套可操作可落地的敏捷开发方法论,并基于DevCloud工具链进行承载。',
                                   operate: '限时免费',
                                   positionY:'0px -400px',
                                   showTime:true
                            },{
                                   courseName:'C语言程序设计',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   time:'96小时',
                                   desc:'本课程适合作为高等学校计算机专业及相关专业C语言程序设计课程的教材,也可作为计算机等级考试参考书,还可供从事计算机软件开发人员参考使用。主要包含,C语言概述,数据类型,基本语句与结构化程序设计,数组,函数和模块化程序设计,指针,预处理命令,复杂数据类型,文件。附有习题,习题覆盖知识重点,题型丰富。',
                                   operate: '限时免费',
                                   positionY:'0px -600px',
                                   showTime:true
                            },{
                                   courseName:'Web实践课',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   time:'96小时',
                                   desc:'本门课程涵盖:WEB基础、CSS、JS、H5等教学内容组成,学生可以逐步提升前端开发能力。',
                                   operate: '限时免费',
                                   positionY:'0px -800px',
                                   showTime:true
                            },{
                                   courseName:'人工智能:算法与实践',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   time:'96小时',
                                   desc:'本课程讲述的是有关人工智能算法与实践的内容,并介绍相关的数学基础、相关应用及工具,以及如何在实际环境中使用它们。课程不仅仅介绍了各种人工智能算法的理论知识,更是通过建立多个实际案例、习题测评,引导学生在实际项目中学到相关知识经验,同时老师可以灵活安排学生的学习任务,有效地对学生的知识吸收情况做针对性的解决。课程开发环境为python3.6及以上 + Anaconda3 。',
                                   operate: '限时免费',
                                   positionY:'0px -1000px',
                                   showTime:true
                            }]},
                            tmLists:{
                                   title:'教学市场',
                                   desc:'丰富教学资源辅助高效教学,免费习题库一键获取',
                                   listsData:[{
                                   courseName:'JAVA-习题库',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   desc:'本习题库覆盖JAVA的相关知识,习题涉及到基本数据类型、语句、类、封装继承、对象、接口、内部类、异常处理、字符串、实用类、多线程、输入输出流等相关知识。 习题类型包括单选题、编程题、单人项目题等,每个习题都与知识点相对于,通过这些习题,可以很好的检查学生对JAVA知识的掌握程度,提升学生的动手编码能',
                                   operate: '限时免费',
                                   positionY:'0px -1200px',
                                   showTime:false
                            },{
                                   courseName:'C-习题库',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   desc:'本习题库覆盖C语言的相关知识,习题涉及到C语言概述,数据类型,基本语句与结构化程序设计,数组,函数和模块化程序设计,指针,预处理命令,复杂数据类型,文件操作等。习题类型包括单选题、编程题,每个习题都与知识点相对应,所有习题支持自动判题,通过这些习题,可以很好的检查学生对C语言知识的掌握程度,提升学的动手编码能',
                                   operate: '限时免费',
                                   positionY:'0px -1400px',
                                   showTime:false
                            },{
                                   courseName:'Web-习题库',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   desc:'本习题库覆盖web开发相关知识点,对HTML、CSS、JavaScript等内容,进行了习题覆盖。习题类型包括单选题、编程题,每个习题都与知识点相对于,通过这些习题,可以很好的检查学生对Web知识的掌握程度,提升学生的动手编码能力。',
                                   operate: '限时免费',
                                   positionY:'0px -1600px',
                                   showTime:false
                            },{
                                   courseName:'系统分析与设计',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   desc:'本课程通过DevOps与云服务相结合,基于“项目驱动”的工程实践进行能力训练,采取“基础知识-->核心应用-->综合案例-->企业实践”的结构和“由浅入深,由深到精”的学习模式进行讲解,掌握产品经理与项目经理应具备的技能知识点,具备云服务与开发的基本能力。',
                                   operate: '限时免费',
                                   positionY:'0px -1800px',
                                   showTime:false
                            },{
                                   courseName:'数据结构(C语言)实践教学精品课',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   desc:'本课程对常用的数据结构做了系统的介绍,力求概念清晰,注重实际应用。课程依次介绍数据结构的基本概念、线性表、栈和队列、串和数组、树和二叉树、图结构,以及查找和排序等基本运算,用C语言作为算法描述语言,并附有典型例题与小结,便于读者总结和提高',
                                   operate: '限时免费',
                                   positionY:'0px -2000px',
                                   showTime:false
                            },{
                                   courseName:'Python程序设计精品课',
                                   classroomUser:'Classroom',
                                   classroomSchool:' 华为云',
                                   desc:'本课程主要介绍Python语言的语法及常用模块的使用,重点介绍面向对象设计,字符串操作,正则表达式等知识,同时通过游戏设计,展示Python语言的简易和强大。',
                                   operate: '限时免费',
                                   positionY:'0px -2200px',
                                   showTime:false
                            }]}
                     }
              },
              components:{
                     cloudClass,
                     homeBottom,
                     homeTop,
                     notices
              }
       }
</script>
 
<style>
</style>

    大家可以参考一下。至于活动公告版块,道理跟坐云课堂一样的,大家可以自己试试~

    由于banner图我们用swiper来实现的,我放到下一篇文章里说啦~




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。