Cordova开发总结(插件篇)

$file = ‘sql_cache.txt’;
$link = mysql_connect(‘localhost’,’username’,’password’) or die
(mysql_error());
mysql_select_db(‘shop’) or die (mysql_error());

键盘插件(Keyboard)

世家都通晓在运动端调出键盘输入操作时,调出的键盘会挤出本身日前的界面,造成页面包车型地铁体裁错乱的题材。Keyboard插件能够监听键盘的显得隐藏事件,禁止input时键盘出现界面滚动等等难题。

 
 许多站点使用数据库作为站点数据存储的容器。数据库包括了产器消息、目录结构、文章可能留言本,某些数据很或者是一心静态的,这个将会从四个缓存系统中获得的巨大好处。
 
 那样三个类别经过把SQL查询的结果缓存到系统的3个文书中储存,从而阻碍连接数据库,构造查询与收获再次来到结果而增加了响应时间。
 
 有个别系统数据库并不是放在WEB服务器上的,那样供给一个长距离连接(TCP可能其他类似的),或然从数据库中赢得大量的多少,那样你得忍受越多时光,那决定于系统响应时间与能源利用。
前提

Crosswalk

那是一个独门定制的Webview插件,包罗了绝大部分新型的HTML5表征。克罗丝work
Cordova插件近来只援救Android,
iOS须要协调手动的三合一。在近来安卓机那种测试机可以装一箱子都不停的景况下,使用统一的Webview是可怜有必不可少的。可以免止大部分的包容性难点,而且能够维持正确的性质。当然有个弊端就是丰裕这一个插件,打包的apk会追加20MB左右。

本课程使用MySQL作为数据库。你供给安装MySQL(www.mysql.com下载是实惠的)和激活PHP
MYSQL扩张(暗中同意情形是激活的)。
由于要查询数据库,你必要文化一些SQL(结构化查询语言)的基本常识。
缓存SQL查询结果
何以要缓存查询结果?
缓存查询结果能极大地革新脚本执行时间和能源供给。
   
缓存SQL查询结果也允许你通过前期处理数据。假使您用文件缓存去存储全体剧本的输出结果(HTML输出),那样或然是对事情没有什么益处的。
当你执行贰个SQL查询时,点典的处理进度是:
<!–[if !supportLists]–>l      
 <!–[endif]–>连接数据库
<!–[if !supportLists]–>l      
 <!–[endif]–>准备SQL查询
<!–[if !supportLists]–>l      
 <!–[endif]–>发送查询到数据库
<!–[if !supportLists]–>l      
 <!–[endif]–>取得再次来到结果
<!–[if !supportLists]–>l      
 <!–[endif]–>关闭数据库连接
 
 以上办法十分占用财富并且相反的熏陶了本子的属性。只好通过获取的雅量回到数据和数据库服务器的职位那一个要平素相互协调。固然不断连接可以革新连接数据库时的载荷,但尤其成本内部存款和储蓄器能源,假诺获得的是大气的数码,那么存款和储蓄的一体时刻会相当短暂。
成立一条SQL查询:
 
 SQL(结构化查询语言)查询被视作操作数据库及它内容的接口。SQL可用于定义和编辑表的构造,插入数据到表,更新或删除表中的音讯。
 
 SQL是用以与数据通信的言语,在大多数PHP数据库扩充(MySQL,ODBC,Oracle等)通过传递SQL查询到数据库中来管理整个进程。
 
 本教程中,仅仅用select语言来得到数据库中的数据。这个数量将被缓存,之后将用作数据源。
控制如哪一天候更新缓存:
依照程序的内需,缓存能够利用多样情势。最普遍的3种艺术是:
<!–[if !supportLists]–>l      
 <!–[endif]–>时直接触缓存(过期的岁月戳)
<!–[if !supportLists]–>l      
 <!–[endif]–>内容改动触发缓存(发现数目变动后,相应地革新缓存)
<!–[if !supportLists]–>l      
 <!–[endif]–>人工触发缓存(人工的法门告诉系统消息超期并且强制发生新的缓存)
       
 你的缓存必要恐怕是上述原理的一个或八个的综合。本学科将研商时直接触方式。然则,在多个宏观的缓存机制中,3种方法的归结将被使用。
缓存结果:
       
基本的缓存是用PHP的四个函数serialize()和unserialize()(译注:那1个函数分别代表种类化与反类别化)。
       
函数serialize()用于存储PHP的值,它能担保不错过那几个值的类型和结构。
       
事实上,PHP的session扩张是用类别化过的变量,把session变量($_SESSION)存款和储蓄在系统的3个文件中。
       
函数unserialize()与上述操作相反并且使类别化过的字符串重返到它原本的组织和数据内容。
       
在本例中,以叁个电子商务公司为例。商店有三个基本表,categories和products(此处为原本数据库表名).product表恐怕每一日都在转移,categories依旧是不变静止的。
       
要展现产品,你能够用1个出口缓存脚本来存款和储蓄输出的HTML结果到多少个文书中。但是categories表可能必要早先时期处理。例如,全体的目录通过变量
category_id(通过$_REQUEST[‘category_id’]来获得)被出示,你或许希望高亮当前被选取的目录。

多年来正好做完一个用Cordova开发了一款电子商务的施用。在选拔Cordova前,小编有观望过,国内的Appcan,
Apicloud等等的消除方案。其实Appcan,ApiCloud的纵横交错方案挺完整的,从支付,框架,到打包测试,数据总结都带有了,可是自身依然更赞成于开源的科尔多瓦,
小编相信开源社区的力量理应更强硬,所以最后甄选了Cordova作为消除方案。事实上,作者用Cordova开发境遇最近就此须求的插件都以能够通过谷歌查找到的。在此总括下本人使用的插件。

/* 构造SQL查询 */
$query = “SELECT * FROM categories”;
$result = mysql_query($query) or die (mysql_error());
while ($record = mysql_fetch_array($result) ){
    $records[] = $record;
}
$OUTPUT = serialize($records);
$fp = fopen($file,”w”); // 以写权限的方式打开文件
fputs($fp, $OUTPUT);
//fwrite($fp,$OUTPUT);
fclose($fp);

原稿地址:http://imziv.com/blog/article/read.htm?id=74

$file = ‘sql_cache.txt’;
$expire = 86400; // 24 小时
if (file_exists($file)&&filemtime($file) > (time() – $expire)) {
    $records = unserialize(file_get_contents($file));
   //$records=unserialize(fread($file,filesize($file)));
} else {
    $link = mysql_connect(‘localhost’,’username’,’password’) or die
(mysql_error());
    mysql_select_db(‘shop’) or die (mysql_error());
    /* 构造SQL查询 */
    $query = “SELECT * FROM categories”;
    $result = mysql_query($query) or die (mysql_error());
    while ($record = mysql_fetch_array($result) ) {
        $records[] = $record;
    }
    $OUTPUT = serialize($records);
    $fp = fopen($file,”w”);
    //fputs($fp, $OUTPUT);
    fwrite($fp,$OUTPUT);
    fclose($fp);
} // end else

切页转场动画

刚起始自作者利用Angularjs集成了CSS3的转场动画,打包跑在iOS上时其实幸好,可是到Android端的时候,弊端尽显,实在不理想,最好本人把转场动画都一直撤掉了,留下个loading动画。显著整个界面包车型客车切换就变的乏味了。最终找到com.telerik.plugins.nativepagetransitions其一转场插件。这几个插件辅助Slide,Flip,FadeDrawerCurl等5种意义,集成和调用也一点也不细略。

/*查看sql_cache.txt文件,里面包车型的士剧情恐怕类似这样的:
a:1:{i:0;a:6:{i:0;s:1:”1″;s:11:”category_id”;s:1:”1″;i:1;s:9:”Computers”;s:13:”category_name”;s:9:”Computers”
;i:2;s:25:”Description for
computers”;s:20:”category_description”;s:25:”Description for
computers”;}}
     
 那个输出是它的变量和体系的里边表现方式。固然你用mysql_fetch_array()函数重回数字索引的数组和1个涉嫌的数组(那正是为啥数据看起来像是发生了五次),三个是数字索引,另三个是字符串索引。
利用缓存:
要用缓存,你须求用函数unserialize()来使数据还原成原始格式与品种。
您能够用file_get_contents()那么些函数来读取sql_cache.txt文件的剧情,把它赋给3个变量。
     
 请注意:那么些函数在PHP4.3.0及以上版本有效。若您利用的是一个老版本的PHP,2个简短的办法是用file()函数(读整个文件到三个数组,每行变成三个数组)。implode()函数用于把数组的各因素连接成二个字符串然后选拔unserialize()反连串化。*/

支付Alipay

做活动使用肯定少不了支付,支付宝的Cordova插件其实过多,但本人找找了一圈依然以此相比好使~

表categories结构
Field                            Type                                  
 Key                 Extra
category_id                      int(10) unsigned               PRI    
            auto_incremen
category_name                 varchar(255)
category_description       text 
     
 在本例中,通过时直接触缓存技术被运用,设定一段时间后让其缓存SQL输出过期。在此越发的例证中,定一段时间为24小时。
种类化例子:
<!–[if !supportLists]–>l      
 <!–[endif]–>连接数据库
<!–[if !supportLists]–>l      
 <!–[endif]–>执行查询
<!–[if !supportLists]–>l      
 <!–[endif]–>取得富有结果构成1个数组以便后边你可以访问
<!–[if !supportLists]–>l      
 <!–[endif]–>系列化数组
<!–[if !supportLists]–>l      
 <!–[endif]–>保存连串化过的数组到文件中*/

极光推送(JPush)

极光的推送插件在Cordova上的并轨也是老大的有利,顺遂的话1个钟头就足以解决。刚开首的时候作者还有点慌,担心推送插件的合龙难点,没悟出看了下官网,有从Cordova的合一版本,还协助电动安装。

// 查询结果在数组 $records 中
foreach ($records as $id=>$row) {
    if ($row[‘category_id’] == $_REQUEST[‘category_id’]) {
        // 被挑选的目录显示粗体字
        print
‘<B>’.$row[‘category_name’].'</B><BR>’;
    } else {
        // 其余目录呈现用健康字体
        print $row[‘category_name’].'<br>’;
    }
} // end foreach

总结

上述是自己用的多少个首要插件,因为Cordova里面像CameraFile,
其余种类的插件太多太多了。完全能够依照本身的喜好来挑选。简单来说,Cordova本人由于这样长年累月日子的聚积,培养了它在插件等等财富上的多多的优势。别的,微软刚刚开源的Xamarin流言也是个13分科学的混合开发方案,用C#编辑源码,
有机会试试~

// file_get_contents() 适合于for PHP < 4.3.0
$file = ‘sql_cache.txt’;
$records = unserialize(implode(”,file($file)));
//以后您能够通过$records数组并且取得原始查询的数据:
foreach ($records as $id=>$row) {
    print $row[‘category_name’].”<br>”;
}
       /*
注意$records是数组(三个包涵了查询结果的数字索引列——每行是一个数字和三个字符串…真是无规律)的一排。
把它们位于一起:
     
基于本例子中的时间来决定是或不是缓存。倘使文件修改的日子戳比领后天子戳减去过期时间戳大,那么就用缓存,否则更新缓存。
<!–[if !supportLists]–>l      
 <!–[endif]–>检查文件是或不是留存并且时间戳小于设置的逾期时间
<!–[if !supportLists]–>l      
 <!–[endif]–>获取存款和储蓄在缓存文件中的记录恐怕更新缓存文件
$file = ‘sql_cache.txt’;*/
$expire = 86400; // 24 小时 (单位:秒)
if (file_exists($file)&&filemtime($file) > (time() – $expire)){
    // 取得缓存中的记录
    $records = unserialize(file_get_contents($file));
} else {
    // 通过 serialize() 函数创立缓存
}
/*外加其余恐怕的:
<!–[if !supportLists]–>l      
 <!–[endif]–>把缓存结果存款和储蓄在共享内部存款和储蓄器中以取得更快的快慢
<!–[if !supportLists]–>l      
 <!–[endif]–>扩充一个职能随机地运营SQL查询并且检查是否输出与缓存输出一致。要是不均等,则更新缓存(本函数运维次数的票房价值能够定为百分之十0)。通过哈希算法(如MD5())能够帮忙判断字符串可能文件是还是不是改变。
<!–[if !supportLists]–>l      
 <!–[endif]–>扩展一个协会者的作用,人工的删减这几个缓存文件,以强制更新缓存(如file_exists()函数重回false时)。你可以用函数unlink()删除文件。
脚本:*/

 本教程适合于那么些对缓存SQL查询以减掉数据库连接与实施的载荷、提升脚天质量感兴趣的PHP程序员。
概述

Leave a Comment.