php对接Hybrid框架VasSonic教程

JAVA herman 279浏览 0评论

腾讯最近开源了一款高性能的Hybrid框架VasSonic。目前网上还没有相关的使用教程,因此我便制作和整合了这部分内容,希望能对大家有所帮助。

关于VasSonic我就不在过多的介绍了,大家可以查看这篇文章的介绍。

Sonic在项目中被称为简称。

VasSonic在项目中的简称Sonic。他们的口号是:专注于提升H5首屏加载速度。

下面就开始我们今天的内容,如何用php实现Sonic,把Sonic作为前端。

下载并导入sonic.php

require_once(PATH."/sonic.php");

然后添加以下代码。

if (isset($_GET['sonic']) && $_GET['sonic'] == '1') {
// Check if Sonic is needed or not 
    util_sonic::start();
    $this->_index_v5($uin);
    util_sonic::end();
}

前端使用

下面是一个简单的演示,演示如何使用Sonic为前端。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>业余草 Sonic php 实例:www.xttblog.com</title>
    <script type="text/javascript">
            
            //通过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;
                    }
                }
            }
    </script>
</head>
<body>
    //步骤1:通过插入不同的注释锚来指定模板和数据。
    <div id="data1Content">
        <!--sonicdiff-data1-->
        <p id="partialRefresh"></p>
        <!--sonicdiff-data1-end-->
    </div>
    <div id="data2Content">
        <!--sonicdiff-data2-->
        <p id="data2">here is the data</p>
        <!--sonicdiff-data2-end-->
        <p id="pageRefresh"></p>
    </div>
    <div id = "data3">data3</div>
   //步骤2:通过Javascript界面​​从移动客户端接收diff数据。
    <script type="text/javascript">
         window.function(){
                getDiffData();
    }
    </script>
</body>
</html>

从上面的代码中,我们可以看出,php版本的使用sonic主要分3步。

步骤1:通过插入不同的注释锚来指定模板和数据。数据将用锚包裹<!– sonicdiff-moduleName –> <!– sonicdiff-moduleName-end –>。html的另一部分是模板。

<div id="data1Content">
	<!--sonicdiff-data1-->
	<p id="partialRefresh"></p>
	<!--sonicdiff-data1-end-->
</div>
<div id="data2Content">
	<!--sonicdiff-data2-->
	<p id="data2">here is the data</p>
	<!--sonicdiff-data2-end-->
	<p id="pageRefresh"></p>
</div>
<div id = "data3">data3</div>

步骤2:通过JavaScript界面​​从移动客户端接收到不同的数据。当网站完成时,演示的JavaScript界面​​涉及。但是,当涉及到的时候并不是不可改变的,网站可以随时决定。

<script type="text/javascript">
     window.function(){
            getDiffData();
}
</script>

步骤3:处理从移动客户端收到的不同状态。演示演示如何根据来自移动客户端的差异数据查找和替换指定锚点的数据,然后更新网站。

//步骤3处理来自移动客户端的响应,包括Sonic响应代码和差异数据。  
function getDiffDataCallback(result){}
//步骤3处理来自移动客户端的响应,包括Sonic响应代码和差异数据。  
function handleSonicDiffData(sonicStatus,sonicUpdateData){}

以上就是php对接Sonic的教程。欢迎留言吐槽!