您的位置:首页 > 移动开发

HBuilder初探——强大的提示符及纯网页打包成APP

2015-08-13 15:38 190 查看
之前做手机页面,只是时效短、更新度高的零星几个,供APP内嵌调用。比如抽奖嘛、活动宣传啦。

现在的公司,不知是不是不知者无畏,整一个app全部用html5来实现,包括头部导航条。客户端只需封装一下,打个包就OK。实现的方式是网页放在服务器,像从浏览器访问一下,客户端只是充当一个浏览器的角色。这种方式app store应该是不允许的吧。但所做的只是供医院内部人员使用的一个项目,能实现在线学习课程、报名、考试、签到、查房、论文申报等功能就OK。

得知HBuilder这个东东,还是从客户口里听来的,他对HBuilder推崇备致,充满对新技术的兴奋感。他说这个可以实现下载到本地,而不是从服务器访问。还可以打包。更可以调用设备的一些功能,如摄像头什么的,这倒比较新鲜,我从来不知道网页也可以调用设备。

于是去找来研究了一下。发现的确是有不少优点。不考虑别的,只拿它来做html编辑器都是极好的,速度快、提示相当强大。

它内嵌了emmet,就是以前的zen coding,使代码提示功能发挥到极致,速度加快不少。

举例如下:

一、js(按“回车”键)

dl:$("")

dli:$("#")----id

dlc:$(".")----class

dg:document.getElementById("")

二、DOM(按Tab键)

不用输入<>,直接输入标签的名字即可。

! or html:5:

html5全套标签

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>

</body>
</html>

p#foo.bar:

<p id="foo" class="bar"></p>

h1{foo}: <h1>foo</h1>

>:子元素;+:同级元素;^:换行;*:复制

div+div>p>span+em^bq:

<div></div>

<div>

  <p>

    <span></span>

    <em></em>

  <p>

  <blockquote></blockquote>

</div>

ul>li*5:

<ul>

  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>

</ul>

另外还可以用它来打包成app,安装到手机上,当原生来用。而我之前的做法都是搭好本机服务器,用草料二维码生成访问地址,再用手机扫描,在手机浏览器中打开来调试。从没试过可以安装,甚至可以定义图标和应用名称。

在hbuilder中新建移动APP项目;在manifest.json中设置应用名称、版本号和入口页面等;在第二页“图标配置”中可以上传app的图标。

然后右键“发行”,选择“App打包”,android使用DCloud公用证书上传到云端打包,通过360手机助手可以直接安装到手机。

有一个问题:打包的app按返回键时会直接退出程序,而不是返回上一页,这需要用到html5+的plus.key.addEventListener('backbutton',function()手动设置backbutton监听事件来定义。

common.js:

//取消浏览器的所有事件,使得active的样式在手机上正常生效
document.addEventListener('touchstart',function(){
return false;
},true);
// 禁止选择
document.oncontextmenu=function(){
return false;
};
// H5 plus事件处理
var ws=null,as='pop-in';// 默认窗口动画

function plusReady(){
ws=plus.webview.currentWebview();
// 隐藏滚动条
ws.setStyle({scrollIndicator:'none'});
// Android处理返回键
var pageUrl=window.location.href;
plus.key.addEventListener('backbutton',function(){
//判断是否返回到首页,是->退出,否则返回上一页
if(pageUrl.indexOf('home')==-1){
history.back();
}else{
if(confirm('确认退出?')){
plus.runtime.quit();
}
}
},false);
}
//扩展API是否准备好,如果没有则监听“plusready"事件
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready',plusReady,false);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: