我的新书《PWA入门与实践》上市了

在这里插入图片描述

前言

我初接触PWA是在2017年年初,当时参加了一个前端分享会,其中一个主题就是与PWA相关的,介绍了PWA的Service Worker和安装到桌面的能力,以及这门技术未来的发展趋势,听完这个分享后,我就为PWA的一些能力所吸引。

Web本身的优势就非常明显,如可分享,可搜索,无须下载,在任何设备上有相同的展示等,现在再加上PWA的能力,让Web在原有的基础上具备了类原生应用程序的功能,这对于Web开发者来说是一个福音,可以让Web提供更好的用户体验,也能带来更多红利。随后,我便开始了对PWA的学习和探索之路。

在实际工作中,有很多场景适合使用PWA,这也使我的PWA实践之路有了一个很好的前提条件。在实践的过程中,并没有想象的那么顺利,PWA的大多数概念都有一些理解成本,一不小心就会犯错,大多数情况下是一边“挖坑”一边“填坑”。当然,最后在很多合适的场景中,我发现PWA的接入确实带来了非常好的效果,为业务产品带来了更多价值,提升了用户体验。

本书是一本PWA技术入门和实践的图书。通过本书,你可以对PWA有较深入的理解并进行一些项目实践。本书对PWA的核心技术做了比较透彻的讲解,对PWA中可能遇到的问题及一些注意事项也进行了充分说明。阅读过程中,所有的PWA知识点基本都可以在本书中找到说明。本书既可以作为一本PWA的入门图书,也可以作为一本PWA的使用手册。遇到关于PWA的问题时,请阅读这本书,相信本书可以让你找到问题的解决方法。

第1章介绍PWA的发展历程及生态环境,并为你开启第一个PWA应用示例,让你对PWA有一个基本了解。
第2章介绍PWA的一些前置技术及预备知识,让你后面的学习过程更顺畅,如果你对这部分知识已有所了解,则可以跳过这一章。
第3章开始对PWA最核心的部分—Service Worker进行讲解,这一章详细讲解了Service Worker的各个知识点、注意事项及实践。
第4章开始进入 PWA的核心API部分,在这一章中,你可以学习PWA的一些核心API,包含安装到桌面、新一代网络请求、消息通知、后台同步、离线缓存、消息推送,该章中各小节属于并行知识点,可根据需求阅读任意一节。
第5章介绍PWA使用过程中的一些配套工具,包括调试工具、评测工具和提效工具,等等,让你的PWA开发过程更顺畅。
第6章为PWA的实践部分,针对不同的功能需求进行实践讲解。
第7章讲解Web的系统集成能力,让系统集成能力配合PWA,使Web可以和应用程序相媲美。
本书主要面向有一定Web开发基础的读者,以及想学习PWA或者需要一本全面的PWA手册的开发者。

序言

如今,互联网大流量早已进入了移动端,国内主流互联网产品的移动端流量已经普遍超过整体流量的80%。在移动端应用开发中,我们要面临为不同操作系统(Android、iOS、Windows 10)、不同设备(手机、平板)开发应用的问题,为此我们需要投入额外的成本应对这些差异。就算我们投入了成本,开发出了产品,在下载和安装环节,仍然存在很大的推广成本问题。统计学研究表明,安装烦琐是用户放弃尝试更多应用的主要原因之一。

PWA技术可以很好地解决这些问题。PWA运用现代的Web API能力为Web进行了扩展和增强,使Web具有与原生应用程序类似的体验度和能力。作为一种W3C的规范实现,PWA可以正常地运行在各个平台的浏览器中,真正做到一套代码解决所有平台一致性问题。同样,由于PWA具备安装成本几乎为0的特点,它非常适合实现Web端到应用端的过渡,提升转化率。

目前,国内外越来越多的网站对PWA进行了接入,如星巴克、优步、推特、脸书、淘宝、饿了么,等等,接入后的性能和转化率都有明显提升。如今谷歌、微软、英特尔等公司为PWA投入了技术支持和发展,Web的主流框架React、Vue等对PWA提供了快速接入方案,主流的浏览器厂商也紧跟其后,共同为PWA生态系统提供支持。

然而,根据我近几年对国内业界和前端社区的观察,可以说PWA在国内还没有发挥出它应有的作用。在这里,我尝试分析一下其中的原因,以及未来趋势。

第一,至少近三年,国内前端领域的技术发展,除了跟随国外最新动向之外,总的趋势是业务属性较强的技术更受重视。其中,最令人瞩目的小程序相关技术,以及低代码搭建相关技术,就是典型—两者分别迎合了国内头部互联网公司流量分发强管控的现实需求,以及中国互联网产业逐步转向企业服务的大背景。

PWA作为一个中立性很强的技术组合,尽管主要由Google推动,但其开放性以及主要着眼点在于优化具体的产品体验而非满足业务诉求的特点,导致它在国内主要由社区推动,声量明显不如商业推动力强的技术,处于一种“大家各取所需,却不知道别人也在各取所需”的微妙境地。

面对这种状况,作为技术人,我们要理性看待,而不是像一些跟风者一样片面地去肯定或者否定一项技术。事实上,PWA作为一个渐进式的技术组合,其中的若干技术,比如Service Worker、离线存储,乃至性能评估工具Lighthouse等,早已因其极强的实用性,在国内得到了广泛应用。

第二,一项工程技术的落地,除了原理论证以及各种功能点与性能指标的验证之外,还需要一个成本颇高的“踩坑”过程。这不是找一两个实习生通过Demo做个演示就可以解决的,而是需要实实在在的经验积累,其中既包含实现细节、性能优化、技术权衡、应对国内特殊场景的技巧等知识的积累,又包含开发、运维、数据统计等必不可少的开发工作链路上的基础设施建设与经验积累。

一直以来,PWA技术领域都缺乏优质、可靠的中文技术资料。对其做调研的团队,一方面直接参考官方文档,一方面只能通过各种技术博客等不可靠的渠道获取一些零散的信息,通过拼凑和尝试积累经验,这无形中推高了技术调研的成本。

而你现在看到的这本书可以作为一个好的开始。作为第一本出现在我视野中的中文PWA技术书籍,这本书的优点在于,它既不是文档翻译,也不是手把手教你敲命令,把开发技术写成“菜谱”,而是涵盖了从理论准备到实操流程,再到经验分享的一本“全链路书籍”。它可以帮你真正理解PWA,同时获得一些由作者亲自验证过的工程落地中“踩坑”的经验。从这个角度来说,这本书完全可以称为“PWA民间中文指南”,有了它,我们终于拥有了一些可靠的、系统化的、本地化的、开箱即用的PWA技术资产。

第三,PWA的定位在于让开发者快速开发出同时具备“优质的Web,轻盈的应用”两种属性的产品。而这样的属性,在粗放发展的互联网业态中,暂时没有得到应有的重视。

然而,事情正在发生变化。

在大家都在谈论“互联网下半场”的时代,我们有必要思考“下半场”对于我们而言有什么样的具体含义。我的个人理解是,所谓上半场,比的是人无我有,人慢我快;而下半场,比的是人有我优,人粗放我精致,我们现在正在见证这样的市场转变。而PWA,作为一种显著提高用户体验的技术,必然在这个过程中展现出它的优势,谁能更快更好地利用这种优势,谁就能在新阶段的前端技术竞争中占领先机。

综上,这是一本值得期待的书,它在一定程度上弥补了国内PWA领域技术书籍的空白,并且将这个任务完成得相当漂亮。如果有人请我分享前端技术书单,我想这本书应该会位列其中。

— 知乎知名技术作者 欲三更
2020年4月于杭州

购买地址

有需要的欢迎购买支持~~

当当 购买
京东 购买
天猫 购买

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux ARM交叉编译工具链制作过程

一、下载源文件 源代码文件及其版本与下载地址: Binutils-2.19.tar.bz2 http://ftp.gnu.org/gnu/binutils/ gcc-4.4.4.tar.bz2 http://mirrors.kernel.org/gnu/gcc/gcc-4.4.4/ Glibc-2.11.2.tar.bz2 Glibc-ports-2.11.tar.bz2 http://ftp.gnu.org/gnu/glibc/ Gmp-4.…

数学建模之聚类模型详解

聚类模型 引言 “物以类聚,人以群分”,所谓的聚类,就是将样本划分为由类似的对象组成的多个类的过程。聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计、分析或预测;也可以探究不同类之间的相关性和主…

Unity Hub安装Android Build Support报错:Failed to delete old Unity Android Supprtinstallation files

安装失败: 解决方法: 需要先安装 Android Build Support ,再安装 Android SDK & NDK Tools 和 OpenJDK 其他情况: 如果已经安装了Android SDK & NDK Tools 和 OpenJDK,只剩Android Build Support 未安装成功…

红米5 Plus刷开发版/小米手机刷开发版

到官网选择对应手机型号下载Rom包:MIUI下载 下载完成后手机打开:设置→我的设备→MIUI版本→右上角选择【手动选择安装包】,找到下载的包等待手机重启就行了。 PS:如果是像下面这样 小米手机找不到手动选择安装包 选项的话&#…

通过Blender将PMX模型转为FBX导入Unity

一、下载Blender(建议2.83版本不要太高的) 官网下载网址:Blender 2.83 LTS — blender.org 二、之后安装Blender,安装后下载插件 下载地址:https://codeload.github.com/GiveMeAllYourCats/cats-blender-plugin/zip/…

Git理论、原理、操作

Git理论、原理、操作 Git简介: 一个开源的分布式版本控制系统。用于处理任何大大小小的项目,是一个开放源码的版本控制软件。Git与SVG的区别: 1、git是分布式的 2、git把内容按元数据方式存储,svg按文件 3、git分支和svg分支不同…

Android中让Service被关闭后再重新启动

2019独角兽企业重金招聘Python工程师标准>>> --------------------------------------------------------------------------- 转载:http://blog.csdn.net/arui319 --------------------------------------------------------------------------- 如何做…

CloudStack学习-3

此次试验主要是CloudStack结合openvswitch 背景介绍 之所以引入openswitch,是因为如果按照之前的方式,一个网桥占用一个vlan,假如一个zone有20个vlan,那么岂不是每个vlan都要创建一个桥,维护很麻烦 openvswitch是由Nic…

EIGRP中非等价负载均衡的实现

Eigrp为思科私有协议,其协议号为88,采用组播(224.0.0.10)和单播的方式发送路由更新,并且支持等价和非等价负载均衡。首先来看下Eigrp选择路由的过程:Eigrp中有三张表,分别为Eigrp邻居表、Eigrp拓…

webpack+vue实现项目

webpackvue实现TODO慕课网课程笔记 课程目的: 前端工程:讲明一些前端基础的概念;如何搭建一个工程,一个工程解决了哪些问题 webpack:预计未来前端开发必备的基础 vue:相对于react使用比较简单方便&#xf…

JAVA API

----API概念: API(Application Programming Interface)应用程序接口。 在Java中的API就是JDK中提供的各种功能。如CreateWindow就是一个API函数,在应用程序中如果要调用这个函数那么操作系统就会按该函数提供的参数信息产生一个相…

Javascript基础(二)

Javascript基础&#xff08;二&#xff09;事件&#xff1a;条件语句类型转换正则表达式regexp错误抛出void事件&#xff1a; 是发生在HTML元素上的行为&#xff0c;可以是浏览器行为&#xff0c;可以是用户行为 a) html 元素添加事件属性&#xff1a; <p οnclick alert…

网页字体设置你了解吗?

以前做项目的时候就依葫芦画瓢的设置 { font-family:arial,”microsoft yahei”,simsun,sans-self; } 等类似的字体&#xff0c;然而当更多的设备和系统出现后&#xff0c;以前这样的设置已不能满足网页在各设备上的显示需求。 就拿最简单的宋体(simsun)来说吧&#xff0c;在Wi…

设计模式笔记(7)---适配器模式(结构型)

Gof定义 将一个类的接口转换成客户所希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 动机 在软件系统中&#xff0c;由于应用环境的变化&#xff0c;常常要将“一些现存的对象”放在心的环境中应用&#xff0c;但是新环境要求的接口…

软件设计模式之适配器模式(JAVA)

什么是适配器模式&#xff1f; 在计算机编程中&#xff0c;适配器模式&#xff08;有时候也称包装样式或者包装&#xff09;将一个类的接口适配成用户所期待的。适配器能将因为接口不兼容而不能在一起工作的类工作在一起&#xff0c;做法是将类自己的接口包裹在一个已存在的类中…

Javascript 调试技巧

Javascript 调试技巧 在代码中寻找错误 1&#xff09;alert 方法&#xff1a; 弹框提示 2&#xff09;console 方法 在调试窗口上打印 JavaScript 值 3&#xff09;断点调试 在浏览器开发者工具中为JS代码添加断点&#xff0c;让JS执行到某一特定位置停住&#xff0c;方便…

WPF程序将DLL嵌入到EXE的两种方法

2019独角兽企业重金招聘Python工程师标准>>> WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是《Visual Studio 版本转换工具WPF版开源了》的续&#xff0c;关于《Visual Studio 版本转换工具WPF版开源了》可以参看地下地址&#xff08;两篇是一样的&#xff09;&…

华中地区高校第七届ACM程序设计大赛——之字形矩阵【2012年5月27日】

题意&#xff1a;输入a b Right 或 a b Down ,根据输入输出之字形路径的矩阵。 1 #include <stdio.h>2 int xx[4]{0,1,-1,1},yy[4]{1,0,1,-1};3 int map[100][100],col,row,x,y,dir,steps,idx;4 char sel[10];5 void nextdir()6 {7 switch(dir)8 {9 case 0: …

oracle文件

1、控制文件和日志文件 控制文件&#xff08;Control File&#xff09;是一个很小的二进制文件&#xff0c;用于描述和维护数据库的物理结构。在Oracle数据库中&#xff0c;控制文件相当重要&#xff0c;它存放有数据库中数据文件和日志文件的信息。Oracle数据库在启动时需要访…

常用命令-tar 加密

2019独角兽企业重金招聘Python工程师标准>>> 在当前目录下有一个pma目录的文件夹: 1、使用tar对文件压缩加密&#xff1a; # tar -zcvf - pma|openssl des3 -salt -k password | dd ofpma.des3 完成将得到一个pma.des3的打包文件&#xff0c;用你设置的密码替换pas…