一个轻量级的webApp框架.一个简单的html入口页面

#sApp

build by awen ~ 71752352@qq.com ~ 2013-10-10

##简介:

一个轻量级的webApp框架.一个简单的html入口页面,一个配置文件再加上相应的模板,app就自动生成了。你不需要考虑数据获取更新缓存,页面上拉下拉,页面切换等效果。解放更多的时间去做展现和用户体验吧。

提供了必要的基础模块供用户使用,当然用户也可以自己扩展。

##命名空间结构:

sApp |__Core * (引擎内核,不对外开放) |__FSM (有限循环状态机) |__Config (配置文件) |__Langs (语言包) |__Dao (数据接口) |__Cache (数据缓存) |__UI (页面控件集合) |__Dialog (对话框) |__Mask (蒙版) |__Page (页面控制) |__Util (常用工具集) |__Env (设备信息) |__Plus (扩展以及插件集合) |__slazyload (图片懒加载) |__Slider (无限循环幻灯) |__Scroll (滚动条插件) |__Timer (心跳机) |__Storage (localStorage本页变化监控实现)

##API: 这里只是简单的说明,源码中有详细的注释。

1 sApp.go(config) 引擎入口 2 sApp.Page.show(pageid,param) 显示某一页 3 sApp.Page.render(rid,param,cover) 渲染当前页的某个渲染单元 .... 亲,详情去控制台打吧,就按照上面命名空间结构打印。正式发布会提供详细的api和示例文档

##特点:

1 资源加载在内核中自动执行,属于引擎初始化工作 2 滚动条支持iscroll和下一页按钮,更好的兼容低端机 3 数据请求支持缓存,和强刷 4 页面切换多种动画,预留接口,bug未调 5 图片懒加载更加智能,智能监控iscroll和window滚动条 6 状态机机制 流程更加清晰,让写代码按流程来写 7 实现aop,灵活的插件,log 8 多语言实现,只需要 重写 sApp.Langs 语言对象就可以了 9 localStorage实现本页面监控,暂时不做使用,预留

##运行流程:

首先解析配置文件,生成各个页面的实例 根据hash判断当前页,进入当前页展示流程 解析当前页的配置 循环当前页渲染单元 获取数据,分为静态数据,远程数据。远程数据可以配置缓存和过期 找到约定好的模板用数据渲染他,并在页面上相应的位置渲染 渲染完成后,如果有约定的回调函数存在就执行他 所有渲染单元渲染完毕后页面也就渲染完了,如果有约定的回调函数存在就执行 回退或者前进操作也被监听,将不重绘页面只是显示,其他用户操作进入页面重复以上流程

##app的各个部分

一个简单的html入口页面,一个配置文件再加上相应的模板,

###1 页面入口 <script src="dist/js/sapp.min.js"></script> <script src="dist/js/sapp.plus.min.js"></script> <script src="demo.js"></script> <script> $(function(){ sApp.go(Config); //Config 在demo中 }); </script>

<!-- sApp页面设置区域,html设置区域 1 每个class=sapp_page 为一个页面; 2 每个class=sapp_render ,的dom元素,为一个渲染单元,他可以有自己的模板和数据接口 包含关系为 sapp_page_wrap>sapp_page>sapp_render(其实sapp_render可以不在sapp_page内) --> <section id="page_main"> //id "page_main" 对应配置中设定的页面key <article id="part_slider"></article> //id "part_slider" 对应着page_main页面中的相应key的渲染单元 </section>

###2 页面配置文件 这个配置文件就是配置页面用的,整个应用由,html的页面布局

每个应用程序只有一个配置文件

结构说明

var Config = { <!--全局配置,以下展示的是默认值,不设置则使用默认值--> //懒加载真实图片地址所在属性 G_IMGTRUESRCATTR : 'data-isrc', // ajax超时时间(s) G_AJAXTIMEOUT : 20, // 数据缓存过期时间(s),0表示永不过期,false不缓存 G_CACHETIMEOUT : 5*60, // 页面切换特效, 0:无动画;1:页面动画 渐现渐隐;2:页面动画 中进中出;3:页面动画 横向动画 (默认);4:页面动画 纵向动画;5:页面动画 仿win8 G_PAGETRANS :0, // 错误处理,可以向服务器发送错误日志 G_ERROR : function(e){ sApp.UI.Dialog.show(e.message+'<br>'+e.filename+'<br>'+e.lineno,{type : sApp.UI.Dialog.BTN_CONFIRM,backcancle : true}); }, <!--模板文件地址,(因为tpl是通过ajax获取的,所以制约着模板地址必须是http协议的)--> Tpls : ['./tpl/tpl.html'], <!--页面配置部分--> Pages : { //page_main 对应着页面上的id为page_main的标签,对应模板中id为page_main_tpl的模板,对应的默认自定义回调函数是__page_main "page_main":{ //是否开启图片懒加载 lazyload :true, //本页内渲染单元配置,结构如下: units : { //renderid代表着页面上page_main标签内部id为renderid的标签.对应模板:renderid_tpl,对应的页面回调函数为__renderid "renderid" :{ //静态的数据,比dataurl优先级高,格式遵循接口定义的标准模式 data: {}, //页面数据请求接口,如果不设置或者为false,则不请求数据,格式遵循接口定义的标准模式:{code:,data:,msg:} code代表0表示错误,1代表正常 dataurl: '...', //dataurl的初始参数列表 param: {orderby:5,page:1}, //确认每次刷新是附加操作还是覆盖操作,默认普通页面是覆盖,如果配置了scroll刷新加载则该项无效,默认true cover:true, //在dataurl生效,单独配置该页缓存数据过期时间(秒),0表示永不过期,false不缓存 timeout : 10, //用户自定义的渲染的模板,如果不自定义将使用约定的 id为 'renderid_Tpl'的模板 tpl:"xxx_tpl", //渲染完成后自动执行的回调函数,用户可自定义,不自定义将执行约定的名为 __renderid的方法 callback:xxxx, //上拉下拉刷新后将执行渲染单元的约定回调函数 scroll: { //开启下拉刷新 refresh : true, //开启上拉加载 loadmore : true, //下一页按钮,与loadmore和refresh不共存,且优先级高,作为优化降级方案 nextbtn : true, //如果列表分页的话,代表分页参数的名称 pagekey : 'page', //上拉下拉区域的高度 默认40 offsetHeight:40, //滚动条滚动时候自定义的回调函数句柄 onmoving :  } }, //本页另一个渲染单元 "part_2":{..} } }, //另一个页面 "page_other":{...}

###3 模板 目前集成了artTemplate模板,可以去artTemplate 查看详情

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。