bump to 0.1.1
基于 saber-mm 和 pjax 移动端多页面应用开发框架
saber-mm
pjax
通过 edp 引入模块:
edp import saber-pjax
// saber-pjax 使用跟 saber-fireworks 使用方式是一样的 var saberPjax = require('saber-pjax'); // 全局配置信息 var config = { pjaxParser: function (res) { return { title: 'test', content: res, data: {} }; } }; // 加载路由配置 saberPjax.load([ { path: '/index', action: require('index'), noCache: true // 强制不缓存 }, { path: '/user/account', action: 'user/account/main', pjax: false // 不使用 pjax 方式导航 } ]); saberPjax.start('viewport', config);
更多使用例子,可以参考 test case 和 demo。
test case
demo
saber-pjax 基于 pjax 技术进行导航路由,路由实现跟 saber 同构版 rebase 类似,都是基于 html5 history api,并通过拦截链接点击来进行路由导航控制。
saber-pjax
saber
rebase
saber-pjax 的 mvp 框架实现基于 saber-mm,有些具体使用细节需要注意下:
mvp
不支持如下事件,由于 saber-pjax 渲染逻辑默认都是后端渲染完成的
enter
beforerender
afterrender
View 不支持 templateMainTarget 配置项
templateMainTarget
Model 扩展 api
var allQueryInfo = model.getPageQuery(); var specifyQueryKeyValue = model.getPageQuery(key);
var allSyncDataInfo = model.getSyncData(); var specifyDataKeyValue = model.getSyncData(key);
不支持全局配置项
新增全局配置项
pageQueryKey: 页面查询 key,用于存储访问的页面的 url 查询参数信息,可以通过 model 的扩展 api: getPageQuery 获取,或者直接通过 model.get(pageQueryKey) 获取。
getPageQuery
model.get(pageQueryKey)
ajax Object optional: 导航请求页面内容使用的 ajax 模块,默认使用 saber-ajax 模块。
Object
optional
ajax
saber-ajax
fetch Function optional: 请求导航页面内容的接口,默认基于默认 ajax 模块实现。
Function
pjaxParams Function|Object optional: 请求导航页面内容发送 pjax 请求的参数,默认 {_pjax: true},后端实现可以通过是否存在 _pjax 参数来控制返回的是页面片段还是完整的页面文档。
Function|Object
{_pjax: true}
_pjax
pjaxParser Function optional: 可以通过该接口实现对于响应内容的解析预处理。
{ pjaxParser: function (response) { // 对于响应的内容,默认 response 为字符串,进行预处理 return { title: '浏览器页面的标题', content: '页面要显示的 html 片段', data: Object // 页面要同步的页面数据,可以通过 model 扩展 api `getSyncData` // 来获取该数据,对于首屏要同步的数据可以通过下面 `firstScreenData` 来设置 }; } }
firstScreenData Object optional: 设置首屏要同步的数据。
maxCacheSize number optional: 历史导航记录栈允许缓存的最大 页面(action)实例数量,默认 20。对于路由规则里,强制使用 cached 为 true 的缓存页面不算在导航历史记录栈里,使用独立的缓存。
number
20
cached
路由规则新增的路由配置项
boolean
npm install edpx-mobile edpm import saber-ajax@2.1.0 fastclick@1.0.6 saber-mm@1.0.1 saber-viewport@1.1.0 edpm start open http://localhost:8848/demo/index.html
npm install npm test
关于 saber 使用更多文档可以参考 这里。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
saber-pjax
Install
通过 edp 引入模块:
Usage
更多使用例子,可以参考
test case和demo。saber-pjax vs saber-firworks
saber-pjax基于pjax技术进行导航路由,路由实现跟saber同构版rebase类似,都是基于 html5 history api,并通过拦截链接点击来进行路由导航控制。saber-pjax的mvp框架实现基于 saber-mm,有些具体使用细节需要注意下:不支持如下事件,由于
saber-pjax渲染逻辑默认都是后端渲染完成的enter事件beforerender/afterrender事件View 不支持
templateMainTarget配置项Model 扩展 api
不支持全局配置项
新增全局配置项
pageQueryKey: 页面查询 key,用于存储访问的页面的 url 查询参数信息,可以通过 model 的扩展 api:
getPageQuery获取,或者直接通过model.get(pageQueryKey)获取。ajax
Objectoptional: 导航请求页面内容使用的ajax模块,默认使用saber-ajax模块。fetch
Functionoptional: 请求导航页面内容的接口,默认基于默认ajax模块实现。pjaxParams
Function|Objectoptional: 请求导航页面内容发送 pjax 请求的参数,默认{_pjax: true},后端实现可以通过是否存在_pjax参数来控制返回的是页面片段还是完整的页面文档。pjaxParser
Functionoptional: 可以通过该接口实现对于响应内容的解析预处理。firstScreenData
Objectoptional: 设置首屏要同步的数据。maxCacheSize
numberoptional: 历史导航记录栈允许缓存的最大 页面(action)实例数量,默认20。对于路由规则里,强制使用cached为 true 的缓存页面不算在导航历史记录栈里,使用独立的缓存。路由规则新增的路由配置项
booleanoptional: 是否强制不缓存,框架默认历史前进后退会使用缓存,可以通过该选项来强制不使用缓存。booleanoptional: 是否对当前路由禁用pjax导航,默认都是支持的,对于不支持的路由,访问该链接,会导致页面重新加载,而不是通过发送ajax请求进行页面局部区域的更新。Demo
Test
Reference
关于
saber使用更多文档可以参考 这里。