整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

关于 HTML5 你需要了解的基础知识

TML5 是第五个且是当前的 HTML 版本,它是用于在万维网上构建和呈现内容的标记语言。本文将帮助读者了解它。 -- Palak Shah

本文导航
  • -新标签和元素 …… 08%

  • -HTML5 的高级功能 …… 16%

  • -地理位置 …… 16%

  • -网络存储 …… 33%

  • -应用缓存(AppCache) …… 44%

  • -视频 …… 50%

  • -音频 …… 61%

  • -画布(Canvas) …… 71%

  • -HTML5 工具 …… 78%

编译自: http://opensourceforu.com/2017/06/introduction-to-html5/

作者: Palak Shah

译者: geekpi

HTML5 是第五个且是当前的 HTML 版本,它是用于在万维网上构建和呈现内容的标记语言。本文将帮助读者了解它。

HTML5 通过 W3C 和Web 超文本应用技术工作组Web Hypertext Application Technology Working Group之间的合作发展起来。它是一个更高版本的 HTML,它的许多新元素可以使你的页面更加语义化和动态。它是为所有人提供更好的 Web 体验而开发的。HTML5 提供了很多的功能,使 Web 更加动态和交互。

HTML5 的新功能是:

  • 新标签,如 <header> 和 <section>

  • 用于 2D 绘图的 <canvas> 元素

  • 本地存储

  • 新的表单控件,如日历、日期和时间

  • 新媒体功能

  • 地理位置

HTML5 还不是正式标准(LCTT 译注:HTML5 已于 2014 年成为“推荐标准”),因此,并不是所有的浏览器都支持它或其中一些功能。开发 HTML5 背后最重要的原因之一是防止用户下载并安装像 Silverlight 和 Flash 这样的多个插件。

新标签和元素

  • 语义化元素: 图 1 展示了一些有用的语义化元素。

  • 表单元素: HTML5 中的表单元素如图 2 所示。

  • 图形元素: HTML5 中的图形元素如图 3 所示。

  • 媒体元素: HTML5 中的新媒体元素如图 4 所示。

图 1:语义化元素

图 2:表单元素

图 3:图形元素

图 4:媒体元素

HTML5 的高级功能

地理位置

这是一个 HTML5 API,用于获取网站用户的地理位置,用户必须首先允许网站获取他或她的位置。这通常通过按钮和/或浏览器弹出窗口来实现。所有最新版本的 Chrome、Firefox、IE、Safari 和 Opera 都可以使用 HTML5 的地理位置功能。

地理位置的一些用途是:

  • 公共交通网站

  • 出租车及其他运输网站

  • 电子商务网站计算运费

  • 旅行社网站

  • 房地产网站

  • 在附近播放的电影的电影院网站

  • 在线游戏

  • 网站首页提供本地标题和天气

  • 工作职位可以自动计算通勤时间

工作原理: 地理位置通过扫描位置信息的常见源进行工作,其中包括以下:

  • 全球定位系统(GPS)是最准确的

  • 网络信号 - IP地址、RFID、Wi-Fi 和蓝牙 MAC地址

  • GSM/CDMA 蜂窝 ID

  • 用户输入

该 API 提供了非常方便的函数来检测浏览器中的地理位置支持:

if (navigator.geolocation) {

// do stuff

}

getCurrentPosition API 是使用地理位置的主要方法。它检索用户设备的当前地理位置。该位置被描述为一组地理坐标以及航向和速度。位置信息作为位置对象返回。

语法是:

getCurrentPosition(showLocation, ErrorHandler, options);
  • showLocation:定义了检索位置信息的回调方法。

  • ErrorHandler(可选):定义了在处理异步调用时发生错误时调用的回调方法。

  • options (可选): 定义了一组用于检索位置信息的选项。

我们可以通过两种方式向用户提供位置信息:测地和民用。

  1. 描述位置的测地方式直接指向纬度和经度。

  2. 位置信息的民用表示法是人类可读的且容易理解。

如下表 1 所示,每个属性/参数都具有测地和民用表示。

图 5 包含了一个位置对象返回的属性集。

图5:位置对象属性

网络存储

在 HTML 中,为了在本机存储用户数据,我们需要使用 JavaScript cookie。为了避免这种情况,HTML5 已经引入了 Web 存储,网站利用它在本机上存储用户数据。

与 Cookie 相比,Web 存储的优点是:

  • 更安全

  • 更快

  • 存储更多的数据

  • 存储的数据不会随每个服务器请求一起发送。只有在被要求时才包括在内。这是 HTML5 Web 存储超过 Cookie 的一大优势。

有两种类型的 Web 存储对象:

  1. 本地 - 存储没有到期日期的数据。

  2. 会话 - 仅存储一个会话的数据。

如何工作: localStorage 和 sessionStorage 对象创建一个 key=value 对。比如: key="Name", value="Palak"。

这些存储为字符串,但如果需要,可以使用 JavaScript 函数(如 parseInt() 和 parseFloat())进行转换。

下面给出了使用 Web 存储对象的语法:

  • 存储一个值:

  • localStorage.setItem("key1", "value1");

  • localStorage["key1"] = "value1";

  • 得到一个值:

  • alert(localStorage.getItem("key1"));

  • alert(localStorage["key1"]);

  • 删除一个值: -removeItem("key1");

  • 删除所有值:

  • localStorage.clear();

应用缓存(AppCache)

使用 HTML5 AppCache,我们可以使 Web 应用程序在没有 Internet 连接的情况下脱机工作。除 IE 之外,所有浏览器都可以使用 AppCache(截止至此时)。

应用缓存的优点是:

  • 网页浏览可以脱机

  • 页面加载速度更快

  • 服务器负载更小

cache manifest 是一个简单的文本文件,其中列出了浏览器应缓存的资源以进行脱机访问。 manifest 属性可以包含在文档的 HTML 标签中,如下所示:

<html manifest="test.appcache">

...

</html>

它应该在你要缓存的所有页面上。

缓存的应用程序页面将一直保留,除非:

  1. 用户清除它们

  2. manifest 被修改

  3. 缓存更新

视频

在 HTML5 发布之前,没有统一的标准来显示网页上的视频。大多数视频都是通过 Flash 等不同的插件显示的。但 HTML5 规定了使用 video 元素在网页上显示视频的标准方式。

目前,video 元素支持三种视频格式,如表 2 所示。

下面的例子展示了 video 元素的使用:

<! DOCTYPE HTML>

<html>

<body>

<video src=" vdeo.ogg" width="320" height="240" controls="controls">

This browser does not support the video element.

</video>

</body>

</html>

例子使用了 Ogg 文件,并且可以在 Firefox、Opera 和 Chrome 中使用。要使视频在 Safari 和未来版本的 Chrome 中工作,我们必须添加一个 MPEG4 和 WebM 文件。

video 元素允许多个 source 元素。source 元素可以链接到不同的视频文件。浏览器将使用第一个识别的格式,如下所示:

<video width="320" height="240" controls="controls">

<source src="vdeo.ogg" type="video/ogg" />

<source src=" vdeo.mp4" type="video/mp4" />

<source src=" vdeo.webm" type="video/webm" />

This browser does not support the video element.

</video>

图6:Canvas 的输出

音频

对于音频,情况类似于视频。在 HTML5 发布之前,在网页上播放音频没有统一的标准。大多数音频也通过 Flash 等不同的插件播放。但 HTML5 规定了通过使用音频元素在网页上播放音频的标准方式。音频元素用于播放声音文件和音频流。

目前,HTML5 audio 元素支持三种音频格式,如表 3 所示。

audio 元素的使用如下所示:

<! DOCTYPE HTML>

<html>

<body>

<audio src=" song.ogg" controls="controls">

This browser does not support the audio element.

</video>

</body>

</html>

此例使用 Ogg 文件,并且可以在 Firefox、Opera 和 Chrome 中使用。要在 Safari 和 Chrome 的未来版本中使 audio 工作,我们必须添加一个 MP3 和 Wav 文件。

audio 元素允许多个 source 元素,它可以链接到不同的音频文件。浏览器将使用第一个识别的格式,如下所示:

<audio controls="controls">

<source src="song.ogg" type="audio/ogg" />

<source src="song.mp3" type="audio/mpeg" />

This browser does not support the audio element.

</audio>

画布(Canvas)

要在网页上创建图形,HTML5 使用 画布 API。我们可以用它绘制任何东西,并且它使用 JavaScript。它通过避免从网络下载图像而提高网站性能。使用画布,我们可以绘制形状和线条、弧线和文本、渐变和图案。此外,画布可以让我们操作图像中甚至视频中的像素。你可以将 canvas 元素添加到 HTML 页面,如下所示:

<canvas id="myCanvas" width="200" height="100"></canvas>

画布元素不具有绘制元素的功能。我们可以通过使用 JavaScript 来实现绘制。所有绘画应在 JavaScript 中。

<script type="text/javascript">

var c=document.getElementById("myCanvas");

var cxt=c.getContext("2d");

cxt.fillStyle="blue";

cxt.storkeStyle = "red";

cxt.fillRect(10,10,100,100);

cxt.storkeRect(10,10,100,100);

</script>

以上脚本的输出如图 6 所示。

你可以绘制许多对象,如弧、圆、线/垂直梯度等。

HTML5 工具

为了有效操作,所有熟练的或业余的 Web 开发人员/设计人员都应该使用 HTML5 工具,当需要设置工作流/网站或执行重复任务时,这些工具非常有帮助。它们提高了网页设计的可用性。

以下是一些帮助创建很棒的网站的必要工具。

  • HTML5 Maker: 用来在 HTML、JavaScript 和 CSS 的帮助下与网站内容交互。非常容易使用。它还允许我们开发幻灯片、滑块、HTML5 动画等。

  • Liveweave: 用来测试代码。它减少了保存代码并将其加载到屏幕上所花费的时间。在编辑器中粘贴代码即可得到结果。它非常易于使用,并为一些代码提供自动完成功能,这使得开发和测试更快更容易。

  • Font dragr: 在浏览器中预览定制的 Web 字体。它会直接载入该字体,以便你可以知道看起来是否正确。也提供了拖放界面,允许你拖动字形、Web 开放字体和矢量图形来马上测试。

  • HTML5 Please: 可以让我们找到与 HTML5 相关的任何内容。如果你想知道如何使用任何一个功能,你可以在 HTML Please 中搜索。它提供了支持的浏览器和设备的有用资源的列表,语法,以及如何使用元素的一般建议等。

  • Modernizr: 这是一个开源工具,用于给访问者浏览器提供最佳体验。使用此工具,你可以检测访问者的浏览器是否支持 HTML5 功能,并加载相应的脚本。

  • Adobe Edge Animate: 这是必须处理交互式 HTML 动画的 HTML5 开发人员的有用工具。它用于数字出版、网络和广告领域。此工具允许用户创建无瑕疵的动画,可以跨多个设备运行。

  • Video.js: 这是一款基于 JavaScript 的 HTML5 视频播放器。如果要将视频添加到你的网站,你应该使用此工具。它使视频看起来不错,并且是网站的一部分。

  • The W3 Validator: W3 验证工具测试 HTML、XHTML、SMIL、MathML 等中的网站标记的有效性。要测试任何网站的标记有效性,你必须选择文档类型为 HTML5 并输入你网页的 URL。这样做之后,你的代码将被检查,并将提供所有错误和警告。

  • HTML5 Reset: 此工具允许开发人员在 HTML5 中重写旧网站的代码。你可以使用这些工具为你网站的访问者提供一个良好的网络体验。


Palak Shah

作者是高级软件工程师。她喜欢探索新技术,学习创新概念。她也喜欢哲学。你可以通过 palak311@gmail.com[1] 联系她。


via: http://opensourceforu.com/2017/06/introduction-to-html5/

作者:Palak Shah[2] 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

点击“了解更多”可访问文内链接

作者:charryhuang;转自:腾讯技术工程

1991 年 8 月,第一个静态页面诞生了,这是由 Tim Berners-Lee 发布的,想要告诉人们什么是万维网。从静态页面到 Ajax 技术,从 Server Side Render 到 React Server Components,历史的车轮滚滚向前,一个又一个技术诞生和沉寂。

前言

1994 年,万维网联盟(W3C,World Wide Web Consortium)成立,超文本标记语言(HTML,Hyper Text Markup Language)正式确立为网页标准语言,我们的旅途从此开始。
本文将沿着时间线,从“发现问题-解决问题”的角度,带领大家了解 Web 技术发展的关键历程,了解典型技术的诞生以及技术更迭的缘由,思考技术发展的原因。

Tim Berners-Lee

Tim Berners-Lee(蒂姆·伯纳斯·李),英国科学家,万维网之父,于 1989 年在欧洲核子研究组织(CERN)正式提出万维网的设想。该网络最初是为了满足世界各地大学和研究所的科学家之间对自动信息共享的需求而设计和开发的,这也是为什么HTML的顶层声明是 document,标签名、文档对象模型的名称也是由此而来。
1990 年 12 月,他开发出了世界上第一个网页浏览器。1993 年 4 月 30 日,欧洲核子研究组织将万维网软件置于公共领域,把万维网推广到全世界,让万维网科技获得迅速的发展,深深改变了人类的生活面貌。
他创造了超文本标记语言(HTML),并创建了历史上第一个网站。当然,现在只剩下了由 CERN 恢复的网站副本:info.cern.ch.

静态网页时代

早期的静态网页,只有最基本的单栏布局,HTML 所支持的标签也仅有<h1><p><a>。后来为了丰富网页的内容,<img><table>标签诞生了。
这一阶段,Web 服务器基本上只是一个静态资源服务器,每当客户端浏览器发来访问请求,它都来者不拒的建立连接,查找 URL 指向的静态页面,再返回给客户端。
随着网页的飞速发展,人们发现要人工实现所有信息的编写是非常困难的,而且非常耗时。
设想一下,假如一个页面有两块区域展示的内容是互相独立的,那么你需要涵盖所有的可能,需要编写的页面数量是两块区域的内容数量的乘积!
此外,静态网站只能够根据用户的请求返回指向的网页,除了进行超链接跳转,没办法实现任何交互。
此时,人们想要
  • 网页能够动态显示
  • 直接使用数据库里的数据
  • 网页实现一些用户交互
  • 让页面更美观

JavaScript 的诞生

1994 年,网景公司发布了 Navigator 浏览器,但他们急需一种网页脚本语言,以使浏览器可以与网页互动。
1995年,网景公司的 Brendan Eich 迫于公司的压力,只花了十天就设计了 JS 的最初版本,并命名为 Mocha。后来网景公司为了蹭 Java 的热度,把 JS 最终改名为 JavaScript。但实际情况是,网景公司和 Sun 公司结成联盟,才更名为 JavaScript。
从此网页有了一些简单的用户交互,比如表单验证;也有了一些JS为基础的动效,如走马灯。
但是让网页真正开始进入动态网页时代的却是以 PHP 为代表的后端网站技术。

扩展资料:第一次浏览器大战

在网景公司推出 JavaScript 的时候,微软以 JS 为基础,编写了 JScript 和 VBScript 作为浏览器语言,并在 1995 年的 8 月推出了 IE 1.0。
由于微软在系统里捆绑浏览器,而 90% 的人都在使用 Windows 操作系统,大量用户被动地选择了 IE。面对微软快速抢占浏览器份额,网景公司无奈之下只能快速将 JavaScript 向 ECMA 提交标准,制定了 ECMAScript 标准。
在这段时间,还发生过一件趣事,IE 4.0 发布当天 Netscape 的员工们发现公司的草坪上出现了一个大大的 IE 图标,这明显是一个挑衅的举动。作为回应,Netscape 把自己的吉祥物 “Mozilla” 放在 IE 的图标上,并挂上胸牌,写着 “Netscape 72,Microsoft 18”——在当时, IE 的市场份额确实不如 Netscape Navigator。
但这无法解决份额的问题,网景公司最终在第一次浏览器大战中落败,于 1998 年,被美国在线(AOL)以42亿美元收购。
在 1998 年网景公司被收购前,网景公司公开了 Navigator 源代码,想通过广大程序员的参与重新获得市场份额。Navigator 改名为 Mozilla。这也是火狐浏览器的由来,也是第二次浏览器大战的伏笔。

CSS

1994 年,Hkon Wium Lie 最初提出了 CSS 的想法。1996 年 12 月,W3C 推出了 CSS 规范的第一版本。
美观是所有人的追求。HTML 诞生以来,网页基本上就是一个简陋的富文本容器。由于缺少布局和美化手段,早期网页流行用table标签进行布局。为了解决网页“丑”的问题,Hkon Wium Lie 和 Bert Bos 共同起草了 CSS 提案,同期的 W3C 也对这个很感兴趣。
早期网页外观
早期的 CSS 存在多种版本,在 PSL96 版本你甚至可以在里面使用逻辑表达式。但因为它太容易扩展,浏览器厂商那么多,会变得很难统一,最终被放弃。
在众多提案中,Håkon W Lie 的 CHSS(Cascading HTML Style Sheets)最早提出了样式表可叠加的概念。
行尾的百分比表示这条样式的权重,最终将根据权重计算最终值。图中将会计算 30pt * 40% + 20pt * 60% 作为h2字体大小的最终值。
为了解决 CSS 兼容性的问题,网景公司甚至还将 CSS 用 JS 来编写。
CSS 从诞生开始就伴随着大量的 bug,不同浏览器表现不同坑害了无数的程序员。今天我们能用上相对靠谱的 css,不得不说这是一个奇迹。

动态网页技术

1995 年,Rasmus Lerdof 创造的 PHP 开始活跃在各大网站,它让 Web 可以访问数据库了,PHP 实现了人们渴望的动态网页。
这里的动态网页不是指网页动效,而是指内容的动态展示、丰富的用户交互。PHP 就像给网络世界打开了一扇窗,各种动态网页技术(如 ASP、JSP)雨后春笋般的冒了出来,万维网也因此开始高速发展,MVC 模式也开始出现在后端网站技术中。
动态网页技术解决了以前各种令人无法呼吸的痛,生活总会越来越好的:
  • 可以用数据库作为基础来展示网页内容
  • 可以实现表单和一些简单交互
  • 再也不用编写一大堆静态页面了
PHP 等动态网页技术的原理,大体上都是根据客户端的请求,从数据库里获取相对应的数据,然后塞到网页里去,返回给客户端一个填充好内容的网页。这个阶段也是前后端耦合的
网页开发流程
而当一些基础的需求被满足之后,动态网页技术带来的不足也渐渐暴露出来
  • 网页总是刷新。用户名密码校验需要刷新以展示错误提示;因下拉选择器选择不同而展示的内容需要刷新才能展示;每次数据交互必然会刷新一次页面。
  • 网页和后端逻辑混合。相信老前端们都有过这样的经历:开发完HTML后,会把页面发给后端修改,加上数据注入逻辑;联调或者debug的时候两个人坐在一块看,查问题的效率很低。
  • 有大量重复代码无法复用。举一个典型的例子,论坛。很多时候只有内容有变化,菜单、侧边栏等几乎不会有改变,但每次请求的时候还是得再将整个网页传输一遍。不仅页面会刷新,速度慢,还挺耗流量(这个年代上网也是一种奢侈)。
然后 AJAX 站了出来。

AJAX

AJAX,Async JavaScript And XML,于 1998 年开始初步应用,2005 年开始普及。AJAX 的广泛使用,标志着 Web2.0 时代的开启。这同时也是各大浏览器争锋的时代。
现在,我们可以通过 AJAX 来动态获取数据,利用 DOM 操作动态更新网页内容了。来看看加入了 AJAX 的网页是怎么工作的:
这个时候前端路由还没有兴起,大多数情况下还是后端返回一整个页面,部分内容通过 AJAX 进行获取。
随着智能手机的出现,APP 开始萌芽。相比起网页,APP 编写好之后只需要数据接口就能工作;而网页不仅需要后端写业务逻辑,控制跳转,还要写一部分接口用于 AJAX 请求。
这个阶段前端能做的事情还是很少,还背负着“切图仔”的绰号。随着 HTML5 草案的提出,前端能做的交互越来越多,程序员们急需解决以下问题:
  • 后端业务代码和数据接口混合,还得兼容 APP 的接口(很多企业既有 APP 又有网站)
  • 前端的代码复杂度急剧增加
能不能让前端也像 APP 一样,只需要请求数据接口即可展现内容呢?

扩展资料:第二次浏览器大战

2004 年 Firefox 发布,拉开了第二次浏览器大战的序幕。同期市面上诞生的各种新兴浏览器,如 Safari、Chrome 等,也加入了战争。
此前由于 XP 系统实在过于火爆,导致 IE 6 无任何竞争对手,微软甚至解散了浏览器的大部分员工,只留下几个人象征性地维护顺便修补一下 bug。这让开发人员非常痛苦。
此时 Firefox 以优越于 IE 的性能和非常友好的编程工具,迅速将那些被 IE6 搞得焦头烂额的网页开发人员们,从水火之中救出,导致先让前端工程师成为忠实的第一批用户,然后,经由这些有经验的开发人员们推广到了普通的用户群体。
基于 webkit 内核的 Safari,借助自家产品(iOS、MacOS)的垄断快速收割移动端和 mac 端市场份额;同样基于 webkit 内核的 Chrome,趁着微软放松警惕,凭借优越于市场上所有浏览器的性能,如同中国历史上的成吉思汗一样大杀四方,快速扩展市场份额。
微软知道,自己已经失去了最初能称霸的机会,这次它不想失去,IE 再次开始迭代,各大浏览器厂商又开始不顾标准,迭代再次开始,为了统一化标准,W3C 开发了 HTML5,但是迟迟得不到微软的认可。在其他浏览器纷纷支持 HTML5 后,微软发现,自己又成了孤家寡人,份额不断缩水。
2016 年,Chrome 浏览器份额超越 IE,第二次浏览器大战结束。
浏览器大战极大的推动了技术进步,正是 Google 研发出的 V8 引擎极大的提升了 JS 的运行效率,NodeJS 才有机会诞生,前端才能走向全栈。JS 其实没有你想象的那么慢

SPA

2008 年 HTML5 草案提出,各大浏览器开启良性竞争,争先实现 HTML5 功能。由于 HTML5 带来前端代码复杂度的增加,前端为了寻求良好的可维护性和可复用性,也不得不参考后端 MVC 进行了设计和拆分,后来出现了三大前端框架:Vue(2014)、React(2010)、AngularJS(2009)。
单页应用返回一个空白的 HTML,并通过 JS 脚本进行动态生成内容,从此和页面刷新说拜拜。
后端不再负责模板渲染,前端和 APP 开始对等,后端的 API 也可以通用化了。前后端终于得以分离。(PS:最终目标是成为后端)
但 SPA 因为返回的是空 HTML,所有 JS 也被打包为一个文件,需要在一开始就加载完所有的资源,
  • 请求网页后白屏时间比传统网页要长
  • 爬虫爬到的是空白页面,没办法做 SEO
  • 在业务复杂的情况下,请求文件很大,渲染非常慢
这使得前端不得不拆分过于庞大的单页应用,出现了框架的多页面概念,也出现了多种解决方案。
很多网页首次加载的时候其实并不需要太多的东西,比如论坛首页与贴子详情页,完全可以将其拆开,用户在新打开的页面阅读反而体验更好(多页应用)。
又比如管理后台,可以在页面框架内,将每个菜单对应的管理页拆出来动态加载(import)。

Server Side Render

Server Side Render,服务端渲染,简称 SSR,又称服务端同构、直出,一般使用 NodeJS 实现。
这里的服务端渲染和以前的不一样,SSR 会利用已经“脱水”的首屏数据来渲染首屏页面返回给客户端,到了浏览器再注入浏览器事件,并且保留单页应用的能力,对 SEO 非常友好。但学习成本高,限制较多。
让我们看看传统 SPA 和加入了 SSR 的 SPA 在请求上的区别:
客户端渲染示意
服务端渲染示意
传统 SPA 可以更快的返回页面,请求响应时间更短;加载 JS 后才开始渲染,白屏时间更长,loading 结束后用户感知到的相对可交互时间更早。
而 SSR 在接到浏览器请求时,先从后端拉取首屏数据渲染在页面内才返回,请求响应时间更长;因为节约了一段浏览器请求首屏数据的时间,白屏时间更短。由于 JS 异步加载,用户感知的相对可交互时间变晚。但体验上 SSR 一般更好。
在极端情况下,用户眼中传统 SPA 会一直显示 loading,使用了 SSR 的页面则会出现“点不动”的情况。
大多数时候 SSR 体验会更佳,因为服务端承担了大部分渲染工作,这也导致服务端负载变高。但在业务复杂的情况下,SSR 首屏请求的接口数很多,导致返回 HTML 变慢。
归根结底,SSR 不能很好的应付业务复杂的情况,首屏要加载的东西还是太多了。所以我们要怎样让用户感知到的白屏时间变短呢?
  • 减小加载体积
  • 减少接口请求数
  • PWA 缓存
  • 分块渲染

NodeJS

说完了 SSR,必须说一下 NodeJS。2010 年 NodeJS 正式立项到现在已经 11 个年头了,NodeJS 的诞生来自于 Ryan Dahl(下图) 的灵感。他想以非阻塞的方式做所有事情,用完全异步方式可以处理非常多的请求(高并发)。
NodeJS 的出现让前端向全栈的发展迈出了重大的一步。很多公司开始用 NodeJS 搞 BFF(backend for frontend),我们也开始把 Controller 层放到 NodeJS 来处理,后端只负责基础业务数据。也就是现在的三层架构:
这种架构在跨端的时候具有良好的适配性,我们可以根据业务需求,为不同端设计不同的 Controller 和 View,而后台可以不做变更。这种架构省去了很多沟通成本,前端专注页面的展示,后端专注业务逻辑。
当然,NodeJS 还可以对后端数据进行预处理,前端根据自己的需要自己设计数据结构,页面开发与接口调试形成闭环,还为后端分担了压力。

扩展资料:第三次浏览器大战

智能手机的飞速发展,这张图表现的淋漓尽致。第三次浏览器大战是争夺移动端市场份额的一战,也是当下正在进行的一战。
Benedict Evans: “Mobile is eating the world.”(移动设备正在蚕食世界) “Mobile remakes the Internet.”(移动设备正在重构Internet)
而未来,浏览器真正的对手不再是浏览器,而是小程序这样结合了APP和网页优点的新兴技术。

未来

早在 2009 年,Facebook 的工程师就开发了 bigPipe,让 Facebook 页面打开速度提高了两倍。bigPipe 使用 分块渲染 的思想,将网页的渲染变成了一小块一小块的,服务端渲染好一块页面就发送给客户端。他们直接把木桶拆了,打破了短板效应
服务端渲染 VS 流式分块渲染
时隔 11 年,也就是 2020 年 12 月,React 团队提出了 React Server Components,算是一个可扩展的前后端融合方案。其理念和 bigPipe 类似,把组件放在服务端渲染,节省了从浏览器进行数据请求的开支,一些运行时也可以不用放到浏览器,减小了包大小(如 markdown 在服务端渲染好了,也就不再需要把工具库发送给浏览器了)。React Server Components 的引入,也同步做到了自动的 Code Split。
React Server Components 原理
不同的是 React Server Components 返回的不是 HTML,而是带有结构和数据的自定义类 JSON 数据。
这种结构,是对服务端渲染的核心(结构+数据)进行抽象,结合 React 的工作方式(如 Suspense),平缓的从服务端过渡到了客户端,维持了组件状态,并且可以更自由的拼装服务器组件和客户端组件。
客户端组件和服务端组件混用
关于拆分这条思路,让我想到微前端,虽然现在微前端还有很多问题,但微应用即服务也不乏为一条解决之道。未来前端或许会往“小而美”的方向发展,甚至形成一个以服务端组件为单位的包管理器,网页打包大小会越来越小,更多的组件是从网络上直接获取。
此外,我也很期待 Web Components 的发展,有了原生的支持,0kb runtime 也不是不可能了。合久必分分久必合,现存很多前端框架也可以得到统一了。当然现在 Web Components 想要投入使用,首先离不开浏览器的支持,而且必须有一个平缓的过渡,此外兼容性也是一个大问题(最后还是苦了程序员们)。
本文首发公众号:腾讯技术工程(ID:Tencent_TEG),如需转载请联系出处。

、系统概述

HTML5岗位技能技术是计算机类专业重要的核心课程,课程所包含的教学内容多,实践性强,并且相关技术更新快。传统的课堂讲授模式以教师为中心,学生被动式接收,难以调动学生学习的积极性和主动性。混合式教学结合线上线下教学模式,以学生为中心,变被动为主动,充分调动学生学习的积极性,提升课程的教学效果。

HTML5岗位技能是指构建 Web 应用程序用户界面的过程。它涵盖了网页设计、网页制作以及网站的前端开发等方面。HTML5岗位技能是属于互联网技术领域中的一项重要工作。

作为 HTML5岗位技能人员,我们的主要任务是将设计师提供的网页设计图转化为网页前端代码,然后通过浏览器展示给用户。在这个过程中,我们需要使用 HTML、CSS和JavaScript 等技术来实现网页的布局、样式和交互效果。

在Web前端开发中,我们还需要掌握一些常用的前端框架和工具例如,Bootstrap 是一个流行的前端框架,它提供了一套响应式的网页模板和组件,可以快速搭建出适配不同设备的网页。另外,还有Vue.js和 React等JavaScript 框架,它们可以帮助我们构建复杂的单页应用。

除了以上提到的技术和工具,作为 HTML5岗位技能人员,我们还需要了解和应用一些 Web 标准和最佳实践。比如,响应式设计是一种设计方法,可以使网页在不同设备上都能够良好地展示和使用。此外,还需要关注网页的性能优化,包括减少 HTTP 请求、压缩文件、使用缓存等方面的技巧来提升网页的加载速度和用户体验。

二、HTML5岗位技能实训室介绍

HTML5岗位技能实训室的培养目标是培养掌握Web前端基础理论知识、掌握前端开发技术、掌握移动端开发技术、掌握Web测试技术和掌握数据库技术等知识和技能、动手能力强、适应各种岗位工作的复合应用型人才,从事Web前端开发、移动端开发、软件测试、系统维护、解决方案设计等工作。

HTML5岗位技能实训室是一个旨在提供实践环境和教学资源的综合实训室。HTML5岗位技能实训室的目标是为学生提供一个真实的HTML5岗位技能环境,使他们能够学习并实践HTML5岗位技能的相关技术和方法。

HTML5岗位技能实训室建设方案系统是一个集硬件、软件和教学资源于一体的综合实训室,HTML5岗位技能实训室的建设旨在为学生提供一个实践和交流的平台,让他们通过实际项目的开发来应用所学的知识,培养解决问题和合作的能力,同时也促进创新和创业精神的培养。这样的实训室可以提升学生的实践能力,并为他们将来投身HTML5岗位技能行业做好准备。

HTML5岗位技能实训室以HTML5岗位技能领域学习者的职业生涯发展及终身学习需求为依据,重点满足职业院校在校学生、进修教师、企业员工、社会自学者四类对象不同层次的学习需求,联合全国高水平院校以及企业,建设HTML5岗位技能专业优质专业资源、课程资源、认证资源、竞赛资源。企业资源等内容:优化资源库平台,在“能学、辅教”的基础上,满足个性化学习者私人定制的实际需要,并完善平台的运行机制,保证平台内容的持续更新: 依托资源库平台,实现学生学习效果评价,能够为企业出具学生能力分析报告,指导企业招聘和学生就业。

三、HTML5岗位技能实训室组成

3.1HTML5岗位技能教学平台

平台基于spring cloud微服务架构,提供便捷的SSO单点登录,采用kubernetes进行部署,可支持公有云、混合云、私有云的安装模式,数据层使用MySQL集群和MongoDB集群,实现了全流程EdvOps自动化运维,具有高内聚、松耦合、业务单一、高性能、高并发、高可能、跨平台、跨语言等特点。主要模块有课程制作工具、云盘、共享课、我的课、云优选课、云视频库、3D模型库。

课程制作工具:由平台提供专用的微服务模块进行支撑,采用websocket双向通信技术,底层存储采用三层递进的缓存方式,目的就是为了加快课程资源的加载速度。自主研发视频转码,在线视频剪辑功能。支持由word文档直接导入,并且根据标题类型自动生成目录,方便快捷。同时支持ppt、excel、图片、超链接、视频、音频、3D模型、章节测验等内容的插入,实现多个超文本文件的同屏展示。

共享课:使用订单配发或校内共享的概念,让课程资源更大程度的进行共享。

我的课:支持从共享课资源中直接进行“生成副本”,导入进我的课中,并且同时支持自行创建。所有的课程资源支持导出功能,可导出为本地的离线文件,导出文件为后缀名为wz的加密文件,在使用平台进行二次导入直接生成课程资源,便于线上传播。

云优选课:由行业资深从业人员在互联网上收集整理的学习资源,包括系列类学习视频和知识点类学习视频,供教师和学生进行自主学习。

云视频库:平台提供数百个包含各专业的微课视频,可直接引用到课程资源中。

3D模型库:采用three。js技术,实现在线加载3D模型,提供更加直观形象的教学体验。

题库:题库支持通用题目(单选题、多选题、判断题、填空题、主观题)以及实训题目(编程题、web前端题、虚拟化题等);对于通用类题目可采用excel模板批量导入,采用瀑布流的展示方式,可共享到校内供其他教师进行使用。

作业:支持手动建题和从题库中选题两种模式创建作业,提供作业库模块,作业库内的作业可多次发放给学生,对于作业平台提供自动评测,包括单选题、多选题、判断题、填空题、编程题、虚拟化题。

考试:支持导入试卷、手动创建、题库选题三种创建方式,同时支持系统随机组卷功能;提供试卷库模块,试卷库内的试卷可多次发放给学生,支持试卷的自动判分。

课堂活动:平台支持多种课堂活动,如:签到、主题讨论、提问、分组任务、投票、问卷、计时器等,提高课堂的趣味性和参与性。

个人云盘:平台将用户在备课,教学等过程中使用的文件,保存在个人云盘空间,支持二次直接使用和存档,实现云文件的保存。

3.2HTML5岗位技能实训平台

平台采用B/S结构,运用spring cloud微服务技术,构建多个稳定、高效的服务模块,提供SSO单点登录服务,并使用统一的身份认证鉴权。平台基于k8s实现公有云、混合云、私有云多种部署方式,提供在线HTML5岗位技能的运行环境,并内置代码运行结果检测,自动进行测评统计,实现真正的云开发,开箱即用,主要模块有课程制作工具、作业、活动、云盘、共享课、我的课、云优选课。

便捷的实验制作工具:让教师轻松实现pdf、ppt、word、excel等不同格式的文本、图片、音频、视频、超链接等进行混合编排,并自动生成动态实验目录,从而实现不同实训资源同屏展示。

智能代码评测,助力HTML5岗位技能实训:平台支持在线对学生提交的实验代码进行评测,将评测结果统计分析后展示给教师,提高教师的教学效率,方便学生的学习过程。

提交代码查重,防止抄袭:对于学生提交并且通过测评的HTML5岗位技能实训代码进行代码的查重,防止学生互相抄袭代码。

在线问答,及时解答学生疑问:平台提供HTML5岗位技能实训的在线问题,学生在HTML5岗位技能实训过程中,通过在线问答及时与老师进行沟通,提高学习效率。

可记录学习情况的实验笔记:平台为用户在HTML5岗位技能实训页面提供实验笔记功能,用户可在实验过程中记录下自己的笔记。

实验题解,帮助学生掌握实验知识点:平台会在每个HTML5岗位技能实训题目后面,提供相应的实验题解,教师可改变其是否展示给学生。从而让学生在实验完成之后进行学习,更好的掌握实验的知识点。

支持高并发的评测服务:平台采用kafka消息队列来处理评测的请求,并内置高配置的底层沙箱服务,支持高并发的用户同时使用。

学生测评结果自动统计:平台将课堂内的用户的评测结果进行统计,按照消耗内存、消耗时间两个维度进行展示,从而直观的展示该实验的整体评测数据。

支持公共资源课程,便于老师教学:HTML5岗位技能实训平台可内置完整的实训资源,其中包括实训文档以及在线资源包,用户可以直接进行使用。

个人云盘,资源不丢失:平台会为用户提供云盘服务,云盘内所有文件都会按照不同的文件类型进行分开,便于用户查看和操作。

平台支持Web前端应用程序开发、web企业级开发、数据库设计等实验。

3.3HTML5岗位技能教学资源包

HTML5岗位技能教学资源包包含专业基础课程: 计算机应用基础、静态网页设计与制作、C语言程序设计、数据结构、HTML5 + CSS3 Web 前端开发技术、计算机专业英语等。专业核心课程:HTMI5 与 JavaSeript 程序设计、UI 设计基础、美学基础、Bootstrap 应用开发、NodeJS 应用开发、Vue 应用程序开发、Web 前端综合实战等。

3.4HTML5岗位技能实训资源包

对接真实职业场景或工作情境,在校内外进行HTML5岗位技能实训。使学生掌握网页设计与制作的技术,能够利用HTML5、CSS3等技术进行网页布局,基于项目化教学的模式培养学生实践动手能力;使学生了解JavaScript的基本语法,具备JavaScript的编程技巧和编程步骤;掌握常用的前端框架技术主要包含JQuery框架、Bootstrap框架、React框架、Vue框架、Angular框架等。利用数据库管理系统和数据挖掘系统设计出能够实现对数据库中的数据进行添加、修改、删除、处理、分析、理解、报表和打印等多种功能的数据管理和数据挖掘应用系统;并利用应用管理系统最终实现对数据的处理、分析和理解。

培养具有良好职业道德和人文素养,掌握web前后端数据交互、响应式开发等知识,具备动态网页设计、开发、调试、维护等能力,能从事web前端软件编程、软件测试、软件技术服务、智能终端界面开发等工作的中级技术技能人才。

3.5HTML5岗位技能实训室配套设施

HTML5岗位技能实训室配套设置包含实训室硬件设施、HTML5岗位技能软件和工具等内容,其中硬件设施如智慧黑板、教师讲台、多媒体设备、学生实训电脑、桌椅、服务器、交换机、机柜及HTML5岗位技能实训室装修和HTML5岗位技能文化建设。HTML5岗位技能软件和工具应包含常用的HTML5岗位技能软件和工具,这些HTML5岗位技能软件和工具可以帮助学生进行应用程序的编写、测试和调试。

四、HTML5岗位技能实训室建设图

HTML5岗位技能实训室建设图

五、HTML5岗位技能实训室方案清单

六、HTML5岗位技能实训室方案价值

6.1专业教学支撑

6.2教材联合开发教材

联合各院校教授专家,开发HTML5岗位技能专业系列教材,为院校专业实验课程开展和教学提供参考。

6.3 产学研支撑平台

平台采用spring cloud微服务开发架构,各服务模块单独运行并提供服务接口;可提供稳定、快速、高效的服务;平台整体采用前后端分离和分布式微服务的弹性计算架构实现,后端主要基于Java的Spring cloud实现,前端vue实现等,具有高内聚、松耦合、业务单一、高性能、高并发、高可能、跨平台、跨语言等特点。

平台提供SSO单点登录,多个应用系统统一登录,统一的用户管理,一个账户可登录验证教学全场景以及数字技术专业群实践教学等所有应用模块系统。

平台采用kubernetes技术进行部署,支持公有云、私有云、混合云模式安装;平台支持多数据源从而保证技术的一致性;确保服务的稳定、可扩展、弹性扩容;每个独立服务支持分布式集群部署,理论上可以无限横向扩展,提高系统处理能力,支持大规模并发教学全场景和数字化专业群教学实践应用。

基础虚拟化服务由docker和kvm两种虚拟化技术根据学科性质进行选择性支撑,可满足不同的虚拟化需求,提供稳定、可自行配置的虚拟机器。

基于全流程DevOps自动化运维,支持持续集成、分析、服务注册与发现、系统监控、性能监控、日志管理、预警、持续部署(基于docker的镜像仓库,Kubernetes的容器云管理调度平台,在线可视化管理、监控、调度容器)。

基础持久化层支持RDS和NoSQL两种方式,采用MySQL集群和MongoDB集群搭建,支持基于CQRS的分布式事务处理,支持数据自动备份,同时使用于Redis集群对热点数据进行缓存,支持大并发;支持纯本地化数据源。

基础服务层支持在线验证码服务、基础文件服务、消息队列服务、OSS对象存储服务、用户/鉴权服务、个人云盘服务、WebSocket服务等,保证平台的通用性。用户基础信息管理:对订单实行按业务方向进行配置,对班级、教师、学生相关信息进行新增、修改、删除以及数据权限进行配置。

6.4 技能大赛支撑

6.5 1+X认证服务