云顶集团400800044

当前位置:云顶集团400800044 > 云顶集团400800044 > Web应用中的离线数据存储,前生今世云顶集团4

Web应用中的离线数据存储,前生今世云顶集团4

来源:http://www.ofertasanjuan.com 作者:云顶集团400800044 时间:2019-10-08 07:33

Web应用中的离线数据存款和储蓄

2014/02/15 · HTML5, JavaScript · HTML5, Javascript

本文由 伯乐在线 - njuyz 翻译。未经许可,防止转发!
克罗地亚(Croatia)语出处:Nettuts+。迎接插足翻译组。

为了提高Web应用的客户体验,想必比相当多开拓者都会项目中引进离线数据存款和储蓄机制。可是面临五花八门标离线数据技能,哪个种类才是最能满意项目须要的吧?本文将帮扶各位找到最合适的那几个。

Gumbo:Google推出纯C编写的HTML5解析器

2013/08/15 · HTML5 · 1 评论 · HTML5

本文由 伯乐在线 - 黄利民 翻译。未经许可,禁绝转发!
德文出处:gumbo。款待到场翻译组。

Gumbo是二个 HTML5 解析算法落成,只用 C99 标准库编码达成,未有别的外界信任。其设计指标是为其它工具和库的支付提供支撑,那几个工具和库包括linters(JS检查器)、验证器、模板语言以及重商谈深入分析工具。

 

一篇真正教会你付出活动端页面的文章(二)

2017/12/07 · 基本功手艺 · 移动端

原稿出处: HcySunYang   

HTML 5 History API的”前生今世”

2014/10/23 · HTML5 · HTML5

原来的书文出处: tuts+   译文出处:遗忘浅思的博客(@dwido)   

History是有趣的,不是吧?在此前的HTML版本中,大家对浏览历史记录的操作特轻巧。大家得以来回使用可以动用的法子,但那正是一体大家能做的了。

而是,利用HTML 5的History API,我们得以越来越好的决定浏览器的历史记录了。举个例子:大家得以增添一条记下到历史记录的列表中,大概在并未有刷新时,能够立异鸿基土地资产址栏的U凯雷德L。

教你用 HTML5 制作Flappy Bird(上)

2014/03/22 · HTML5, JavaScript · 5 评论 · HTML5, Javascript

本文由 伯乐在线 - 杨帅 翻译。未经许可,制止转发!
葡萄牙共和国(República Portuguesa)语出处:lessmilk。迎接参预云顶集团400800044,翻译组。

大致在五个月前,小编给自个儿定了多个对象:周周在创立叁个HTML5新游戏。截止方今,笔者早已有了9款游戏。今后游人如织人盼望本人能写一下哪些构建那么些游戏,在那篇小说中,让我们来一齐用HTML5制作Flappy Bird。

云顶集团400800044 1

Flappy Bird是一款极度了不起且易于上手的游戏,能够用作二个很好的HTML5嬉戏的教程。在那片教程中,咱们利用Phaser框架写一个只有65行js代码的简化版Flappy Bird。

点击此处能够先体验一下我们就要要制作的玩乐。

提示1:你得会JavaScript
唤醒2:想学习更加多关于Phaser框架的学问能够看那篇文章getting started tutorial(近些日子做事忙,稍后翻译)

引言

趁着HTML5的到来,各类Web离线数据才能步入了开采人士的视线。诸如AppCache、localStorage、sessionStorage和IndexedDB等等,种种才具都有它们各自适用的局面。比如AppCache就相比较相符用于离线起动应用,也许在离线状态下使利用的一有些功用照常运作。接下来作者将会为我们作详细介绍,何况用一些代码片段来浮现怎样接纳这个本领。

Gumbo 的目的和特点:

  • 完全切合 HTML5 规范
  • 对不当输入有健壮性和弹性
  • 简言之的API,易于别的语言封装
  • 支撑对源文件定位
  • 相持轻量级,无外界重视
  • 经过具备 html5lib-0.95 测试
  • 在超过25亿的Google索引页面上测量试验过

 

运动端支出的干货篇

在此以前写了一篇作品《一篇真正教会你付出移动端一面包车型客车篇章(一)》/)。这是本篇小说的根基,若无读书过的同班能够去探视,今日就给大家带来干货,真真正正的讲到怎么着很好的付出三个移动端的页面

云顶集团400800044 2

好了,让大家开始吧,从何地起先吧?从布署性图开端,即PSD稿件:
运动端PSD稿件的尺寸鲜明相比较PC端的PSD稿件分裂,具体呈以往设计图的尺码上,今后移动端的设计图尺寸多数以三星5和HTC6的道具像素尺寸作为依赖,譬喻获得一张PSD设计图,它的总拉长率为640px(华为5)也许750px(索爱6)。本例就拿魅族6的安排性图尺寸为正式开展教学,另外设计图尺寸道理是同一的,那并不影响我们的开荒。

先是大家要有一张设计图才行,看下图,假诺我们有一张设计图,它很简单,只有八个革命的四方:

云顶集团400800044 3

得到了统一策动图,于是你开快乐心的起来写代码了,你展开了编辑器,并写下了如下HTML代码:

JavaScript

<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" /> </head> <body> <div class="box"></div> </body> </html>

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" />
</head>
<body>
 
    <div class="box"></div>
 
</body>
</html>

HTML代码写好了,你用了二个饱含box类的div标签作为ps稿中的木色块,经过尺寸度量,你为地点代码加多了CSS样式,最终你的代码是那般的:

JavaScript

<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" /> <style> body{ margin: 0; padding: 0; } .box{ width: 200px; height: 200px; background: red; } </style> </head> <body> <div class="box"></div> </body> </html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" />
    <style>
    body{
        margin: 0;
        padding: 0;
    }
    .box{
        width: 200px;
        height: 200px;
        background: red;
    }
    </style>
</head>
<body>
 
    <div class="box"></div>
 
</body>
</html>

地点的代码中,你只是在原来的根底上加码了CSS样式,首先你解决了body标签上的暗许样式,这么些没什么好说的,然后您根据安顿图中度量的尺码来给box编写样式,宽200px;高200px;背景草地绿。看上去并从未怎么问题,于是你开兴奋心的开采浏览器,刷新页面,你的气色沉了下去,因为你看来了您不想见见的结果,如下图,上海教室为设计稿的样式,下图为你编写的html文件的体制:

云顶集团400800044 4

云顶集团400800044 5

云顶娱乐平台注册,经过对照psd原稿和大家近期所写的html页面,可以观望大家html页面包车型大巴主题材料,黑古铜色方块与成套页面包车型的士比例和psd原稿区别样啊,那么为何我们映珍视帘是安分守己原稿衡量的尺码写出来的代码却和psd原稿显示的功能不一样啊?别忘了,psd原稿的尺码是比照设备像素设计的,由于大家所用的设计稿是依据一加6设计的,所以大家设计稿的尺码正是诺基亚6的设施像素的尺码,也正是750px,而大家CSS中的样式是依赖布局视口的尺寸总计的,由于大家html页面中由于写入了以下meta标签:

<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>

1
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>

在上一篇大家讲过, width=device-width 这段代码是让布局视口的尺码等于特出视口。
遵照公式(缩放比例为1):
设施像素比(DP纳瓦拉) = 设备像素个数 / 理想视口像素个数(device-width)
因为诺基亚6的DPCR-V(设备像素比)为2,设备像素为750,所以三星6的非凡视口尺寸为375px。所以地方代码最后导致的是:使大家布局视口的增幅形成了375px。而小编辈CSS中编辑的体制尺寸又是基于布局视口计算的,所以我们赢得的页面看上去比例不对,如下图:

云顶集团400800044 6
云顶集团400800044 7

如上边两幅图片,大家知道,psd稿的总宽是750px,成分宽200px,而作者辈的确做页面包车型大巴时候,布局视口的增进率是375px,正好是设计稿的十分之五。所以我们无法直接行使设计稿下边衡量所得的像素尺寸,依据比例,大家应当将度量所得的尺码除以2,才是大家CSS中布局所用的尺寸,据此,我们将200px除以2获取100px,于是大家修改代码,将金黄方块的宽高都设为100px,刷新页面,看看比例是还是不是和设计图一律了?答案是迟早的,如下图为修改后的html页面:

云顶集团400800044 8

如此,大家就获取了不易的多少,而且正确的写出了页面,你很乐意,不过难题来了,假设您在做页面包车型地铁时候,度量了二个因素的宽度,宽度是贰个奇数,举例111像素,依照我们事先的做法是,将度量到的数额除以2,得到大家真正使用的多少,所以111除以2等于55.5px,大家明白,Computer(手提式有线电话机)无法展现不到二个像素的像素值,Computer(手提式有线电电话机)会自动将其补全为叁个像素实行展现,所以最终会将成分展现为56像素,那而不是我们想要的结果。
其它,大家的设计稿是依据iphone6设计的,大家调节和测试页面也是在iphone6下调节和测量试验的。又因为iphone6的设备像素比试2,所以大家能力由陈设稿衡量的数量除以2后一贯行使,况兼在iphone6下没相当,不过你要知道,并非有所手提式有线电话机的设施像素比都是2,有的手提式有线电话机的设备像素比试2.5照旧3。並且不一样器具的装置像素又不一样,那样就导致理想视口的尺寸不一样,进而致使布局视口的尺码差别,那么大家一贯依据iphone6的绸缪稿尺寸除以2获得的尺码用来编排CSS是无法在富有道具下完全展现的。

由此,大家要换二个方法。
于是我们想到:假若大家能将布局视口的尺码设置为和配备像素尺寸相等的话,那样我们就保障了设计图与页面包车型地铁1:1关系,那么咱们就足以一向运用psd中度量的尺寸了,然后在其它尺寸的手提式有线电话机中,大家开展等比缩放就ok了。那么什么样本领让布局视口的尺码等于设备像素尺寸呢?

我们注意到meta标签中的 width=device-width 这段代码,首先你要知道那句话的情趣,后面讲过,这句话最终导致的结果是:让布局视口的尺寸等于能够视口的尺码。言外之音就是,在代码 width=device-width 中:

width:是布局视口的width
device-width:是优秀视口的肥瘦

凭仗公式(缩放比例为1):

设备像素比(DPXC60) = 设备像素个数 / 理想视口像素个数(device-width)

以iphone6为例:
设备像素比(DP奥迪Q5):2
装备像素个数:750
所以在缩放比例为1的情形下,iphone6理想视口的像素个数为 750 / 2 = 375,也正是说,对于iphone6来说 device-width的值为375

为此大家因而width=device-width那句话,直接的将布局视口的尺寸设为了375,也等于说,假设我们能更改理想视口的尺寸,也就更改了布局适口的尺码,怎么着改动理想视口的尺码呢?那就要讲到缩放了,上一篇大家讲到过缩放,缩放是降低或放大CSS像素的进程,以iphone6为例,当大家缩放比例为1:1的时候,由于iphone6的装置像素比为2,所以iphone6的配备像素与CSS像素的关联看起来就如下图那样:

云顶集团400800044 9

一个CSS像素宽度等于三个设备像素宽度,所以750px的装置宽度的布局视口为357CSS像素。那是在缩放比例为1的场馆下,既然缩放能够推广或降低CSS像素,所以要是大家将CSS像素的大幅度缩放至与道具像素宽度相等了,那么748个设施像素也就会显得748个CSS像素,缩放后的装置像素与CSS像素看起来应当像下图这样:

云顶集团400800044 10

而是,大家的缩放倍数是不怎么啊?在缩放比例为1的时候,三个CSS像素的宽度 = 五个设备像素的宽窄,纵然大家想让 三个CSS像素的幅度 = 一个配备像素的幅度,大家将在将CSS像素裁减为原来的0.5倍,实际上,大家缩短的倍数 = 设备像素比的尾数。
于是乎,我们修改上边的HTML代码(修改了meta标签):

JavaScript

<html> <head> <title></title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=0.5,maximum-scale=0.5,user-scalable=no" /> <style> body{ margin: 0; padding: 0; } .box{ width: 200px; height: 200px; background: red; } </style> </head> <body> <div class="box"></div> </body> </html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=0.5,maximum-scale=0.5,user-scalable=no" />
    <style>
    body{
        margin: 0;
        padding: 0;
    }
    .box{
        width: 200px;
        height: 200px;
        background: red;
    }
    </style>
</head>
<body>
 
    <div class="box"></div>
 
</body>
</html>

注意,上边代码中大家给革命方块使用的CSS尺寸直接利用的是psd稿中度量的尺码,大家刷新页面,怎么样?满足吗:

云顶集团400800044 11

唯独大家那是有个前提的,那正是缩放0.5倍只适用于设备像素比为2的装置(因为缩放值 = 1 / 装置像素比)。所以,为了适应全数的配备,大家相应用javascript代码动态生成meta标签:

var scale = 1 / window.devicePixelRatio; document.querySelector('meta[name="viewport"]Web应用中的离线数据存储,前生今世云顶集团400800044:。').setAttribute('content','width=device-width,initial-scale='

  • scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
1
2
var scale = 1 / window.devicePixelRatio;
document.querySelector('meta[name="viewport"]').setAttribute('content','width=device-width,initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');

其中 window.devicePixelRatio 的值为设备像素比。
于是乎大家的代码变成了如此:

JavaScript

<html> <head> <title></title> <meta charset="utf-8" /> <meta name="viewport" content="" /> <style> body{ margin: 0; padding: 0; } .box{ width: 200px; height: 200px; background: red; } </style> </head> <body> <div class="box"></div> <script> var scale = 1 / window.devicePixelRatio; document.querySelector('meta[name="viewport"]').setAttribute('content','width=device-width,initial-scale='

  • scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no'); </script> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <meta name="viewport" content="" />
    <style>
    body{
        margin: 0;
        padding: 0;
    }
    .box{
        width: 200px;
        height: 200px;
        background: red;
    }
    </style>
</head>
<body>
 
    <div class="box"></div>
 
    <script>
    var scale = 1 / window.devicePixelRatio;
    document.querySelector('meta[name="viewport"]').setAttribute('content','width=device-width,initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
    </script>
</body>
</html>

上边的代码最后能保险多少个题材,那正是不管任何设施,布局视口的大幅度总是等于设备像素。
诸如此比,大家在陈设图中度量为200px的宽窄就会一直用在CSS中了,何况在iphone6中呈现完好,可是别忘了,大家的规划图就是依据iphone6设计的,如若换做任何设备,还是能够展现完好么?大家不要紧试一下,如下图,是上边代码在iphone5和iphone6下的自己检查自纠:

云顶集团400800044 12

云顶集团400800044 13

大家发掘,无论是五依旧6,即便设备像素变了,即显示器宽度变了,可是暗青方块的增长幅度并不曾变,那并非三个好的光景,因为如此页面包车型客车因素就不成比例了,会耳熏目染到布局,所以大家要想办法让大家页面包车型大巴成分跟着设备转移而等比缩放,那正是大家要消除的第1个难点,怎么落到实处呢?这将要讲到rem的知识点了。

缘何介绍History API ?

在这篇小说中,大家将精晓HTML 5中History API的来源。从前,我们平常采纳散列值来改换页面内容,非常是那多少个对页面特别重大的剧情。因为尚未刷新,所以对于单页面应用,改变其U奥迪Q5L是不容许的。其余,当您转移U奥迪Q3L的散列值值,它对浏览器的历史记录未有其它影响。

接下来,今后对于HTML 5的History API来说,这么些都是足以轻便实现的,但是由于单页面应用没供给运用散列值,它只怕要求极度的支出脚本。它也允许大家用一种对SEO友好的不二等秘书技确立新利用。别的,它能压缩带宽,然而该怎么表明呢?

在小说中,作者将用History API开拓八个单页应用来证实上述的题目。

这也代表本身必得先在首页加载需要的财富。现在始发,页面仅仅加载须要的剧情。换句话说,应用并不是一齐始就加载了任何的源委,在伸手第3个使用内容时,才会被加载。

瞩目,您必要实行一些服务器端编码只提供一些财富,实际不是全体的页面内容。

设置

先下载笔者为教程制作的模板,里面包含:

  • phaser.min.js, 简化了的Phaser框架v1.1.5
  • index.html, 用来彰显游戏的文书
  • main.js, 大家写代码的地点
  • asset/, 用来保存小鸟和管子的图片的文本夹(bird.png和pipe.png)

用浏览器打开index.html,用文件编辑器张开main.js

在main.js中可以见到我们在此之前提到的Phaser工程的基本构造

JavaScript

// Initialize Phaser, and creates a 400x490px game var game = new Phaser.Game(400, 490, Phaser.AUTO, 'game_div'); // Creates a new 'main' state that will contain the game var main_state = { preload: function() { // Function called first to load all the assets }, create: function() { // Fuction called after 'preload' to setup the game }, update: function() { // Function called 60 times per second }, }; // Add and start the 'main' state to start the game game.state.add('main', main_state); game.state.start('main');

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Initialize Phaser, and creates a 400x490px game
var game = new Phaser.Game(400, 490, Phaser.AUTO, &#039;game_div&#039;);
 
// Creates a new &#039;main&#039; state that will contain the game
var main_state = {
 
    preload: function() {
        // Function called first to load all the assets
    },
 
    create: function() {
        // Fuction called after &#039;preload&#039; to setup the game    
    },
 
    update: function() {
        // Function called 60 times per second
    },
};
 
// Add and start the &#039;main&#039; state to start the game
game.state.add(&#039;main&#039;, main_state);  
game.state.start(&#039;main&#039;);

接下去大家三回到位preload(),create()和update()方法,并扩张一些新的办法。

本文由云顶集团400800044发布于云顶集团400800044,转载请注明出处:Web应用中的离线数据存储,前生今世云顶集团4

关键词: