热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

页面前端的水有多深?再议页面开发

但凡从事互联网的人基本都会写几行html,用过Word的人用Dreamweaver也能做出规整的页面,所以大部分人会很自然地认为“页面的开发没什么技术含量

  但凡从事互联网的人基本都会写几行html,用过Word的人用Dreamweaver也能做出规整的页面,所以大部分人会很自然地认为“页面的开发没什么技术含量,很简单”。不仅有这种普遍的认知,对从业者来说也有很多疑惑:做页面前端实现,没问题;兼容性,小case;图片集成,一直都在用……还能有什么问题?瓶颈啊、天花板啊、转型啊、出路啊就在从业者中广泛讨论。是不是真的没什么问题了呢?网易邮箱前端技术中心也设立好几年了,似乎有着讨论不完的话题,也经常会有一些新的想法让大家为之一振。那么页面开发还有哪些要求,还要做些什么,这里面的水有多深,让我们舀舀看。

  在不同的时期对页面前端的看法似乎是多变的。在互联网早期的时候,小车还是比房子贵的,烧饼和粉丝还只是用来吃的,菊花还只是用来泡茶的。那时的页面设计风格相对单一,对应的页面需求比较简单,并且当时的浏览器也基本是IE6的天下,Javascript也只是网页特效的代名词,HTML页面本身没有引起太多人的关注,似乎只要能用div甚至table加css辅助把图片定好位,把页面内容预留好就OK了,并且这种观念存在了很长一段时间。随着页面内容的丰富,设计风格的发展,交互复杂性的增加,AJAX的应用,浏览器的更新换代,又让大家重新对最基本的页面本身重视起来。然后热议的就是浏览器的兼容性,碰到问题最热衷的就是满网络搜索hack,顺便再骂骂IE6、7……当这些都做一遍后,似乎又遇到了瓶颈,又开始寻找出路。我们就从这个阶段开始说起。

  实现效果图是最基本的工作

  把视觉稿通过页面代码的方式表现出来包含了两个基本诉求:1. 能够真实反映视觉稿;2. 能够通过浏览器的兼容。这两个诉求的达成需要我们有追求细节的态度和一定的页面功底,能完成这两个内容就可以初步进入页面前端的从业者行列了,但这就代表着我们可以胜任页面开发的工作了?不,才刚刚开始!

  与设计师的沟通和项目的参与

  沟通很重要。先抛出几个问题:我们有没有和设计师探讨过某些效果对低端浏览器渲染效率影响比较大?有没有探讨过部分效果可以用CSS3实现从而使得结构更加简洁清晰?有没有在代码和视觉中寻追求过平衡?页面前端的开发向基本用户,编写的代码也直接作用在浏览器上,我们有义务对页面的稳定性和渲染效率负责。我们也经常碰到项目在总体进度压力下导致的设计与页面前端开发同步进行,这时更有必要尽量多地获取项目信息,了解我们还要做些什么,这些可以帮助我们充分考虑重用和框架拓展。

  良好的页面结构

  页面结构的编写好比盖房的地基建设,其好坏会直接影响到CSS代码的质量、js开发、后台开发还会影响到以后的页面拓展、迭代和页面调整。拿到视觉稿后,不要忙着动手开始,多观察思考。先分析布局,划分框架,然后规划结构,编写代码。特别在大型项目中,合理使用模块化的开发不论从整体进行还是拓展维护都有相当大的好处。

  关于hack

  很多同学在页面开发时上网搜索最多的就是hack了,是否我们完全要依赖hack来实现页面兼容性,答案是否定的。大家经常比喻IE6向我们撒了一个谎,结果我们要再撒一百个谎来圆这个谎。不否认IE6经常让我们口吐鲜血,但不代表我们用更多的“谎言”来弥补就可以心安理得。大部分情况下可以通过变换思路调整HTML结构,或使用一些虽然无法解释但相对安全的css来干掉hack。谁都无法预计使用hack什么时候会让我们栽一个大跟头。比如触发layout或position:relative就可以帮助解决很多IE6的问题。

  优美的代码

  现在很多web项目功能复杂,代码规模也会变得很庞大,如何更好地进行协同开发和维护是我们面临的一个问题。需要考虑完善统一的规划,还有要养成良好的代码开发习惯才会在面临各种情况时游刃有余。翻阅页面代码,看到合理的标签使用、良好的注释、清晰的代码结构、用意准确的css,不仅犹如欣赏一个艺术品,更为下游开发和协同开发降低了不小的沟通成本,我们有什么理由不去这么做呢?举个反面例子:div滥用是现在比较典型的一个问题。数数看自己使用的标签有多少个呢?不同的语义都该使用对应的标签代码,特别是HTML5提供了更丰富的语义化标签,它们都苦苦地在等待战场上的冲锋号,让我们去解放它们吧!

  无障碍页面开发

  可访问性与易用性是非常主观且人性化的东西。普通人看上去上完美呈现的页面在特殊群体中不一定显得那么贴心。当盲人用读屏软件在页面某个区域内陷入循环时,我们应该感到内疚。只能说目前国内的网站对此的重视程度还远远不够,这就需要我们共同努力,让更多的人感受到我们的热情。

  保障效率

  作为项目开发中比较靠前的一环,页面开发可能需要尽早完成为项目争取时间,这就需要我们尽可能地提高效率。“工欲善其事,必先利其器”,除了实战经验和代码习惯的形成可以帮助我们提高效率外,想要提高对自己开发的进度掌控能力,还有很多辅助工具可以帮助我们进行页面开发。比如使用Less或Sass可以帮助我们拓展和组织CSS,大大提高CSS的编写效率,增加了可维护性。比如可以通过zen coding的自动完成和自定义代码块让你可以剑指如飞。甚至还见过通过自定义输入法的代码块关键字来提升开发速度的。多多发掘,一定会找到最合适自己使用的工具。

  针对服务器的优化

  页面开发也需要了解服务器的优化,尽量减小服务器负担。比如css sprite就是一个典型减小服务器请求数的例子。在网易邮箱的页面前端开发中大家不停地在做着各种优化,比如一直在寻求文件大小与服务器请求数的平衡;为了尽可能提高缓存利用率采用了补丁升级;对class名进行了混淆压缩避免命名过长的冗余;应用base64减少请求数量等等措施。这些都是综合权衡的结果,需要考虑各个方面整体优化。因为当页面访问量达到一定的数量级时,再小的一点优化都会达到可观的效果,再小的问题都可能会形成巨大的灾难。

  拥抱HTML5

  这是一个充满机会的时代,HTML5时代的来临伴随着移动互联网的兴起创造了更大的机会,还有太多的东西值得我们去学习去发现。HTML5提供了丰富的JS API接口,需要我们去研究;CSS3的绚丽吸引了足够多的眼球,需要我们去研究;移动设备上如何开发更加适配的页面,需要我们去研究……

  Stay Hungry, Stay Foolish

  水是越舀越多了,却发现原来下面还深不见底,上面的内容越是深入研究就越会发现更多山川需要翻越。保持饥饿状态,用眼睛去努力发现发掘,不断丰富技能才能找到定位,突破瓶颈,正所谓“唯有高屋建瓴方可水到渠成”。形成本文是因为之前和同行讨论到瓶颈的问题,想给自己,给页面前端的同学一起找找定位,梳理一下思路。拿苹果CEO在斯坦福演讲的一句话“Stay Hungry, Stay Foolish”和大家共勉。


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文详细介绍了如何利用Go语言和WebSockets技术构建一个高效的实时聊天系统。随着网络应用的日益复杂化,实时交互成为了提升用户体验的关键要素之一。通过本指南,开发者可以学习到最新的技术和最佳实践。 ... [详细]
  • 理解文档对象模型(DOM)
    本文介绍了文档对象模型(DOM)的基本概念,包括其作为HTML文档的节点树结构,以及如何通过JavaScript操作DOM来实现网页的动态交互。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • 本文详细探讨了JavaScript中的闭包与柯里化技术,这两者是函数式编程的重要组成部分,对提升代码的灵活性和可维护性具有重要作用。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 本文深入探讨网页游戏的开发流程,涵盖从程序框架设计到具体实现的技术细节,旨在为开发者提供全面的指导。 ... [详细]
author-avatar
书友36296361
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有