最近一直在做h5的项目,对h5开发有了自己的理解。首先h5开发并不是指的html5的开发,而是指无线端的web开发,至于为什么叫h5开发,我觉得一方面是因为html5近几年还是挺受关注,另一方面h5在无线端有比较好的支持。

  大概从去年开始,好多人提出了pc已死的说法。其实比不是pc变弱了,反而是用户在不断增长。至于说pc已死,是因为无线实在是增长的太快了,就拿淘宝双十一的成交量来看,大部分的流量已经转向了无线。所以作为一名前端工程师,h5几乎已经成为必会技能。

  h5 vs pc

  首先来对比一下h5和pc开发。传统的pc开发可以说已经不必过多考虑性能,因为pc的内存和cpu支持一个单纯地网页还是足够的(只要代码不要太烂,例如出现死循环)。但是h5不同,一方面手机的性能不必pc(低端的手机尤为明显),所以h5页面要更多的考虑性能。另一方面手机的网络环境复杂,如3g,2g网络还是占很大比例,所以页面的数据请求也是一大问题。更别说要兼容几百种机型,几十种操作系统。所以我觉得h5开发对比pc更难。

h5 vs 客户端(android&ios)

  相比h5,客户端开发效果更好。但是为什么不全用客户端开发呢?h5和客户端的优缺点如下

  客户端

  优点

  1.体验好,更加流畅,可以做到h5做不到的效果(例如滑动)。

  2.更加安全,几乎不会被攻击。

  3不要考虑js,css等额外资源请求。

  缺点

  1.发版时间长,快则一月两次,慢则一月一次或几月一次。

  2.开发成本高。

  3.没有h5灵活。

  h5

  优点

  1.随时可以发布。

  2.开发成本低。

  3.可以投放到各个终端。

  缺点

  1.体验没客户端好,主要流畅度和加载速度。

  2.不安全

  3.网络消耗大。

  可以看出来,客户端和h5几乎是互补。为了能让h5能尽量消除不足,出现了好多解决方案,例如离线包(将js,css等静态资源缓存到手机内存中)。

  h5开发注意事项

  1.单位不能完全用像素(px),因为手机的大小不一,像素不能做到适配,所以图片等需要适配的元素要用相对单位rem或em(几乎都用rem)。

  2.水果的retina屏的每个点堆积一个以上像素点,所以对于retina屏的某些情况要做特殊处理,例如1px边框,具体解决方法可以在网上找到。

  3.尽量减少网络请求,必要的话要对弱网下做降级处理。

    总结

  h5开发从去年才真正火了起来,发展速度实在惊人(好多公司优先无线)。好多公司也投入很大的经历到对如何提高h5的性能,并且取得了一定的成果,例如之前提到的离线包就很好的提高了加载速度。但是我们也不得不思考,如果有一天手机的性能足够的好,网速足够的快(别现在wifi还快,不存在2,3g的网络),我们的研究方向又在哪里。

浅谈无线h5开发的更多相关文章

  1. 浅谈iOS视频开发

     浅谈iOS视频开发 这段时间对视频开发进行了一些了解,在这里和大家分享一下我自己觉得学习步骤和资料,希望对那些对视频感兴趣的朋友有些帮助. 一.iOS系统自带播放器 要了解iOS视频开发,首先我们从 ...

  2. 浅谈App原生开发、混合开发及HTML5开发的优劣

    App混合开发(英文名:Hybrid App),是指在开发一款App产品的时候为了提高效率.节省成本即利用了原生的开发技术还应用了HTML5开发技术,是原生和HTML5技术的混合应用.目前App的开发 ...

  3. 浅谈Android样式开发之布局优化

    引言 今天我们来谈一下Android中布局优化常用的一些手段.官方给出了3种优化方案,分别是</include>.</viewstub>.</merge>标签,下面 ...

  4. 浅谈移动Web开发(上):深入概念

    PPI 什么是PPI PPI的复杂之处在于如果他所属的上下文环境不同,意义也会完全不一样. 当我们在谈论显示设备的PPI时,它代指的屏幕的像素密度:当我们在谈论和图片相关时,我们谈论的是打印时的分辨率 ...

  5. 浅谈Bluetooth蓝牙开发

    前言:项目用到蓝牙开发,具体蓝牙获取硬件传感器中的数据. 因为没有蓝牙开发的相关经验,决定先了解一些蓝牙开发的知识,再去看之前同事写的蓝牙相关代码. ------------------------- ...

  6. 浅谈 Linux 内核开发之网络设备驱动

    转自http://www.ibm.com/developerworks/cn/linux/l-cn-networkdriver/ 网络设备介绍 网络设备是计算机体系结构中必不可少的一部分,处理器如果想 ...

  7. 浅谈Exchange 2013开发-如何操作邮件的附件

    因为项目中客户有一个的要求,所以这个Exchange前段时间搞的我很是头疼,没接触过这个东西,但是现在看来,纸老虎一个.希望我的经验可以帮助初次接触它的人少走一些弯路! 简单介绍一下:客户要求在自己的 ...

  8. 浅谈Android系统开发中LOG的使用

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用 ...

  9. 浅谈web前端开发阅历

    WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正轨教育,大多数人都是靠本人自学成才.本文次要引见本人从事web开发以来(从大二至今)看过的书籍和本人的成长过程,目的是给想了解Java ...

随机推荐

  1. java命令-jps

    jps命令,查看当前用户所有java进程pid 可进入/tmp/hsperfdata_xxx(登录用户名)路径下,可查看当前用户下所有的Java进程.jps.jconsole.jvisualvm等工具 ...

  2. Hadoop(一)阿里云hadoop集群配置

    集群配置 三台ECS云服务器 配置步骤 1.准备工作 1.1 创建/bigdata目录 mkdir /bigdatacd /bigdatamkdir /app 1.2修改主机名为node01.node ...

  3. Delphi 获取系统的语言环境参数GetSystemDefaultLangID、VerLanguageName、GetLocaleInfo

    1 核心的两个API函数:GetSystemDefaultLangID 和 VerLanguageName. GetSystemDefaultLangID:获得系统默认语言的ID VerLanguag ...

  4. 【多线程】synchronized 和ReentrantLock

    1. 锁的实现 synchronized 是 JVM 实现的,而 ReentrantLock 是 JDK 实现的. 2. 性能 新版本 Java 对 synchronized 进行了很多优化,例如自旋 ...

  5. 查询qq登陆状态

    function qq_status(){ if (empty($qq))$qq = 287959133; $url = 'http://wpa.qq.com/pa?p=2:'.$qq.':52'; ...

  6. 大碗宽面Alpha第九周会议总结

    软件工程每周博客: 本周二我们进行了小组会议,对正在做的评课网站——海大优选进行了整体分析和明确分工.首先我们对整体网页进行了需求分析和框架分析,然后进行了分工,前端同学两人,后端同学两人,文档同学一 ...

  7. <自动化测试>之<使用unittest Python测试框架进行参数化测试>

    最近在看视频时,虫师简单提到了简化自动化测试脚本用例中的代码量,而python中本身的参数化方法用来测试很糟糕,他在实际操作中使用了parameterized参数化... 有兴趣就查了下使用的方法,来 ...

  8. AcWing 233. 换教室 (期望DP+floyd)打卡

    题目:https://www.acwing.com/problem/content/235/ 题意:有n个时间段,这个时间段有两个地方授课ci,di,最开始是在ci,可以申请去di,但是是几率的,然后 ...

  9. 3D打印切片软件Cura及CuraEngine原理分析

    引言 年初开始进入3D打印行业,受命以Cura为基础,研发一款自主的3D打印切片软件. 自主研发要取其长处,补其不足,首先自然是要搞清楚Cura到底做了什么,读Cura的代码是必需的.我一向都觉得比起 ...

  10. php下载

    生成迅雷下载链接 $url = "http://www.xxx.com/xxx/test.jpg"; echo "thunder://".base64_enco ...