移动端 Web 开发前端知识整理

文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/

最近整理的移动端 Web 开发前端知识,不定期更新。

HTML5 可以做什么

  1. 拍照
  2. 获取地理位置
  3. 手势
  4. canvas 绘图和动画(硬件加速)
  5. localstorage,本地缓存

HTML5 动画效果 demo

http://fff.cmiscm.com/#!/main

CSS3 动画

http://isux.tencent.com/css3/index.html

http://beiyuu.com/css3-animation/

CSS3 实现的 Loading(加载)动画效果

基本的 HTML 文件结构

1234567891011121314151617181920
<!DOCTYPE HTML><html><head lang="zh-CN">    <meta charset="UTF-8">    <title>标题</title>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    <!-- 设置初始缩放比例为1.0,使用设备宽度  -->    <meta name="viewport"          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no">    <!-- 在iOS下开启全屏模式  -->    <meta name="apple-mobile-web-app-capable" content="yes">    <!-- 隐藏 Sarafi 状态栏  -->    <meta name="apple-mobile-web-app-status-bar-style" content="black">    <link href="/static/css/your_css.css" rel="stylesheet"/></head><body>

<script src="/static/js/your_js.js"></script></body></html>

DOM 操作库

zepto.js

jQuery

  1. jQuery 的目标是兼容所有主流浏览器,这就意味着它的大量代码对移动端的浏览器是无用或者低效的
  2. Zepto是一个轻量级的针对现代高级浏览器的JavaScript库,只针对移动端浏览器编写,因此体积更小、效率更高,更重要的是,它的 API 完全仿照 jQuery,如果你会用jquery,那么你也会用zepto。
  3. Zepto的设计目的是提供 jQuery 的类似的API,但并不是100%覆盖 jQuery 。Zepto设计的目的是有一个5-10k的通用库(目前最新版,gzip 压缩后只有 9.1k)、下载并快速执行、有一个熟悉通用的API,所以你能把你主要的精力放到应用开发上。

todo:zepto 与 jQuery 冲突问题

很多插件是基于jQuery 的,如果想要使用这些插件,又引入了 jQuery 将引起冲突,而且这时候 zepto 就没有引入的意义,但是有些框架又是基于 zepto,例如 frozenui。

UI 框架

frozenui(腾讯开源) 腾讯手 Q 风格

Amaze ~ 妹子 UI(国内开源)

jQuery.mmenu iOS 风格的菜单

bootstrap

semantic-ui

ratchet

jquery mobile

字体图标

Font Awesome

矢量,颜色大小可以自定义

自定义图标字体

http://fontello.com/

有时只需要使用到一部分的图标,可以通过自定义的方式来减小图标字体文件的大小。

HTML 模板引擎

AngularJS(Google 开源)

场景,需要要动态创建列表数据的时候

没有 AngularJS 之前,用 js 拼接出 HTML 字符串

1234567891011121314151617181920
function render_order_data(data) {    var obj_item_list = $(‘#item-list‘);    for (var i = 0; i < data.length; i++) {        var arr = [];        var d = data[i];        arr.push(‘<li class="ui-border-t">‘);        arr.push(‘<div class="item"><div><div>工单流水号</div><div>‘);        arr.push(d[‘id‘]);        arr.push(‘</div></div><div><div>工单标题</div><div>‘);        arr.push(d[‘title‘]);        arr.push(‘</div></div><div><div>申请时间</div><div>‘);        arr.push(d[‘createtime‘]);        arr.push(‘</div></div><div><div>商铺关键字</div><div>‘);        arr.push(d[‘shop_name‘]);        arr.push(‘</div></div><div><div>覆盖范围</div><div>‘);        arr.push(d[‘shop_lengths‘]);        arr.push(‘</div></li>‘);        obj_item_list.append(arr.join(‘‘));    }}

有了 AngularJS 之后,利用 AngularJS 的数据绑定,直接写 HTML 模板,清晰易懂

1234567891011
<tr ng-repeat="entry in entries">    <td ng-bind="page_info.offset + $index+1"></td>    <td ng-bind="entry.status"></td>    <td ng-bind="entry.elapsed + ‘ms‘"></td>    <td ng-bind="entry.code"></td>    <td ng-bind="entry.time"></td>    <td>        <span ng-bind="entry.result ? ‘Success‘ : ‘Failure‘"              class="label {{ entry.result ? ‘label-success‘ : ‘label-danger‘ }}">Success</span>    </td></tr>

AngularJS 学习资源

表单验证

HTML5 表单验证已经很强大,但是目前在 iOS 8 上面的浏览器仍然是不支持的,Android要 4.4 以上才支持。

boostrap 表单验证

Bootstrap Validator

http://1000hz.github.io/bootstrap-validator/

HAPPY.JS

Lightweight form validation for jQuery or Zepto.js

http://happyjs.com/

jQuery Form Validator

https://github.com/victorjonsson/jQuery-Form-Validator

AngularJS 本身有提供表单验证的功能

jquery-validation

jquery-validation

semantic-ui 自带表单验证

开发模式

前后端分离,接口开发与 HTML,CSS,JS 这些前端开发分离。

相关工具

IDE

Sublime Text

Sublime Text is a sophisticated text editor for code, markup and prose.
You’ll love the slick user interface, extraordinary features and amazing performance.

Jetbrains WebStorm(The smartest JavaScript IDE)

WebStorm is a lightweight yet powerful IDE, perfectly equipped for complex client-side development and server-side development with Node.js.

前端工具

静态文件缓存问题(重要)

由于默认情况下(服务器没有设置 expire header 为 -1 或 0) WebView 会缓存静态文件,如果没有更新静态文件的版本,会导致网站做了更新,而用户实际上仍在使用旧的文件。

静态资源版本更新与缓存

http://www.infoq.com/cn/articles/front-end-engineering-and-performance-optimization-part1

使用 FIS 工具解决

FIS (百度开源)

http://fis.baidu.com/

FIS是专为解决前端开发中自动化工具、性能优化、模块化框架、开发规范、代码部署、开发流程等问题的工具框架。可以实现静态文件压缩、合并、为文件名添加版本 md5 Hash。

调试工具

Chrome (Android iOS 都是 Webkit 内核)

Fiddler(抓包工具,需要借助 wi-fi 热点分享)

HTTP 服务器 Nginx

Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。

在前端开发中,经常作为反向代理服务器,用来在自己的开发电脑上,模拟生产环境,通过资源重定向和反向代理,可以同时访问部署在其他服务器上的接口或网站,以及自己电脑上正在开发的网页。

http://nginx.org/en/download.html

nginx 配置的一个例子

12345678910111213141516171819202122232425262728293031323334353637
server {  listen  *:5005;  access_log  logs/my_site_access.log;  error_log   logs/my_site_error.log;

  # 不缓存  expires      0;  # add_header   Cache-Control private;

  #location ~* \.html$ {  #  expires -1;  #}

  location / {    ssi on;    autoindex on;    # / 前缀的请求,定位到html目录下    root  "D:/WebStorm/my_site/html";    index  index.html index.htm;  }

 # /static 前缀的 uri 请求,定位到这个目录  location /static {    alias "D:/WebStorm/my_site/static";   } 

  # /@api_my_site 前缀的 uri,反向代理到 http://192.168.14.93:9999  # /@api_my_site 前缀的 uri 是 api_my_site 接口请求地址  location /@api_my_site {    # 重写 uri,原本的 uri 是 /@api_my_site/...     # 可以去掉前缀 /@api_my_site/    # rewrite /@api_my_site/(.*) /$1  break;

    proxy_pass http://192.168.14.93:9999;    proxy_set_header Cookie $http_cookie;  }}

在线工具

jsfiddle

Test and share JavaScript, CSS, HTML or CoffeeScript online.

在线即时展现 Html、JS、CSS 的编辑工具,可以有效的帮助 web 前端开发人员来有效分享和演示前端效果。

https://jsfiddle.net/

CSS3 HTML5 兼容性查询

查询 HTML5 和 CSS3 语法兼容性

http://caniuse.com/
http://mobilehtml5.org/

CSS 语法手册

http://tympanus.net/codrops/css_reference/

CSS设计指南(第3版)(文字版)

在线学习资源

慕课网

codeschool

codeacademy

JS 模块化加载

前端模块化开发的价值

Requirejs

Seajs (淘宝开源)

常用组件

回到页首

性能优化

  1. 移动网络的环境比较复杂,在调试的时候可以用 Chrome 模拟不同的网络环境,关注页面加载的数据量,和加载时间。

  1. 使用 CDN,常用的库一般会有 CDN 地址,也可以将自己的一些静态文件放在七牛上,七牛有免费的额度。
  2. 小图片转成 base64,减少 HTTP 请求
  3. css,js 文件压缩,启用GZip(HTTP服务器已开启 gzip)
  4. 服务器开启静态文件缓存,发布新版本时,需要对文件名加md5戳,使用 fis 工具(html 文件强制不缓存)。
  5. 大量的图片显示,可以使用 Canvas 画图,而不用 img 标签,Canvas 有硬件加速
  6. 无阻塞,写在HTML头部的JavaScript(无异步),和写在HTML标签中的Style会阻塞页面的渲染,因此CSS放在页面头部并使用Link方式引入,避免在HTML标签中写Style,JavaScript放在页面尾。
  7. 网页的渲染不支持硬件加速,dom很多很大的时候会很卡,Facebook 曾经就是因为这个原因放弃了html5,但现在又推出了一个 react js
  8. javascript 单线程,不要执行太复杂的任务,否则会导致页面卡住。
  9. 动画优化,尽量使用CSS3动画
  10. HTML5 的 Manifest 和 localstorage,在本地缓存文件和数据。

前端知识库

腾讯移动Web前端知识库 Mars

https://github.com/AlloyTeam/Mars

alloyteam 移动开发规范概述

http://alloyteam.github.io/Spirit/modules/Standard/index.html#overview

移动H5前端性能优化指南

http://isux.tencent.com/h5-performance.html

静态资源管理与模板框架

http://www.infoq.com/cn/articles/front-end-engineering-and-performance-optimization-part2

HTML5中40个最重要的技术点

http://www.techug.com/40-important-html-5-interview-questions-with-answers

Webkit WebApp 开发技术要点总结

http://www.cnblogs.com/pifoo/archive/2011/05/28/webkit-webapp.html

时间: 2024-12-20 01:07:53

移动端 Web 开发前端知识整理的相关文章

移动端web开发的一些知识点

整理一下自己平时移动端web开发中遇到的问题,也参考一下前辈的一些总结 1.最常见的要数1像素边框了 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在dpr=2的retina屏下会显示成2px. 但在IOS8中,已经支持0.5px了,那就意味着, 在devicePixelRatio=2的时候,我们可以使用css设置为0.5. 平时用的比较多的也是使用transform了: div{ height:1px; background:#000; -webkit-transform: sc

移动端web开发常见问题

上一篇总结了一些有关html5和css3的面试题,这一篇是有关于移动端web开发的常见问题,希望一样对你有一些帮助. Meta相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题"> 2. 启用 WebApp 全屏模式(IOS) 当网站添加到主屏幕后再点击进行启动时,可隐藏地址栏(从浏览器跳转或输入链接进入并没有此效果) <meta name="a

移动端webapp开发必备知识

移动端webapp开发必备知识 移动设备的用户越来越多,每天android手机的激活量都已经超过130万台,所以我们面向移动终端的WebAPP也开始跟进了.本文主要介绍webapp的开发与调试的相关知识和经验,以及给出几种可选的解决方案. 一.基本概念 (1) CSS pixels与device pixels CSS pixels: 浏览器使用的抽象单位, 主要用来在网页上绘制内容. device pixels: 显示屏幕的的最小物理单位,每个dp包含自己的颜色.亮度. 等值的 CSS pixe

安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)

一.让安卓打debug模式的apk包 二.将电脑中的chrome升级到最新版本,在chrome浏览器地址栏中输入chrome://inspect/#devices: 在智能手机还未普及时,移动设备的调试处处是alert的,这估计是最常用的办法了.以前很多时候为了预览页面在移动设备上的效果,需要先将页面上传到测试服务器,再将url输入到设备浏览器,或者使用第三方二维码扫码应用,通过移动设备访问打开浏览实际效果,每次换设备都要重复这些操作,页面多的话这些繁琐的事情就特别让人厌烦了.移动互联网的浪潮,

移动端web开发技巧(转)

原文链接:http://liujinkai.com/2015/06/06/mobile-web-skill/ 移动端web开发技巧 这是一个最好的时代,因为我们站在潮流中:但也是一个最坏的时代,因为我们站在潮头上. META相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题"> 2. 启用 WebApp 全屏模式(IOS) 当网站添加到主屏幕后再点击进行启动时,

0083 移动端WEB开发之响应式布局、bootstrap

移动端WEB开发之响应式布局 1. 响应式开发原理 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的. 设备的划分情况: 小于768的为超小屏幕(手机) 768~992之间的为小屏设备(平板) 992~1200的中等屏幕(桌面显示器) 大于1200的宽屏设备(大桌面显示器) 1.2 响应式布局容器 响应式需要一个父级做为布局容器,来配合子级元素来实现变化效果. 原理就是在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列

移动端Web开发调试之Chrome远程调试(Remote Debugging)

本篇主要说一下Chrome RemoteDebugging 的方法,之前也遇到一些坑,自己总结了一些经验,分享如下. Chrome DevTools调试移动设备Brower Page Tabs/WebViews 安卓远程调试目前支持所有操作系统(Windows,Mac, Linux, and Chrome OS.)中调试,支持: ● 调试站点的页面 ● 调试安卓原生App中的WebView ● 实时将安卓设备的屏幕图像同步显示到开发机器. ● 通过端口转发(port forwarding)与虚拟

移动端Web开发注意点

不用考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此类页面时不必纠结IE和其他一些2B浏览器的兼容性,webkit是本次开发重点. 当然,不同版本的Android是存在一些问题的,还有就是不同浏览器的版本也存在一些差别,IOS在这方面表现甚好. 所以在开发时我们只需使用Chrome进行调试即可,话说Chrome的开发者工具也是灰常不错的. 丰富的页面Meta 控制显示区域各种属性: <meta content="width=devic

移动端--web开发

最近看到群里对关于 移动端 web开发很是感兴趣,决定写一个关于 移动端的web开发 概念或框架(宝庆对此很是纠结).也是因为自己一直从事pc 浏览器 web一直对 移动端的不是很重视,所以趁此机会也让自己对 移动端的开发 有个清晰的认识. 环境: 1. 移动端的内核:手机浏览器的内核是什么 在文章中 Android 手机 采用 Webkit.其他的QQ,UC,飞豚 浏览器都基于此开发的.而在iOS以及WP7平台上,由于系统封闭,不允许除  系统自带浏览器内核以外的浏览器内核进入,因此各家浏览器