前端小小白的学习之路html5最佳实践webapp

Tom_Lo      2022-02-10     760

关键词:

简介 
本文重点关注如何充分利用HTML5和CSS让web app运行更加流畅.

Tip 1: 使用web storage代替cookie 
cookie最大的缺陷是在每一次HTTP请求中都会携带所有符合规则的cookie数据.这会增加请求响应时间,特别是XHR请求. 
在HTML5中使用sessionStoragelocalStorage代替cookie是更好的做法.

这种方法可以将数据永久或者以session时间存储在用户本地.数据不会随着HTTP请求传递.所以我们优先使用web storage,仅仅使用cookie作为替代方案.

// if localStorage is present, use that

if ((‘localStorage‘ in window) && window.localStorage !== null) {

 

 // easy object property API

 localStorage.wishlist = ‘["unicorn", "Narwhal", "deathbear"]‘;

 

} else {

 

 // without sessionStorage we‘ll have to use a far-future cookie

 // with document.cookie‘s awkward API

 var date = new Date();

 date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000));

 var expires = date.toGMTString();

 var cookiestr = ‘wishlist=["unicorn", "Narwhal", "deathbear"];‘ +

                 ‘ expires=‘ + expires + ‘; path=/‘;

 document.cookie = cookiestr;

}

Tip 2: 使用CSS Transition代替JavaScript动画

CSS Transition能带来更高的性能,更少的代码,更容易维护和理解.

Tip 3: 使用客户端数据库代替服务器请求

Web SQL Database和IndexedDB让浏览器有了数据库存储能力.很多应用场景可以迁移到客户端数据库以减少服务器的请求次数.

localStoragesessionStorage在简单数据存储时比客户端数据库更快,可以用来实现一些简单的状态,进度保存.

当一个组件需要管理上百条数据(如好友列表),同时支持用户搜索, 过滤, 排序时, 客户端数据库存储一份数据可以有效减少HTTP请求次数. 查看Web SQL Database tutorial获取详细指导.

Tip 4: 使用JavaScript原生API

随着更高版本JavaScript的普及, 像Array prototype新增了很多API都可以在大多数浏览器中直接使用.例如:

// give me a new array of all values multiplied by 10

[5, 6, 7, 8, 900].map(function (value) {

 return value * 10;

});

// [50, 60, 70, 80, 9000]

 

// create links to specs and drop them into #links.

var linksList = document.querySelector(‘#links‘);

var links = [];

[‘html5‘, ‘css3‘, ‘webgl‘].forEach(function (value) {

 

 links.push(value.link(‘http://google.com/search?btnI=1&q=‘ + value + ‘ spec‘));

});

linksList.innerHTML = links.join(‘‘);

 

// return a new array of all mathematical constants under 2

[3.14, 2.718, 1.618].filter(function (number) {

 return number < 2;

});

 

// you can also use these extras on other collections link nodeLists

[].forEach.call(document.querySelectorAll(‘section[data-bucket]‘),

 function (elem, i) {

   localStorage[‘bucket‘ + i] = elem.getAttribute(‘data-bucket‘);

});

通常情况下这些原生方法比手动编写循环要快:

for (var i = 0, len = arr.length; i < len; ++i) {

}

使用原生JSON.parse()json2.js更加高效,安全.

原生的String.prototype.trim也是一个很好的例子, 这些功能不是HTML5中的,也应该得到广泛的应用.

Tip 5: 不仅仅为离线app使用cache manifest,在线网站网站也可以适当使用

后台管理系统这样的站点使用缓存可以极大提高性能.

cache manifest比设置Expires有一些优势:明确地声明需要缓存的文件,浏览器可以进行优化,可能在你使用之前就已经提前下载到本地了.

可以将页面基本结构看做模板, 显示的内容随着数据变化, 将可模板化的HTML结构通过cache.manifest进行缓存, 从服务器端获取JSON数据之后更新内容.

查看application cache tutorial获取详细指导.

Tip 6: enable硬件加速来增强视觉体验

某些浏览器可能使用GPU加速让高速动画更加平滑.Firefox Minefield, IE9, Safari已经宣称实现了硬件加速. Chromium也增加了window平台的3D transform加速.各个浏览器对硬件加速的支持肯定会越来越好.

在支持并启动了硬件加速的情况下, 动画, rotation, scaling, opacity肯定会更加平滑. 所有实际操作都发生在GPU而不需要内容的重绘. 然而需要注意的是,任何影响页面布局的操作都会降低速度.

Tip 7: 使用web worker执行需要大量CPU资源的操作

web worker有两个好处: 1) 快速 2) 不阻塞浏览器响应. 点击web worker slide查看更多信息.

web worker的一些可能的使用场景:

长文本格式化

语法高亮

图片处理

图片合成

大数组处理

Tip 8: HTML5 表单属性和input类型

HTML5增加了一系列input type,包括search, tel, url, email, datetime, date, month, week, time, number, range, color等. 在支持这些功能的浏览器中使用原生功能, js插件作为补充.

placeholder, required, pattern都能极大提高页面的可用性,和性能.

Tip 9: 使用CSS3减少图片的使用

减少图片能减少HTTP请求,同时减少页面大小,更容易维护,常用的属性如下:

linear and radial gradients

border-radius

box-shadow

rgba

transform

css mask

常见的使用场景有: polished buttons via gradients, replicate many other effects

Tip 10: 使用WebSocket代替XHR提供更快交互和更少的带宽

WebSockets是为了Comet而设计的. 使用它实现Comet比XHR确实带来更多的好处.

参考:http://mp.weixin.qq.com/s/U8FRxmcHAQIGKpfWjAm-7w

前端小小白的学习之路vue学习记录⑤(组件通信-父与子)

今天我们看一下组件通信。经过前面几篇文章,我们已经可以构建出完整的单个组件,并利用路由使其串联起来访问了。但这明显还是不够的。一个页面不可能就是个单组件,一般是由多个组件合成的。正因为如此,组件之间肯... 查看详情

前端小小白的学习之路javascript中的十个难点,你有必要知道。

1.立即执行函数立即执行函数,即ImmediatelyInvokedFunctionExpression(IIFE),正如它的名字,就是创建函数的同时立即执行。它没有绑定任何事件,也无需等待任何异步操作:(function(){//代码//...})();function(){…}是一个匿名函数,包围... 查看详情

前端小白的学习之路--html学习

HTML的补充学习1.meta与base<metahttp-equiv="refresh"content="2">2秒刷新一次<basehref="https://www.baidu.com"target="_blank">设置默认跳转地址以及跳转方式<linkrel="icon 查看详情

前端:html5学习之路

第1章HTML5基础  关于HTML5基础这一部分的内容没有明显边界。各种HTML5教材关于HTML5基础知识的介绍大同小异,这里不做过多赘述。  1. 我们要把HTML5简单用起来,首先要学会新建HTML5文档。每个网页都包含doctype、html、head... 查看详情

为 webapp 存储临时数据的最佳实践 [重复]

】为webapp存储临时数据的最佳实践[重复]【英文标题】:Bestpracticetostoretemporarydataforawebapp[duplicate]【发布时间】:2010-12-3011:52:14【问题描述】:我的最新项目能够使用来自数据库的信息生成文档。所以我根据需要将文档模板复制... 查看详情

fpga小白学习之路erro:buffersofthesamedirectioncannotbeplacedinseries

锁相环PLL默认输入前端有个IBUFG单元,在输出端有个BUFG单元,而两个BUFG(IBUFG)不能相连,所以会报这样的错:ERROR:NgdBuild:770-IBUFG‘u_pll0/clkin1_buf‘andBUFG‘BUFG_inst‘onnet  ‘clkin_w‘arelinedupinseries.Buffersofthesamedirectioncannot 查看详情

猿创征文|我的前端——html5基础成长学习之路

文章目录前言一、网页的基本组成1.什么是网页2.什么是HTML3.网页的形成 二、常用的浏览器1.常用的浏览器2.浏览器内核三、Web标准1.为什么需要web标准2.Web标准的构成前言在一次机缘巧合之下了解并接触到CSDN,从此开启了我I... 查看详情

小白艰苦学习之路(记录学习历程——html篇)day8(代码片段)

注:Day7是Java简单算法练习,就不放上来啦。我更改了一下学习路线,所以以后的博客内容将会是HTML和Java的穿插学习!大家一起加油哦!Day8(HTML基础)初始HTML什么是HTMLHTML发展史HTML5的优势W3C标准常... 查看详情

小白艰苦学习之路(记录学习历程——html篇)day8(代码片段)

注:Day7是Java简单算法练习,就不放上来啦。我更改了一下学习路线,所以以后的博客内容将会是HTML和Java的穿插学习!大家一起加油哦!Day8(HTML基础)初始HTML什么是HTMLHTML发展史HTML5的优势W3C标准常... 查看详情

java学习之路(转)

 一、基础类1、《Thinkinginjava》(阅读2遍),入门第一位是建立正确的概念2、《CoreJava》这本书更贴近实践,更多API的介绍,同样,更新也更频繁。(可以选重点章节读一下)二、进阶类1、《EffectiveJava》(阅读1遍),在熟悉语法、AP... 查看详情

在 WebApp 中创建和下载巨大 ZIP(来自多个 BLOB)的最佳实践

】在WebApp中创建和下载巨大ZIP(来自多个BLOB)的最佳实践【英文标题】:BestPracticestoCreateandDownloadahugeZIP(fromseveralBLOBs)inaWebApp【发布时间】:2013-05-1105:24:26【问题描述】:我需要从我的Web应用程序执行大量文件下载。这显然是一... 查看详情

小白的进阶之路7

 注解:昨天学了配置文件,感觉还不错,确实之前new的方式好了很多,今天继续学习注解。OK,开始进的入门案例第一步,配置扫描注解,注意:其中base-package 后面的参数是应new的对象所在包。第二步,在需要注解的实... 查看详情

《机器学习及实践--从零开始通往kaggle竞赛之路》

《机器学习及实践--从零开始通往Kaggle竞赛之路》在开始说之前一个很重要的Tip:电脑至少要求是64位的,这是我的痛。断断续续花了个把月的时间把这本书过了一遍。这是一本非常适合基于python入门的机器学习入门的书籍,全... 查看详情

前端小白之每天学习记录----angula2--

1.1 Angular的发展历史 1.1.1angular起源GetAngular====>byMiskoHeveryandAdamAbrons开发效率高AnguarJS1.1.2迭代之路12年6月AngularJS1===》双向绑定、依赖注入、指令AngularJS1.3.x====》推出单次绑定语法放弃ie8浏览器支持AngularJS1.5.x=====》增加了... 查看详情

2022版完整版web前端学习路线图(超详细自学路线)

跟着路线图认真坚持学习从前端小白到大神不是梦,0基础看这一篇足矣!学们记得加关注点赞收藏,自学路上不迷糊!零基础小白自学前端路线图速览: 阶段一:核心基础入门前端计算机常识➾html+css... 查看详情

某小白的编程之路—从第一篇博客开始

目录1.个人介绍2.我与编程的那些事3.关于学习编程4.个人未来的目标1.个人介绍: 我是初次迈上秃头之旅的一位大一新生,正是人生中最迷茫的时期,自小比较喜欢玩电脑,因此选择了软件工程专业学习。在学习... 查看详情

webapp阅读器项目实践

...Reader。  项目属于麻雀虽小,但五脏俱全的类型,对于前端新手来说,还是很有学习价值。  一、项目成果展示二、项目所用技术语言:Html,css,js插件:zepto.js:使用于移动端的js库,语法与jqu 查看详情

小白到大神,你需要了解的sqlite最佳实践(代码片段)

本文微信公众号「AndroidTraveler」首发。背景本文是对一篇英文文档的翻译,原文请见文末链接。并发数据库访问假设你实现了自己的SQLiteOpenHelper。publicclassDatabaseHelperextendsSQLiteOpenHelper...现在你想要在多个线程中对数据库写入数... 查看详情