xquery基于原生小程序,是一套相似于jquery的小程序开发工具库,方便引用且无破坏小程序原生模式。html
使用Pager方法替换小程序Page,其余用法一致。无侵入性语法前端
const Pager = require('components/aotoo/core/index') Pager({ data: { itemElement: {...} }, onReady(){ ... } })
相似于在web开发中能够使用getElementsById
抓取html dom元素对象,下列针对item组件对象实现jquery
<ui-item item="{{itemElement}}" />
const Pager = require('components/aotoo/core/index') Pager({ data: { itemElement: { $$id: 'item-id', title: '这是一个item组件' } }, onReady(){ let $item = this.getElementsById('item-id') $item.addClass('active') } })
onReay相似于web中的body.onLoad,全部dom元素都已经准备稳当,使用getElementsById
去抓取实例git
query传递参数更贴近web前端开发(事件封装是基于Pager及xquery定义的组件才有效,不会影响原生开发)github
<ui-item item="{{itemElement}}" />
Pager({ data: { itemElement: { title: '按钮', tap: 'onTap?username=张三' // 容许query参数 // tap => bind:tap的别名 // aim => catch:tap的别名 // longpress => bind:longpress的别名 // longtap => bind:longtap的别名 // touchstart => bind:touchstart 别名 // touchmove => bind:touchmove的别名 // touchend => bind:touchend的别名 // touchcancel => bind:touchcancel的别名 // catchlongpress => catch:longpress的别名 // ...其余catch方法以此类推 } }, onTap(e, param, inst){ // e => 原生event事件对象 // param => {username: '张三'} // inst => <ui-item />组件实例对象,支持update, addClass, removeClass等方法 inst.update({ title: param.username+'的按钮' }, function(){ let $data = inst.getData() console.log($data.title) // 张三的按钮 }) } })
const Pager = require('components/aotoo/core/index') const lib = Pager.lib const dataEntity = lib.hooks('DATA-ENTITY', true) // true表示缓存数据到storage onReay(){ // 将用户信息缓存一天 dataEntity.setItem('names', {name: '', sex: ''}, 24*60*60*1000) setTimeout(()=>{ let namesData = dataEntity.getItem('names') console.log(namesData) // {name: '', sex: ''} },3000) }
小程序本地缓存10M,内存128M,所以数据缓存到本地受到不少限制,好比图片,须要使用LRU缓存机制来对图片/文件进行管理web
const Pager = require('components/aotoo/core/index') const lib = Pager.lib const imgEntity = lib.hooks('IMG-ENTITY', { localstorage: true, // 开启本地缓存 expire: 24 * 60 * 60 * 1000, // 过时时间为1天,全部缓存的数据 max: 50 // 最大缓存数为50条,即当前hooks实例只会存储最经常使用的50条数据 }) onReay(){ // 将用户信息缓存一天 // img-src => 图片的具体地址或者一个惟一地址 // 挂载一个方法,当该钩子存储数据时 imgEntity.setItem('image-src', {img: 'cloude://....'}) saveImgToLocal('cloude://...') setTimeout(()=>{ let imgsData = imgEntity.getItem('image-src') console.log(imgsData) // {img} || undefined if (!imgsData) { imgEntity.setItem('image-src', {img: 'cloude://....'}) saveImgToLocal('cloude://...') } },3000) }
有两种方式支持markdown文本小程序
嵌入方式比较简单,下面示例markdown文本以嵌入方式实现后端
const Pager = require('components/aotoo/core/index') Pager({ data: { itemElement: { "@md": ` ## 马克党标题 基于xquery的基类开发的组件能够直接内嵌使用马克党文档 ` } }, onReady(){ ... } })
前端从后端拿去富文本数据,直接转化成小程序模板结构输出,下面示例html文本以嵌入方式实现缓存
const Pager = require('components/aotoo/core/index') Pager({ data: { itemElement: { "@html": ` <div class="container"> <img src="http://..." /> <span>...</span> <br /> <section> ... ... </section> </div> ` } }, onReady(){ ... } })
小程序demo演示markdown