最简单的webapp开发

之前我又想写过关于 移动端页面开发,这篇则整理一下webapp开发需要的一些最简单的条件,以最简单的方式开发一个webapp;

基础dom操作库

首先对于页面上的交互还是以dom操作为主,虽说现在javascript的dom api已经很好用了,但是对于用惯jquery的人来说还是很不方便,所以我选择 zepto,它的api和jquery完全一致,但是更为轻量。

路由处理

再手机端上页面切换会出现白屏,也无法做转场动画,为了坚决这些问题,我们需要开发一个单页面应用程序( SPA ),通过解析url #后面的路径(#后面路径转换不会产生页面条件)加载不同的dom,这里也可以加上转场的动画,以获取和原生一样的用户体验。

director.js 是最纯粹的路由注册/解析器,它在不刷新页面的情况下,利用“#”符号组织不同的URL路径,并根据不同的URL路径来匹配不同的回调方法。director.js不仅可以应用在客户端,在使用node.js的后台,它也能够实现前面说的后端路由功能。

缓存

移动端的网络需要考虑流量的消耗,不必要的重复请求是很粗糙的,所以很移动端需要大量使用缓存,来获取更好的用户体验。html5提供了webstorage机制储存数据,需要加一些简单的封装就可以使用了 js缓存封装

1
2
3
localStorage.setItem(key, value);
localStorage.getItem(key);
localStorage.removeItem(key);

手势事件

移动端需要监测用户不同的手势来做相应的处理,例如:微信上列表上长按显示操作菜单,滑动返回。。。。,我们可以通过监测touch事件来判断用户的手势,touch事件有以下几种:

touchstart 手指接触屏幕事件
touchmove 手指再屏幕上移动事件
touchend 手指离开屏幕事件
touchcancel 非正常离开屏幕事件(例如在触摸时,别的应用打开,或者程序意外退出。。。)

简单的手势用以上几种事件配合就可以处理了,如果手势相对复杂,可以使用 touch.js, 百度开发的手势事件库,api相当简单

1
2
3
4
touch.on('.target', 'swipeleft swiperight', function(ev){
console.log("you have done", ev.type);
});

滚动条

再android4.0以前手机上是不支持div滚动条的,很多的应用都引进了 iscoll.js,用js模拟滚动条,再4.0 以后有了div滚动条,可以使用原生滚动。但是在长列表渲染时,div滚动条会有闪白的情况,于是,大家就都使用,iscoll和div滚动切换的方式,再较低版本例如android 4.4之前用iscoll 4.4以上用原生滚动条。

下拉刷新和infinite-scroll

下拉刷新和无限滚动式手机端的必不可少的功能,js需要监听滚动和touch事件来实现这两个功能; jQuery模拟原生态App上拉刷新下拉加载效果代码

现有框架解决方案

app.js

App.js 的目标是为移动webapp提供一个健壮良好的开端,处理常见的功能并且兼容其他流行的JS库。提供良好的路由控制,有controller的mvc设计,也可以良好的兼容其它的框架,缺点是组件相对较少,但是对于简单的webapp还是没有问题的

framework7

Framework7 是一个开源免费的框架可以用来开发混合移动应用(原生和HTML混合)或者开发 iOS & Android 风格的WEB APP。也可以用来作为原型开发工具,可以迅速创建一个应用的原型。

framework7 组件丰富而且可以在android和ios两种风格建切换

打包

webapp需要调用原生方法,例如摄像头,通知等等,还需要将webapp打包成真正的apk或者app。这些需要通过一些工具完成;

Phonegap

phonegap 是一个跨平台的移动app开发框架,可以把html css js写的页面打包成跨平台的可以安装的移动app,并且可以调用原生的几乎所有的功能,比如摄像头,联系人,加速度等。

HBuilder

HBuilder 是国产的混合是开发解决方案,包括有HBuilder编辑器 H5+规范调用原生api, mui框架,native.js与原生通信,它提供云打包以json格式配置app,再性能不错,经自己的比较再同样的程序的性能用Hbuilder更加。

文章目录
  1. 1. 基础dom操作库
  2. 2. 路由处理
  3. 3. 缓存
  4. 4. 手势事件
  5. 5. 滚动条
  6. 6. 下拉刷新和infinite-scroll
  7. 7. 现有框架解决方案
    1. 7.1. app.js
    2. 7.2. framework7
  8. 8. 打包
    1. 8.1. Phonegap
    2. 8.2. HBuilder
,