amplifyjs--有关组件通讯与请求管理与本地存储的js库

[size=x-large][b]简介:[/b][/size]
本介绍只是方便英文不好的人快速对这个框架有个了解,当然我的英文也差,还好理解代码。

官方网站:[url]http://amplifyjs.com[/url]
github:[url]https://github.com/appendto/amplify[/url]

[b]请求管理[/b]
amplifyjs通过一个抽象层来统一管理你的请求,帮助你封装请求和响应数据以适应server api和业务代码,并统一回调接口。这些都可以减轻业务代码受server api变化的影响,并且减少请求处理代码和业务代码的耦合。amplifyjs还可以设置不同的过期策略来缓存你的响应数据,避免重复请求。

[b]组件通讯[/b]
amplifyjs的组件通讯很简单,采用subcribe(订阅)| publish(发布)的模式,订阅者的回调函数可以设置自己的this对象,多个订阅者之间可以通过设置重要性值来调整响应顺序,消息发布时可以同时推送多个数据给订阅者。你可以用它来实现组件通讯和完成观察者模式的功能。

[b]本地存储[/b]
amplifyjs提供了统一的接口让你在本地缓存数据,它最大可能的支持了不同版本和类型的浏览器,包括ie,firefox,chrome, iphone, android等等


[size=x-large][b]示例[/b][/size]

[size=medium][b]请求管理示例[/b][/size]
更多示例见官网[url]http://amplifyjs.com/api/request/#examples[/url]

一个简单示例展示定义请求和发起请求, 只是把请求和响应分离

//定义请求
amplify.request.define( "ajaxExample1", "ajax", {
url: "/myApiUrl",
dataType: "json",
type: "GET"
});


//发起请求
amplify.request( "ajaxExample1", function( data ) {
data.foo; // bar
});


这个示例避免在发起请求时不用拼接API URL字符串

//REST api的url中需要type和id两个参数通过模板占位符表示
amplify.request.define( "ajaxRESTFulExample", "ajax", {
url: "/myRestFulApi/{type}/{id}",
type: "GET"
})

//发起请求时就简单啦
amplify.request( "ajaxRESTFulExample",
{
type: "foo",
id: "bar"
},
function( data ) {
// /myRESTFulApi/foo/bar was the URL used
data.foo; // bar
}
);


这个示例在回调业务代码前对响应进行解析,再以统一的形式发给回调

amplify.request.define( "decoderSingleExample", "ajax", {
url: "/myAjaxUrl",
type: "POST",
decoder: function ( data, status, xhr, success, error ) {
if ( data.status === "success" ) {
success( data.data );
} else if ( data.status === "fail" || data.status === "error" ) {
error( data.message, data.status );
} else { //这个时候可能data都不正常
error( data.message , "fatal" );
}
}
});

amplify.request({
resourceId: "decoderSingleExample",
success: function( data ) {
data.foo; // bar
},
error: function( message, level ) {
alert( "always handle errors with alerts." );
}
});


请求管理还可以通过定义全局回调,对所有请求进行集中处理或监控等。

subscribe( "request.error", function( settings, data, status ) {
if ( status === "abort" ) {
// deal with explicit abort of request
} else {
// deal with normal error
}
});


[size=medium][b]组件通讯示例[/b][/size]
官方示例见[url]http://amplifyjs.com/api/pubsub/#examples[/url]
下面的示例bellstar有版权

一个简单的订阅和发布,只要id是同一个,它们就对接上了。

amplify.subscribe( "吃中饭了", function() {
alert( "小明听到要吃中饭了" );
});

amplify.publish( "吃中饭了" );


发布时,传递消息

amplify.subscribe("吃中饭了", function(food1, food2) {
alert("小明的午饭是:" + food1 + "," + food2 );
});

amplify.publish( "吃中饭了", "鸡腿","鸡翅");


接收消息方指定响应函数要绑定的this对象,小明方便改成Jim

var ming = {name: "小明"};

amplify.subscribe( "吃中饭了", ming, function(food1, food2) {
alert(this.name + "的午饭是:" + food1 + "," + food2);
});

amplify.publish( "吃中饭了", "鸡腿", "鸡翅");


还可以指定消息订阅者的响应顺序

var ming = {name: "小明"};
var jim = {name: "Jim"};
var mei = {name: "梅"};

var eating = function(food1, food2) {
alert( this.name + "开始吃:" + food1 + "," + food2 );
}

amplify.subscribe( "派饭了", ming, eating, 1);
amplify.subscribe( "派饭了", jim, eating, 2);
amplify.subscribe( "派饭了", mei, eating);

amplify.publish( "派饭了", "鸡腿", "鸡翅");

猜谁先吃到饭:[color=white]小明 > Jim > 梅[/color] 选中这行看答案(点再点再点)

[size=medium]本地存储示例[/size]
详见[url]http://amplifyjs.com/api/store/[/url]

//存储
amplify.store("key","value");

//获取
amplify.store("key");

//5秒后过期,打字要快哦,要不然一直会是undefined
amplify.store("key2","value" {expires: 5000});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值