iosclient暑期“动画屋“活动项目总结[通俗易懂]

iosclient暑期“动画屋“活动项目总结

大家好,又见面了,我是全栈君。

    入职实习的这个公司,第一天就分配了任务。从零開始写一个网页。之前尽管了解一些前端知识。但从头开写还是遇到了非常多问题,互联网公司讲求效率,有deadline还是比較有紧迫感的,与在实验室放羊状态有了鲜明的对照。mentor、产品经理、组里的boss、实习生同事都给我提供了非常多的帮助。此篇总结为独立完毕的第一个项目的项目总结。

下图是已上线活动界面效果。

   俗话说,士别三日当刮目相看。当乐帝从12月的角度,审视6月做的这个项目时,对于当时写的代码可谓痛心疾首,代码还能够写的如此混乱。所以从12月開始将曾经代码,又一次审视,重构曾经代码,以期有一个温故知新。扎实基础的提高。

   本项目重构后页面代码地址:http://download.csdn.net/detail/yingyiledi/8255887

iosclient暑期“动画屋“活动项目总结[通俗易懂]

项目介绍

(一).爱奇艺IOSclient发现—活动页面中“动画屋”活动開始页面的开发

    活动開始页面的开发主要需求是:

    依据产品方提供的原型图实现基本页面的结构与布局。

    1.内容:

    依据原型图分析出页面分为三大块:

  • 活动宣传图区域。
  • 发表评论区域;
  • 评论展示列表区域。

    依据分析构造结构与布局。

   2.结构(HTML):

    依据分析内容构造的html结构:大体规则依照分块与语义化结合。

  • 上述三块内容分为三块div包装。
  • 活动宣传图区域採用背景图方式写HTML,评论展示列表区域,用户头像採取背景图方式实现。

   3.样式(CSS):

  • 依据上述构造出的语义化标签结构。再结合原型图用ps測量各数据构造样式布局。

  • 样式书写依照盒模型(由内而外)、浮动、定位来设置。

   4.交互(js/jQuery):

    依据原型图推断须要实现的用户行为交互。

 

iosclient暑期“动画屋“活动项目总结[通俗易懂]
  
   重构技术实现:

    因为曾经页面结构没有与行为非常好的分离。此次重构,主要对行为与结构分离做了重构。这里用到了underscore的模板引擎template方法。

    (1)列表页模板

 <%_.each(data, function(item) { %>
            <li class="comment-item">
                <div class="user-info" style="background:url('<%=item.imgUrl%>') no-repeat 0 0;background-size:30px 30px; ">
                    <span class="user-id"> <%= item.userId %> </span>
                    <span class="comment-time"> <%=item.createTime %> </span>
                </div>
                <p class="comment-content">
                    <%=item.content %>
                </p>
            </li>
            <%});%>


    (2)列表页对取得后端数据的处理

     对数据进行处理,以适应模板变量的需求。处理函数例如以下:

function modifyData(data) {
                 var innerData = data.data.comments;
                 var newData = [];
                 for (var i = 0; i < innerData.length; i++) {
                     newData[i] = {};
                     newData[i].content = innerData[i].content;
                     newData[i].imgUrl = innerData[i].userInfo.icon;
                     newData[i].userId = innerData[i].userInfo.uname;
                     newData[i].createTime = formatDate(new Date(innerData[i].addTime));
                 }
                 return newData;

             }

    
(3)将数据渲染到模板并加入到页面

    核心代码例如以下。主要採用template方法:

data = modifyData(data);
                     var template1 = _.template($("#list-item-template").html());
                     var str1 = template1({
                         data: data
                     });
                     $(".comment-list ul").append(str1);

   

  (4)解析url传递的參数构造成对象,採用ajax方法存取数据。须要读取url传递的參数值的各状态。并传递给ajax參数。

var theRequest = new Object();
	(function GetRequest() {
   var url = location.search; //获取url中"?"符后的字串
   
   if (url.indexOf("?

") != -1) { var str = url.substr(1); strs = str.split("&"); for(var i = 0; i < strs.length; i ++) { theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]); } } return theRequest; })()//将url中各參数提取出传入ajax方法各个參数

  

   (5)分页插件的使用


    分页插件的本质上是对象的方法,此处的对象是应用插件的标签元素,插件作为方法就须要有參数传递到函数内。分页插件传入的两个元素一个是所需分页内容总长度。另外一个则是分页插件初始化对象的传入。此对象包含:分页回调函数、分页初始页、每页内容个数、上一页、下一页的文字描写叙述等。

并可依据须要改动分页插件文件初始值。

当中比較关键的是回调函数的书写,此函数參数为当前页数,决定了在哪展现怎么展现的问题,能够按需求更改。

var optInit = {callback: pageselectCallback,current_page:0,items_per_page:50,num_display_entries:10,num_edge_entries:2,prev_text:"上一页",next_text:"下一页" }
		$("#pagination").pagination(length, optInit);
		function pageselectCallback(page_index, jq){
		// 从表单获取每页的显示的列表项数目
		
		var max_elem = Math.min((page_index+1) * items_per_page, length);//返回当前条目页内容与最大页内容较小值。防止溢出
		
		$("#Searchresult").html("");//清空显示值内容
		// 获取载入元素
		for(var i=page_index*items_per_page;i<max_elem;i++){
			$("#Searchresult").append($("#comentShow .comentList:eq("+i+")").clone());//非常奇怪i两側用加号,显示需遍历的内容,并复制追加到结果处,此处用clone保证追加的是副本
		}
		//阻止单击事件
		return false;
		}//应用分页插件

   

(二).爱奇艺IOSclient发现—活动页面中“动画屋”活动抽奖中页面的开发

    活动抽奖中页面主要需求是:

    1. 依据原型图分析出页面有两大块:app下载button盒背景图;获奖结果等文字内容。

    依据分析构造结构与布局。

(三).爱奇艺IOSclient发现—活动页面中“动画屋”活动结束页面的开发

    1.依据原型图分析出页面有两大块:app下载button盒背景图。获奖username单列表。

    依据分析构造结构与布局。

    2. 依据原型图实现用户行为的交互

    加入交互:从后台取出获奖用户对应信息展示。

    第二、三个页面的制作,因为页面同第一个页面所用到技术大同小异。但提高的地方在于依照内容、结构、样式、交互的顺序,一步步推导、演绎确定技术方案。然后再開始动工。效率有了明显的提升。

先思考再写代码。

第二三个页面相对于第一个页面的改进:

  • .写抽奖中和活动结束页面的内容、结构、css、js分析方法非常提高效率与掌控力。

  • 网页元素命名也依据内容进行了语义化,通过下载的txt文件查看经常使用的命名。
  • 通过给产品经理提出原型的意见添加了对产品的理解。

个人总结做网页的流程
    拿到原型图首先对原型图内容、结构、样式、交互有个理解,原型图不明白的须要与产品经理沟通意见。

   1.了解有哪些是内容:将内容分类。
   (1).静态内容
   (2).与server交互内容
   2.依照内容性质所属语义构造html语义标签结构
   (1)依据内容耦合情况,分块处理div
   (2)依照对内容的分类及一些逻辑关系选择标签。可參考博客园文章
   (3)语义标签依据是否有共性将其划分为语义的class及id。命名力求简洁、清晰表达内容
   3.依照内容相应标签确定的布局
   (1)首先确定最外层绝对位置的布局格式及内层div布局浮动或者竖排格式
   (2)确定各个div边框、边距及内层html的边框、边距内容
   (3)内层文字、背景、表单等格式的确定。
  4.js交互
   (1)分析须要的交互需求,确定整个流程所要实现的目标。
   (2)依据交互需求细化交互流程。
   (3)依据交互流程确定所採用的技术及可能用到的算法。
   (4)写交互代码。
个人提高的方向
    做网页如同写作文首先确定内容,然后是确定章节、然后是格式。都是熟能生巧的事情。

没有什么技术含量。

  • 有技术含量的是语义化标签的磨练,通过看模板代码和理论知识。以及属性、类的命名。
  • (1)css布局图上溯的长度、布局的确定。特别是从原型图中找出不合理的地方。(2)不应该纠缠于页面中各种像素数据。(3)学会用adapter即base.css文件的内容。(4)并积累自己的一个css库。
  • (1)js技术含量在于写出规范、可读性高的代码。(2)同一时候积累一些实现经常使用内容的函数。

    (3)深入理解框架和插件的机理。

  • 从各种浏览器适配的角度,考虑前端开发的优化。
  • 从用户体验的角度考虑。功能的实现。以及效率问题(速度)的提升如ajax读取数据。
  • 从整个前端的制作网页流程,反推整个策划、产品开发的产生过程。
  • 学习后端与前端交互,特别是网络端linux和svn工具命令、浏览器调试的运用。
重构意见
   之前的代码版本号。不管是结构、样式还是行为都没有做到集约化和标准化。通过这次重构。对HTML结构做了精简,特别是背景图的使用,使整个页面结构更合理。

样式上,採用PS精确測量各个数据,做到了与原型图高度统一。行为上採用了模板与函数分块编程。使结构与行为全然分离,行为逻辑更加清晰易懂。便于后期维护。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116581.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Java面试抽集[通俗易懂]

    Java面试抽集[通俗易懂]Java面试抽集

  • 网易视频 java_合并网易视频中英文字幕文件,解决Java输入输出的中文乱码问题…「建议收藏」

    网易视频 java_合并网易视频中英文字幕文件,解决Java输入输出的中文乱码问题…「建议收藏」packagehebingsrt;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.FileReader;importjava.i…

  • qi接收启动协议_QI协议,无线充(一)数据包

    qi接收启动协议_QI协议,无线充(一)数据包

  • java编程代码都是背下来的吗_向学弟学妹们介绍自己的大学

    java编程代码都是背下来的吗_向学弟学妹们介绍自己的大学同学们好,今天二哥是来还债的,记得先拖到文末点个赞再回来细细的读,好不好!最近一段时间,我一直在学习Java虚拟机和字节码方面的知识,为的就是有朝一日成为真正牛逼的技术大佬!不知道大家有没有这种感觉,就是一开始学习编程的时候,真心不想看底层的东西,就想直接上来撸代码,但时间久了以后,总感觉缺点啥~~~~于是我开始阅读《深入理解计算机系统》、《图解TCP/IP》、《深入理解Java虚拟机》这些偏底层的书籍,看得烦了,就去刷我之前给大家推荐过的两个视频课,《哈佛大学的CS50》和《计算机科学速成

    2022年10月30日
  • 可浮动placeholder,让你的登录不再枯燥

    可浮动placeholder,让你的登录不再枯燥前言在登录twitter的时候发现他的输入框的placeholder是可以浮动的。当输入框获取到焦点的时候,placeholder会跑到上面去。我觉得这样的登录方式的好处是:可以减少一个label,同时往上浮动又可以保证用户在输入的时候知道输入什么内容。pointer-eventspointer-events属性设置HTML元素如何响应鼠标/触摸事件/单击/点击事件以及光标是否可见。虽然pointer-events属性有11个可能的值,但其中8个值都用于SVG。任何HTMl元素的三个

  • 傅里叶变换的意义和理解(通俗易懂)

    傅里叶变换的意义和理解(通俗易懂)傅里叶变换的意义和理解(通俗易懂)这篇文章的核心思想就是:要让读者在不看任何数学公式的情况下理解傅里叶分析。傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生上来就懵圈并从此对它深恶痛绝。老实说,这么有意思的东西居然成了大学里的杀手课程,不得不归咎于编教材的人实在是太严肃了。(您把教材写得好玩一点会…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号