一、Hbuilder平台
编写网站及WebApp,可直接生成APP壳体,使用内置浏览器内核解析网页文件,可引入MUI框架,及建立Node.js工程。
二、MUI框架
封装了Native.js,可使用plus对象操作移动设备硬件及WebView等,同时封装了媲美原生App的样式、动作、图标等。
三、知识基础
1、js、jQuery、mui通过id、class、标签类型、父子关系获得标签元素的方式。
2、jQuery的before和after、append和remove;js的removeChild方法。
3、html中已存在标签元素的addEventListener监听html中的标签元素的事件,‘tap’对应点击,‘swipedown’对应下拉;
html中已存在标签元素的on监听js追加的标签元素的事件。
4、setTimeout方法可设置持续时间。
5、location.reload();可进行webPage重新加载 。
6、mui封装的侧滑与下拉刷新不能同时使用。
7、.mui-content中的input获得焦点后可显示在可见视野中;
但.mui-content中的.mui-scroll-wrapper中的input获得焦点后不能显示在可见视野中。
8、* { touch-action: none; }可解决谷歌的在被动事件中不能阻止默认 。
9、cookie可进行时效性本地存储;localStorage可进行永久性本地存储。
10、innerText是标签展示文本;innerHtml是标签内部标签信息。
11、split可通过字符串或正则表达式截取字符串得到字符串数组;replace可将A字符串替换成B字符串;substring可截取一个字符串中的连接部分。
12、mui.ajax的type:get方式比post方式快;dataType:可以是xml,可以是json;
data:为传递的参数;success中data.childNodes[0].textContent获得webservice返回的结果文本,可转成HTMLCollection,节点的firstChild.nodeValue可得到节点值。
13、get下拉框select的值通过遍历哪一个option的selected为true;
set下拉框select的值通过遍历使text为所需值的option的selected为true。
14、获得当前日期:
var now = new Date();
var today = now.getFullYear() + "-" + ((now.getMonth() + 1) < 10 ? "0" : "") +(now.getMonth() + 1) + "-" + (now.getDate() < 10 ? "0" : "") + now.getDate();
15、mui的toast必须是一个执行分支的结尾。
16、可通过mui.toast、console.log、alert方式调试。
17、plus.webview的open、close、show、hide比mui封装方式的稳定。
18、扫码中有业务处理时:scan.cancel();后进行业务处理,然后scan.start();
19、mui.toast等于plus.nativeUI.alert。
20、mui.confirm可设置提示的title、content、button文本。
21、mui的webPageA跳转至webPageB时:
webPageA:mui.openWindow中url为html名,id自己设置,extras为传递的参数;
webPageB:plus.webview.currentWebview()可获得参数值。
22、plus.barcode.Barcode可绑定控件、控件风格得到扫码对象,此对象onmarked对应success,onerror对应error。
23、mui的apk为壳体、代码、资源及配置文件;wgt为代码、资源及配置文件。
24、IIS做web容器下载wgt时,需要添加MIME类型。
25、整型数据位移可进行进制转换。
26、.mui-popup-backdrop可添加蒙版。
26、mui-popup可创建弹出框。
27、js的onfocus等于jQuery的focus;
js的onchange等于jQuery的change等于mui的input;
js的onclick等于jQuery的click等于mui的tap。
28、plus.nativeUI.pickDate弹出系统日期控件。
29、input获取焦点时滚动:mui('#after .mui-scroll-wrapper').scroll().scrollTo(0, -scrollheight, 1000);
30、(parseFloat(a)*10000 - parseFloat(b)*10000)/10000可避免浮点值异常。
31、Math.round(A)是A的四舍五入;Math.floor(A)是比A小的最大整数;Math.ceil(A)是比A大的最小整数。
四、发行
Manifest.json中设置版本号、启动图片、App图标、权限等;发行原生安装包中选择Android或IOS;可提交申请发行为流应用,360手机助手、微信、微博等可以扫码安装,流应用支持边下载边使用。
五、制作移动App资源升级包
生成wgt文件,只存储代码、资源文件、配置文件等;支持版本检测与更新,注意在IIS的MIME类型中添加文件名/wgt,使文件可被下载。
六、服务端
C#编写的.Net WebService发布WebMethod,将简单String或类、类的集合转成的xmlString返回。
七、客户端
客户端调用WebMethod,处理返回的简单String及xmlString。简单String由data.childNodes[0].textContent方式处理;xmlString由getXmlDoc(data)方式处理(方法体内部操作详见源码)。