vassonic PHP,Node.js对接Hybrid框架VasSonic教程
腾讯由于有微信小程序等需要快速打开H5的场景,因此加速H5首屏打开效率就成了研发的重任。根据这两天腾讯发布的VasSonic来看,打开的效率确实提高了不少。本文将结合nodejs来对VasSonic框架进行对接。
VasSonic配合node.js,需要依赖nodejs的版本等信息。具体看下面的3条依赖:
nodejs的节点版本> 7.0。因为代码中使用了async/await语法。
安装sonic_differ模块
导入sonic_differ模块
安装sonic_differ模块
npm install sonic_differ –save
导入sonic_differ模块
const differ = require(‘sonic_differ’);
在Sonic模式下从服务器截取和处理数据。
首先,像下面的代码一样创建一个Sonic缓存结构。
let sonic = {
buffer: [],
write: function (chunk, encoding) {
let buffer = chunk;
let ecode = encoding || ‘utf8’;
if (!Buffer.isBuffer(chunk)) {
buffer = new Buffer(chunk, ecode);
}
sonic.buffer.push(buffer);
}
};
在从服务器截取数据并使用sonic_differ模块进行处理
response.on(‘data’, (chunk, encoding) => {
sonic.write(chunk, encoding)
});
response.on(‘end’, () => {
let result = differ(ctx, Buffer.concat(sonic.buffer));
sonic.buffer = [];
if (result.cache) {
//304 Not Modified, return nothing.
return ”
} else {
//other Sonic status.
return result.data
}
});
前端如何使用
这里是一个简单的演示,演示如何使用Sonic为前端。
业余草 Sonic php 实例:www.xttblog.com
//通过JavaScript界面与移动客户端进行交互以获取Sonic差异数据。
function getDiffData(){
window.sonic.getDiffData();
}
//步骤3:处理来自移动客户端的响应,包括Sonic响应代码和差异数据。
function getDiffDataCallback(result){
var sonicStatus = 0;
/**
*声音状态:
* 0:无法从手机客户端获取任何数据。
* 1:手机客户端首次使用Sonic。
* 2:移动客户端重新加载整个网站。
* 3:网站将通过本地刷新动态更新。
* 4:移动客户端的Sonic请求收到304响应代码,没有任何修改。
* /
sonicUpdateData = {};
var result = JSON.parse(result);
if(result[‘code’] == 200){
sonicStatus = 3;
sonicUpdateData = JSON.parse(result[‘result’]);
} else if (result[‘code’] == 1000) {
sonicStatus = 1;
} else if (result[‘code’] == 2000) {
sonicStatus = 2;
} else if(result[‘code’] == 304) {
sonicStatus = 4;
}
handleSonicDiffData(sonicStatus, sonicUpdateData);
}
//步骤3:处理来自移动客户端的响应,包括Sonic响应代码和差异数据。
function handleSonicDiffData(sonicStatus, sonicUpdateData){
if(sonicStatus == 3){
//网站将被动态更新,并在本地刷新模式下运行一些JavaScript。
var html = ”;
var id = ”;
var elementObj = ”;
for(var key in sonicUpdateData){
id = key.substring(1,key.length-1);
html = sonicUpdateData[key];
elementObj = document.getElementById(id+’Content’);
elementObj.innerHTML = html;
}
}
}
//步骤1:通过插入不同的注释锚来指定模板和数据。
here is the data
//步骤2:通过Javascript界面从移动客户端接收diff数据。
window.function(){
getDiffData();
}
上面的前端用法和php对接Hybrid框架VasSonic教程是一样的。
vassonic PHP,Node.js对接Hybrid框架VasSonic教程相关推荐
- 一款自带工作流引擎的Node.js全栈框架,程序员的接单神器
大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发! 今天小编推荐一款自带工作流引擎的Node.js全栈框架, 是程序员的接单快手 ...
- 关于node.js的web框架的应用及并发性能测试
"Node.js 是服务器端的 JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,Node.js 采用 V8 引擎,同样 ...
- node.js Web应用框架Express入门指南
node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门 ...
- 转 10 个最佳的 Node.js 的 MVC 框架
10 个最佳的 Node.js 的 MVC 框架 oschina 发布于: 2014年02月24日 (33评) 分享到: 收藏 +322 Node.js 是一个基于Chrome JavaScript ...
- node.js中的框架
node.js中的框架 载自: http://nodeframework.com/ MVC frameworks Sinatra-like These frameworks offer rich co ...
- 10 个最佳的 Node.js 的 MVC 框架
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用· Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, ...
- Node.js 国产 MVC 框架 ThinkJS 开发 config 篇
原创:荆秀网 网页即时推送 https://xxuyou.com | 转载请注明出处 链接:https://blog.xxuyou.com/nodejs-thinkjs-study-config/ 本 ...
- 十大 Node.js 的 Web 框架,快速提升工作效率
Node.js 系统含有多种不同的结构,如 MVC.全栈.REST API 和生成器等.这些结构不仅提升了 Web 应用的开发效率,也优化了开发过程.在这里,我们收集整理了十个高效的 Node.js ...
- node.js 桌面软件框架 electron 开发流程
##node.js 桌面软件框架 electron 开发流程 ####步骤 1,安装electron npm --g electron 2,创建工程 //新建app文件夹 mkdir app //创建 ...
最新文章
- 使用OpenCV4实现硬件级别加速
- 和平精英微信和qq不是一个服务器,和平精英微信和QQ玩家能不能一起玩?微信和QQ怎么开黑建房[图]...
- ST3新建py2和py3的build system
- word2003快速排版工具栏_干货分享 | 闲到在家数瓜子?——先把ID排版秘籍学了吧(上)...
- Windows下动态加载可执行代码原理简述
- 帆软报表(finereport)控件背景色更改
- 深度学习 用户画像_一文告诉你什么是用户画像
- decimal在java中用什么类型,MYSQL数据库 的 decimal 字段类型 和 Java 的BigDecimal
- Android -- TabHost
- android任意函数绘制_图片和图形 | 可绘制对象概览
- Gibbs 采样完整解析与理解
- 计算机无法读取exe文件,电脑所有EXE文件都打不开的原因和多种解决方案
- python 学习(八—1) 项目:生成随机的测试试卷文件
- 华为大数据生态适配地图
- C语言 四则运算来喽!!小朋友的数学不再愁!
- vue---lodash的使用
- Mysql数据处理,按照半小时汇总数据,
- “内存不能为read/written”是什么原理?
- iOS Technical Support For All-AFastRecord
- JavaWeb自学笔记,ServletAPI编程常用接口和类
热门文章
- 微电子所等在二维材料异质结构光电器件研究中取得进展
- flutter 真机iOS字体偏小
- python学习之对excel文件的操作
- android banner加载布局,Android知识点之图片轮播控件Banner
- 时间戳(Unix timestamp)转换工具 - 在线工具-和-在线解析JSON
- orangepi——学习python02
- 人际关系-《吸引力是这样炼成的》书中的精髓:掌握7个人际交往技能,收获丰富多彩的人生。
- 【解决】Asset file ‘XXX/XXX/XXX.meta ’ has inconsistent casing. Renaming meta file succeeded.
- 考研英语 - word-list-28
- win10安装rational rose