快应用开发之初体验

1. 环境搭建及开发调试

  • 开发需要安装一个npm包hap-toolkit来生成初始化项目,类似vue-cli;
  • 移动端调试器安装,需要andorid手机,去官网资料中心下载apk;
  • 项目初始化后,使用npm run watch以及npm run server,通过快应用调试器扫码进入,就可以hot reload了,开发体验不会太差;
  • 项目初始化出的模板,从package.json依赖来看,webpack需要升级,太老旧,是1.x的版本;
  • 使用vConsole来作为调试控制台,无法安装到快应用中;调试使用快应用调试器提供的调试吧(需要在manifest开启日志,默认off),它是直接打开默认浏览器,然后接着玩儿;

2. 项目配置信息

  • 路由在这里配置;
  • 页面级别的信息如页面标题以及标题颜色、标题背景灯,也在这里配置;
  • 应用基本信息; 3.框架

大体上

  • 写法跟vue类似;
  • 生命周期跟微信小程序类似;
  • 页面级别的数据在private对象中,类似小程序的data对象;但是调用又跟vue类似,private的数据都挂载在this实例上,不像小程序的data数据是挂载在this实例的data对象上;
  • 路由参数传递,两种方式分别是a链接的query和router模块params参数传递,参数接受有两种方式,一种是protected对象,一种是public对象,他们的区别是protected是应用内部参数传递,public负责接收应用外部的参数传递;
  • 数据量大的时候,可以用$app实例上的$data来传递参数;
  • 数据请求可以使用快应用提供的@system.fetch模块
  • 现在app.ux中还不支持公用样式(官方:加了的话,担心性能会变差) 模板
  • 文字一定要放在text中,否则不显示(坑);
  • 不支持单位vw,vh;

逻辑

  • dom事件模型在快应用中不适用;

css样式( 由于快应用最终效果是native不是h5,用的是css的子集,坑较多)

  • css样式不需要写兼容,已经默认集成, 写兼容还可能会报错,默认border-box盒模型,不支持content-box和box-sizing;
  • 没有块元素、行内元素的模型;
  • css样式中的颜色值只严格支持16进制,不能使用缩写,不能使用语义颜色(还有这种操作,无语);
  • css样式中background只设置颜色的话,需要使用background-color,否则报错;
  • 不支持相对定位和绝对定位,支持固定定位;
  • 不支持float布局;
  • 不支持overflow属性;
  • 不支持伪元素选择器,如::before, ::after;
  • flex属性不支持缩写,如flex: 1 0 auto;是不支持的,只能单独写flex的属性;
  • 不支持样式中使用!important;
  • 不支持vertical-align属性;
  • 框架目前仅支持长度单位px和%, 当然不支持单位vw,vh;

4.组件

  • 自定义组件的引入方式是在模板使用import标签引入;

5.接口

  • 接口模块使用,需要在manifest.json中声明(特别是使用web组件时,需要声明,单无需引入模块);
  • 推送模块暂时还未支持(截止20180629);
  • 快应用限制唤起其他app的能力(https://bbs.quickapp.cn/forum.php?mod=viewthread&tid=282&highlight=webview);

6.发布部署

  • 需要在项目中的sign文件夹下添加release签名,然后npm run release,会生成有release签名的工程包,这个包就可以用于部署;
  • 部署是需要申请一个快应用的账号,通过后台上传相关项目资料;
  • 上传包的时候命名规则与app一致,版本管理要注意,快应用后台会检测versionCode,每次发布需要比上次发布的versionCode大;

后续会持续补充…

PHP免费获取手机号码归属地以及手机详细信息

最新发现的,很好用,简单快捷 apidata 首页:http://www.apidata.cn/

一、淘宝网API API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回:JSON

二、拍拍API API地址: http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback 参数: mobile:手机号码 callname:回调函数 amount:未知(必须) 返回:JSON

三、财付通API API地址: http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution.cgi?chgmobile=15850781443 参数: chgmobile:手机号码 返回:xml

四、百付宝API API地址: https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=15850781443 参数: phone:手机号码 callback:回调函数 cmd:未知(必须) 返回:JSON

五、115API API地址: http://cz.115.com/?ct=index&ac=get_mobile_local&callback=jsonp1333962541001&mobile=15850781443 参数: mobile:手机号码 callback:回调函数 返回:JSON

六、有道api接口 接口地址:http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13892101112 参数说明: type : 参数手机归属地固定为mobile q : 手机号码 返回XML格式:

<?xml version="1.0" encoding="gbk"?>
<smartresult>
<product type="mobile">
<phonenum>13892101112</phonenum>
<location>陕西 延安</location>
</product>
</smartresult>

或者

http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=手机号码

返回JSON格式: fYodaoCallBack(1, {‘product’:’mobile’,’phonenum’:’13892101112′,’location’:’陕西 延安’} , ”);

PHP调用淘宝API实例:

<?php
$mobile = "150********";  //要查询的电话号码
$content = get_mobile_area($mobile);
print_r($content);

function get_mobile_area($mobile){
    $sms = array('province'=>'', 'supplier'=>'');    //初始化变量
    //根据淘宝的数据库调用返回值
    $url = "http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=".$mobile."&t=".time();

    $content = file_get_contents($url);
    $sms['province'] = substr($content, "56", "4");  //截取字符串
    $sms['supplier'] = substr($content, "81", "4");
    return $sms;
}

转载自: 作者: 李清波 链接: http://www.liqingbo.cn/blog-1339.html

php中session会话管理默认机制

最近工作之余有时间学习了一下php的session默认机制,下面是一些基本的关于session机制的关键要点罗列。

一.session是php的扩展,在php.ini配置文件中是默认开启的。

二.session基本工作机制

session,从字面意思来说是会话管理,即客户端跟服务器的会话管理。使用会话管理,需要使用session_start方法开启session,一旦调用这个方法,服务器会先自动获取配置中的session_id的名称,并根据客户端发送过来的cookie,检查客户端是否有session_id值发送过来,如果有,就会去服务器相应存储session文件的目录去查找对于session_id指定的文件,并将相关数据反序列化放入$_SESSION中,如果没有,就会针对这个客户端分配session_id。这个会话id具有唯一性,它的作用就是保证客户端的会话信息在服务器能够一一对应,具体来说,它会返回客户端一个cookie信息,其中包含session_id,这个cookie的键名、过期时间等是在php.ini中配置的,在服务器端,它会根据这个id以及php.ini配置的session存放路径,以id为文件名存放,之后对于这个id的session会话数据将存储在这个文件中,直到销毁。

三.为$_SESSION赋值

比如新添加一个值$_SESSION[‘test’] =’blah’; 那么这个$_SESSION只会维护在内存中,当脚本执行结束的时候,用把$_SESSION的值写入到session_id指定的文件夹中,然后关闭相关资源.这个阶段有可能执行更改session_id的操作,比如销毁一个旧的的session_id,生成一个全新的session_id.一半用在自定义 session操作,角色的转换上, 比如Drupal.Drupal的匿名用户有一个SESSION的,当它登录后需要换用新的session_id。

四.写入SESSION操作

在脚本结束的时候会执行SESSION写入操作,把$_SESSION中值写入到session_id命名的文件中,可能已经存在,可能需要创建新的文件。

五.销毁SESSION

SESSION发出去的COOKIE一般属于即时COOKIE,保存在内存中,当浏览器关闭后,才会过期,假如需要人为强制过期,比如 退出登录,而不是关闭浏览器,那么就需要在代码里销毁SESSION,方法有很多:

  1. setcookie(session_name(),session_id(),time() -8000000,..);//退出登录前执行
  2. usset($_SESSION);//这会删除所有的$_SESSION数据,刷新后,有COOKIE传过来,但是没有数据。
  3. session_destroy();//这个作用更彻底,删除$_SESSION 删除session文件,和session_id

当不关闭浏览器的情况下,再次刷新,2和3都会有COOKIE传过来,但是找不到数据.