软件工程实践总结&个人技术博客

技术概述

     随着前端技术的不断发展,前端开发能够处理的业务越来越多,网页也变得越来越强大和动态化,这些进步都离不开JavaScript。在目前的开发中,已经把很多服务端的代码放到了浏览器中来执行,这就产生了成千上万行的JavaScript代码,他们连接着各式各样的HTML和CSS文件,但是缺乏正规的组织形式。这也是为什么越来越多的前端开发者使用JavaScript框架的原因,目前比较流行的前端框架有Angular、Reac、Vue等。
     Vue是一款友好的、多用途且高性能的JavaScript框架,它能够帮助你创建可维护性和可测试性更强的代码库。Vue是渐进式的JavaScript框架,也就是说,如果你已经有了现成的服务端应用,你可以将Vue作为该应用的一部分嵌入其中,带来更加丰富的交互体验。或者如果你希望将更多业务逻辑放到前端来实现,那么Vue的核心库及其生态系统也可以满足你的各式需求。
和其他框架一样,Vue允许你将一个网页分割成可复用的组件,每个组件都包含属于自己的HTML、CSS、JavaScript,以用来渲染网页中相应的地方。如果我们构建了一个大型的应用,可能需要将东西分割成为各自的组件和文件,使用Vue的命令行工具,使快速初始化一个真实的工程变得非常简单。

技术详述,描述你是如何实现和使用该技术的,要求配合代码和流程图详细描述。可以再细分多个点,分开描述各个部分。

1.这个是外层的结构

<div>
    <div id="head">
      <p class="title">签到</p>
      <p class="english">Signin</p>
    </div>
    
    <div class="part">
    <router-view></router-view>
    </div>
 </div>

2.签到栏

<div id="div3" style="display: flex;align-items: center;">
  <el-select v-model="clazzvalue" placeholder="请选择" class="kuang" @change="changeClazz"
    <el-option
	v-for="item in options"
	:key="item.id"
	:label="item.clazzName"
	:value="item.id+''">
    </el-option>
  </el-select>
  <span class="text">{{qiandaochar+":"}}</span>  			
  <el-input placeholder="请输入签到名称" class="kuang" size="medium" v-model="input" clearable style="width:14% ">
    </el-input>
  <span class="text" id='jshutime'>{{qiandaochar2+":"}}</span>
  <div class="block">
    <span class="demonstration"></span>
	<el-date-picker
	v-model="value1"
	type="datetime"
	placeholder="发布签到结束时间"
	format="yyyy-MM-dd HH:mm:ss"
	value-format="yyyy-MM-dd HH:mm:ss">
	</el-date-picker>
  </div>
  <el-button @click="publishClick"  id="publishbutton" >发布签到</el-button>						
</div>

3.按钮的实现

<el-table-column label="签到结果" v-if="showOper" align="center" width="180">
	<template slot-scope="scope">
	<!--          <router-link to="/teacher/signin/signinlist" tag="button" >签到结果</router-link>-->
	    <el-button type='text' @click="lookClick(scope.row)" id="lookbutton">查看</el-button>
	        </template>
</el-table-column>
<el-table-column label="修改结束时间" v-if="showOper" align="center" width="170">
        <template slot-scope="scope">
        <!--          <router-link to="/teacher/signin/signinchange" tag="button" >修改结束时间</router-link>-->
            <el-button @click="editClick(scope.$index,scope.row)" type="text" id="lookbutton">编辑</el-button>
                </template>
</el-table-column>		  

4.接收数据

                queryList(){
			let info = {
				clazzId:this.clazzvalue
			}
			this.$axios({
			        method: 'get',
			        headers: {
			          'Content-type': 'application/json;charset=UTF-8'
			        },
			        // data:JSON.stringify(info),
			        url: 'http://1.15.149.222:8080/coursewebsite/attendance/teacherAll?clazzId='+this.clazzvalue
			      }).then((response) => {          //这里使用了ES6的语法
			        //console.log(JSON.stringify(response))       //请求成功返回的数据
			        //console.log(response.data.data)
			        //this.tableData = response.data.data
					let that = this
					response.data.data.forEach(function(item,index){
						that.tableData.push(item)
						that.tableData[index].state = that.tableData[index].state==true?"进行中":"已结束"
					})
			      }).catch((error) => {
			        console.log(error)       //请求失败返回的数据
			      })
			},

技术使用中遇到的问题和解决过程

问题1.IDEA没有vue插件

解决方案:当时试了许多方法都不行。最后我使用了vue官方推荐的HbuilderX来写代码

问题2.时间格式(签到部分要求获取当时时间的时间格式)

解决方案:开始是在网上找到获取时间的函数,但是对于时间格式无法纠正

        <div class="block">
                <span class="demonstration"></span>
		<el-date-picker
		v-model="value1"
	        type="datetime"
		placeholder="发布签到结束时间"
		    format="yyyy-MM-dd HH:mm:ss"
		    value-format="yyyy-MM-dd HH:mm:ss">
		</el-date-picker>
        </div>

使用element ui中的时间选择器,value-format属性可以设置时间格式。

问题3:后端返回布尔值,根据布尔值显示不同的内容

解决方案:

                queryList(){
			let info = {
				clazzId:this.clazzvalue
			}
			this.$axios({
			        method: 'get',
			        headers: {
			          'Content-type': 'application/json;charset=UTF-8'
			        },
			        // data:JSON.stringify(info),
			        url: 'http://1.15.149.222:8080/coursewebsite/attendance/teacherAll?clazzId='+this.clazzvalue
			      }).then((response) => {          //这里使用了ES6的语法
			        //console.log(JSON.stringify(response))       //请求成功返回的数据
			        //console.log(response.data.data)
			        //this.tableData = response.data.data
					let that = this
					response.data.data.forEach(function(item,index){
						that.tableData.push(item)
						that.tableData[index].state = that.tableData[index].state==true?"进行中":"已结束"
					})
			      }).catch((error) => {
			        console.log(error)       //请求失败返回的数据
			      })
			},

直接添加索引,将返回的数据进行一个判断,然后装进数组中

进行总结

1.更高的运行效率:基于虚拟DOM,一种可以预先通过JavaScript进行各种计算,把最终的DOM操作计算出来并优化的技术,由于这种DOM操作属于预处理操作,并没有真实的操作DOM,所以叫做虚拟DOM;
2.双向数据绑定:让开发者不用再去操作DOM对象,把更多的精力投入到业务逻辑上;
3.生态丰富、学习成本低:市场上拥有大量成熟、稳定的基于vue.js的ui框架及组件,拿来即用实现快速开发;对初学者友好、入门容易、学习资料多;

列出参考文献、参考博客

标题:快乐长大
作者:挽你手
链接:https://www.cnblogs.com/yjd-05/p/13397707.html

posted @ 2021-06-28 16:05  壹壹贰贰  阅读(60)  评论(4编辑  收藏  举报