腾讯由于有微信小程序等需要快速打开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

data3

//步骤2:通过Javascript界面从移动客户端接收diff数据。

window.function(){

getDiffData();

}

上面的前端用法和php对接Hybrid框架VasSonic教程是一样的。

vassonic PHP,Node.js对接Hybrid框架VasSonic教程相关推荐

  1. 一款自带工作流引擎的Node.js全栈框架,程序员的接单神器

      大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发!   今天小编推荐一款自带工作流引擎的Node.js全栈框架, 是程序员的接单快手 ...

  2. 关于node.js的web框架的应用及并发性能测试

    "Node.js 是服务器端的 JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,Node.js 采用 V8 引擎,同样 ...

  3. node.js Web应用框架Express入门指南

    node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门 ...

  4. 转 10 个最佳的 Node.js 的 MVC 框架

    10 个最佳的 Node.js 的 MVC 框架 oschina 发布于: 2014年02月24日 (33评) 分享到:  收藏 +322 Node.js 是一个基于Chrome JavaScript ...

  5. node.js中的框架

    node.js中的框架 载自: http://nodeframework.com/ MVC frameworks Sinatra-like These frameworks offer rich co ...

  6. 10 个最佳的 Node.js 的 MVC 框架

    Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用· Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, ...

  7. Node.js 国产 MVC 框架 ThinkJS 开发 config 篇

    原创:荆秀网 网页即时推送 https://xxuyou.com | 转载请注明出处 链接:https://blog.xxuyou.com/nodejs-thinkjs-study-config/ 本 ...

  8. 十大 Node.js 的 Web 框架,快速提升工作效率

    Node.js 系统含有多种不同的结构,如 MVC.全栈.REST API 和生成器等.这些结构不仅提升了 Web 应用的开发效率,也优化了开发过程.在这里,我们收集整理了十个高效的 Node.js ...

  9. node.js 桌面软件框架 electron 开发流程

    ##node.js 桌面软件框架 electron 开发流程 ####步骤 1,安装electron npm --g electron 2,创建工程 //新建app文件夹 mkdir app //创建 ...

最新文章

  1. 使用OpenCV4实现硬件级别加速
  2. 和平精英微信和qq不是一个服务器,和平精英微信和QQ玩家能不能一起玩?微信和QQ怎么开黑建房[图]...
  3. ST3新建py2和py3的build system
  4. word2003快速排版工具栏_干货分享 | 闲到在家数瓜子?——先把ID排版秘籍学了吧(上)...
  5. Windows下动态加载可执行代码原理简述
  6. 帆软报表(finereport)控件背景色更改
  7. 深度学习 用户画像_一文告诉你什么是用户画像
  8. decimal在java中用什么类型,MYSQL数据库 的 decimal 字段类型 和 Java 的BigDecimal
  9. Android -- TabHost
  10. android任意函数绘制_图片和图形 | 可绘制对象概览
  11. Gibbs 采样完整解析与理解
  12. 计算机无法读取exe文件,电脑所有EXE文件都打不开的原因和多种解决方案
  13. python 学习(八—1) 项目:生成随机的测试试卷文件
  14. 华为大数据生态适配地图
  15. C语言 四则运算来喽!!小朋友的数学不再愁!
  16. vue---lodash的使用
  17. Mysql数据处理,按照半小时汇总数据,
  18. “内存不能为read/written”是什么原理?
  19. iOS Technical Support For All-AFastRecord
  20. JavaWeb自学笔记,ServletAPI编程常用接口和类

热门文章

  1. 微电子所等在二维材料异质结构光电器件研究中取得进展
  2. flutter 真机iOS字体偏小
  3. python学习之对excel文件的操作
  4. android banner加载布局,Android知识点之图片轮播控件Banner
  5. 时间戳(Unix timestamp)转换工具 - 在线工具-和-在线解析JSON
  6. orangepi——学习python02
  7. 人际关系-《吸引力是这样炼成的》书中的精髓:掌握7个人际交往技能,收获丰富多彩的人生。
  8. 【解决】Asset file ‘XXX/XXX/XXX.meta ’ has inconsistent casing. Renaming meta file succeeded.
  9. 考研英语 - word-list-28
  10. win10安装rational rose