以前作手機頁面,只是時效短、更新度高的零星幾個,供APP內嵌調用。好比抽獎嘛、活動宣傳啦。html
如今的公司,不知是否是不知者無畏,整一個app所有用html5來實現,包括頭部導航條。客戶端只需封裝一下,打個包就OK。實現的方式是網頁放在服務器,像從瀏覽器訪問一下,客戶端只是充當一個瀏覽器的角色。這種方式app store應該是不容許的吧。但所作的只是供醫院內部人員使用的一個項目,能實如今線學習課程、報名、考試、簽到、查房、論文申報等功能就OK。html5
得知HBuilder這個東東,仍是從客戶口裏聽來的,他對HBuilder推崇備致,充滿對新技術的興奮感。他說這個能夠實現下載到本地,而不是從服務器訪問。還能夠打包。更能夠調用設備的一些功能,如攝像頭什麼的,這倒比較新鮮,我歷來不知道網頁也能夠調用設備。android
因而去找來研究了一下。發現的確是有很多優勢。不考慮別的,只拿它來作html編輯器都是極好的,速度快、提示至關強大。web
它內嵌了emmet,就是之前的zen coding,使代碼提示功能發揮到極致,速度加快很多。json
舉例以下:瀏覽器
1、js(按「回車」鍵)服務器
dl:$("")app
dli:$("#")----id編輯器
dlc:$(".")----class學習
dg:document.getElementById("")
2、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);}