开发姿势篇——基础开发

概述

  近期学习了一下大厂h5开发实战内容,并且参考实战手册做一些记录。大概包括以下几个方面内容:

  1. 基础页面开发;
  2. 响应式页面开发;
  3. 滑屏应用开发;
  4. 动效开发;(若干篇章)

  接下来会根据以上几个方向来进行总结和概述。(可参考掘金小册——大厂h5开发实战手册


基础页面开发

  很多开发者可能问,不就是画ui吗,有什么好说的呢?自然,基础页面开发是作为h5开发者,最为基础的能力。但是完成一个页面做好一个页面是有本质区别的。因此,基础篇必不可少。
  那,上菜吧。

一、 能力要求

  你以为是简单的html/css/js吗?emm,对,但还不够。

  • html/css
  • JavaScript(简单脚本)
  • 切图

  你没看错,【切图】也在能力要求范围内。不会「切图」意味着我们无法将设计稿中的图层元素转换成为网页中所需要的图片,那么产品所要求的高保真还原设计稿便是更不能企及了。

二、 案例

如果我们得到设计稿如下图:

网页设计稿示例.jpg

  通常,我们在ui设计师得到类似的.psd文件,然后开始着手开发。那么我们在开发中一般步骤如下:

  1. 设计稿审查;
  2. 编写页面骨骼框架;
  3. 填充网页血肉内容;
  4. 润色;
  5. 兼容性测试;

  我们一个一个来。

1. 设计稿审查

审查意义:

  • 了解设计稿的开发友好性
  • 了解设计稿的排版布局及内容构成

  此处也是常人的正向思维,拿到设计稿,先熟悉了解内容,然后思考以下是否有漏洞,或者是否有更好的建议与意见,其中某些模块细节如何处理,考虑复用性、易拓展性等,然后规划某些模块是否编写为可复用组件,复用范围等。
  还以上图为例,明显多处可复用。那么可复用的又大致可分为两种类别:跨页面复用以及当前页面复用。那么该案例设计稿则可以划分如下:

  1. 跨页面复用组件: 头部导航、脚部信息;
  2. 当前页面复用组件: 如下图中1、2
当前页面复用组件示例.png

  这些展示的只是该过程中最为基础的审查,当然,如果条件允许的话,团队内可以学习凹凸实验室,尝试总结出一个类似的审查清单:

  • 确定设计稿的开发友好性(是否有还原成本高或无法还原的地方)
  • 确定一些特殊的元素是否有合理的边界处理(如文案超出外层容器的边界怎么办)
  • 确定页面的框架结构(Layout)
  • 确定跨页面可复用的组件(Site Component)
  • 确定当前页面可复用的组件(Page Component)
  • ……

  此处不再一一赘述。

2. 编写页面骨骼框架

  审查结束后,心里基本上有了比较成型的代码模型了,那么接下来就是编写页面骨骼框架了。通俗的来讲,就是搭架子。那么架子怎么搭?仁者见仁,但是最为基础的却都是统一的,比如必须掌握的知识点——盒模型。当然,此处不会讲解关于盒模型以及兼容性和差异性,还不太了解的可以自行搜索或者查询w3school。我们需要掌握盒模型在不同浏览器下的差异,盒模型宽高计算方法、内外边距以及一些兼容性问题的解决方案。然后,在摸清楚兼容性差异并解决之,达到统一后,便开始着手开发。
  开发第一步:布局
  开发过程中,我们会写无数个块级元素,那么其实每个块级元素都相当于是一个盒模型,而一张完整的页面,正是由多个盒模型组合在一起组成的。如此来讲,我们的页面布局便是重中之重:我们应该如何合理的布局呢?想回答这个问题,不得不啰嗦一下目前常见的几种布局方式:

  1. 文档流布局;
  2. 浮动布局(float);
  3. 绝对布局(absolute);
  4. 弹性布局(flex);
  5. 网格布局(grid);

  在这几种常见的布局方式中,我们在经过第一步的审查设计稿之后,已经对开发内容有了一个大致的了解,起码架子方面是可以肯定的,因此根据设计稿内容选择合适的布局即可。目前一般页面布局都会属于混合布局,为了展示更加酷炫和对用户更加友好的内容,布局难度也在不断增加。但所谓复杂的布局,也要回归到基础布局上来回嵌套,因此这几种布局是必须全部熟悉并且掌握,合理运用。

3. 填充网页血肉内容

  在页面布局完成之后,下一步就是要开始填充页面内容了,图片、音视频、文字混排等等,都让我们的页面更加鲜活和立体。如果把网页开发比喻成房屋建设,那么我们前面完成的就是打好了地基。就此结束吗?醒醒,工头让我喊你搬砖。根据设计,砌墙、装修、水管电线等等都要一步步的来啊,任重而道远。
  在小册中,凹凸实验室此处概述重点讲解了前端另一大能力——切图。我不再作出相关介绍,关于切图姿势、如何高效切图等,都可以查找相关介绍。而在此处,我额外补充一点:优化。我所说的优化不是代码优化,而是引入的资源优化,比如图片、音视频等。因此一些小技巧,如雪碧图、占位图、预加载、懒加载等功能的特性便需要掌握。

4. 润色

  何谓润色?且不要多想,当作普通的css编写即可。
  其实在我们基础页面开发过程中,最容易获取成就感的地方,就在于润色过程,就好似给图画上色,哦不,是拍照化妆开美颜加滤镜,效果感十足。但是写的时候容易,维护却是一大难题。
  往往在写完某个页面一段时间后,需要对其中某个样式就行维护时,找到该css位置需要理一下思路,那么……我们怎么通过某种规范来规避此问题或者是使该问题简单化呢?

BEM

  BEM(boundary element method,边界元法)是一种继有限元法之后发展起来的一种新数值方法,与有限元法在连续体域内划分单元的基本思想不同,边界元法是在定义域的边界上划分单元,用满足控制议程的函数去逼近边界条件。所以边界元法与有限元相比具有单元的未知数少,数据准备简单等优点。但用边界元法解非线性问题时,遇到同非线性项相对应的区域积分,这种积分在奇异点附近有强烈的奇异性,使求解变得困难。

那么在我们的css代码中,如何使用BEM呢?

BEM 的意思就模块(Block)、元素(Element)、修饰符(Modifier),使用这种命名方式可以让 CSS 的类名变得有实际意义且能自我解释,具有更高的开发友好性。

Block - 模块,名字的单词之间用 `-` 符号连接
Element - 元素,模块中的子元素,用 `__` 符号连接
Modifier - 修饰符,表示父元素或子元素的其他形态,用 `--` 符号连接
举个例子

普通写法:

<footer class="footer-box">
    <div class=“left”></div>
    <div class=“right”></div>
</footer>

BEM写法:

<footer class="footer-box">
    <div class=“footer-box__left”></div>
    <div class=“footer-box__right”></div>
</footer>

  对比后可发现,模块的命名已经语义化,后期维护减少了些许的复杂程度,页面的渲染效率提升了,但是……会不会命名太复杂了呢?不得不说,sacc/less是个好东西。我们搭配其来使用,则可编写为:

.footer-box{
    &__left{ ... }
    &__right{ ... }
}

5. 兼容性测试

  在页面开发完成之后,别急,换个浏览器试试?换台设备试试?emm,内心是拒绝的。
  兼容性测试是开发完成后必不可少的一步。由于各浏览器内核差异,版本差异甚至不同设备之间的分辨率差距,会导致同一个页面在不同设备不同浏览器中展现出千奇百怪的姿态来。为了完成页面的统一性,我们不得不一个个的做兼容,这也是印证了IE 虐我千百遍,我待 IE 如初恋这句话。

基本原则

渐进增强与平稳退化。

根据小册提议,兼容下问题解决流程步骤如下:

  1. 确认触发的场景:什么浏览器,什么版本,什么情况下触发的问题,做到稳定复现。
  2. 找出问题原因:是什么问题导致的,具体表现如何?
  3. 确定解决办法:参考现成的解决方案,如哪些属性不能使用以及相应的 Hack 处理。
  4. 收集兼容性处理方法,积累成文档。

小结

  我们根据案例,分析了基础开发的五个步骤:设计稿审查;编写页面骨骼框架;填充网页血肉内容;润色;兼容性测试。每个步骤有了一个简单的介绍,但是不够深入,总体来讲还是对基础开发有了一个大致的了解。至于更加深入的内容,下篇接着写。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • 注:本文为个人阅读笔记,文章版权归原作者,阅读完整版请转至 掘金小册 购买 大厂 UI 开发概述 UI 开发随着 ...
    KurokoZ阅读 528评论 2 0
  • 1小时候,我家养过一只牧羊犬,据说那时一只军犬等级的纯种德国牧羊犬。我叫他“黑子”。黑子浑身黧黑、体格健壮、威风凛...
    纾凝阅读 269评论 0 1
  • 基本概念 计算机科学领域的一种教简单排序算法 重复走访要排序的数列,一次比较两个元素,如果顺序错误就进行交换,重复...
    child_cool阅读 495评论 0 1
  • 要不,说一下我昨夜的梦吧,不知道为什么我总是梦到些很诡异的事情。可能我的身体健康出了大问题了。昨夜的梦是暗色调的,...
    禅仆阅读 74评论 0 0