一、deepLink跳转
1.1 快应用中呼起deepLink
第一步:检测是安装了app
前提条件:需要知道app的包名
// 判断用户是否安装了app |
第二步:调起deepLink
let pkg = 'com.newsqq.fda' // 传入包名 |
1.2 H5页面呼起快应用
引入快应用官方提供的代码,这里做了一下处理
export const quickapp = (function(){ |
或者在网页中嵌入以下
js,支持HTTP与HTTPS访问。上面的代码和这个一样的,只是做了一下模块化处理
<script type="text/javascript" src="//statres.quickapp.cn/quickapp/js/routerinline.min.js"></script> |
调起应用
appRouter(packageName, path, params, confirm),更多详情
第一步:检测手机型号
只有在对应的应用商店上架才可以打开
// 检测手机型号 |
第二步:调起快应用
以呼起
OPPO手机下已经上架的快应用为例
// H5页面中呼起快应用 |
1.3 H5页面呼起deepLink
H5 页检测手机是否安装 app 相关流程
uri获取
这里的
uri,指得就是通过Url scheme来实现的H5与安卓、苹果应用之间的跳转链接。
我们需要找到客户端的同事,来获取如下格式的链接。
xx://'跳转页面'/'携带参数' |
简单解释下
url scheme。
url就是我们平常理解的链接。scheme是指url链接中的最初位置,就是上边链接中‘xx’的位置。- 详细介绍可以看这里:使用url scheme详解
用这个链接我们可以跳转到 应用中的某个页面,并可以携带一定的参数
具体实现
第一步:通过iframe打开App
Android平台则各个app厂商差异很大,比如Chrome从25及以后就不再支持通过js触发(非用户点击),所以这里使用iframe src地址等来触发scheme。
//在iframe 中打开APP |
第二步: 判断是否安装某应用
原理:若通过
url scheme打开app成功,那么当前h5会进入后台,通过计时器会有明显延迟。利用时间来判断。
- 由于安卓手机,页面进入后台,定时器
setTimeout仍会不断运行,所以这里使用setInterval,较小间隔时间重复多次。来根据累计时间判断。 - 根据返回
truefalse来判断是否安装。 document.hidden对大于4.4webview支持很好,为页面可见性api
// 检测app是否安装 |
使用方式
// deep_link与h5链接跳转区分 |
二、剪贴板分享
主要是使用到
clipboard简化
import ClipboardJS from 'clipboard' |
三、加载更多
h5页面需要分页加载优化,react中为例
第一步:封装一个loadMore组件
import React from 'react' |
第二步:处理分页
需要后台支持分页
import React, {Component} from 'react' |
四、搜索历史
封装cache
import storage from 'good-storage' |

五、骨架屏的应用
封装一个骨架屏组件
import React,{PureComponent} from 'react' |
使用
// count 显示的条数 |

六、游客点赞
由于服务器不能及时返回点赞次数、点赞状态信息(点赞、举报信息服务器都是cache延迟返回的),因此把每次操作产生的记录存储在客户端
// 检测是否举报、点赞数据 |
hanldeLike(data,obj={}){ |
刷新页面,还原数据
//上次点赞时间和当前时间差值 >=10分钟 更新服务器cache的likeCount |
红心点赞动画
一张20帧长图片,点击的时候按帧率进行播放

<section class="fave"></section> |
.fave { |
transition属性的steps方法把过渡切分成很多步,像动画的帧数一样

七、nodejs递归文件夹上传到阿里云
const fs = require('fs'); |
八、nodejs实现复制目录到指定文件夹
const fs = require( 'fs' ), |
九、优化
webpack tree shaking去除多余代码服务端开发
gzip压缩静态资源图片
CDN存储next服务端渲染
骨架屏加载细节
H5端在线体验 http://goods.yesdat.com快应用端在
OPPO应用商店搜“好物”(标有快应用的那个)