ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:34.89KB ,
资源ID:4442672      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4442672.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(wilddog for javascript开发向导.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

wilddog for javascript开发向导.docx

1、wilddog for javascript开发向导开发向导上次更改时间 2015/12/081.安装与设置创建一个帐号首先,注册并登录Wilddog账号,进入控制面板。然后,在控制面板中,添加一个新的应用。你会得到一个应用的URLhttps:/安装Wilddog使用Javascript SDK非常简单。你只需在HTML文件中加入一个script标签。script src=在Node.js上使用Wilddog node.js版API与javascript版完全一样。Wilddog客户端在Node.js上运行非常简单,首先需要通过npm安装Wilddog模块 $npm install wildd

2、og -save使用require在你的应用中使用wilddogvar Wilddog = require(wilddog);Typescript用户typescript 调用原生js需要有一个 .d.ts文件。在这里可以找到在 Ionic 项目中使用Ionic 是一个利用 html5 开发混合手机 APP 的前端 SDK ,由于 Ionic 使用 Angular ,所以开发者在开发 Ionic APP 时可以使用 wild-angular 来简化 wilddog 的一些操作。现在我们可以使用 Ionic 提供的命令行命令来安装 Ionic:$ npm install -g ionic如果在

3、Mac 电脑开发应用并且希望运行在 ios 设备上,需要先安装 XCode ,然后用 npm 安装 ios-sim:$ npm install -g ios-sim现在我们可以使用 Ionic 的命令行工具来创建一个空白的 Ionic 应用模板:$ ionic start myapp blank使用下面的命令行可以告诉 Ionic 我们的应用要适配 ios 和 Android :$ ionic platform add ios$ ionic platform add android集成 Wilddog:在 html 文件中,在引入自己的 app.js文件之前,我们引入 Wilddog 和 wi

4、ld-angular 作为依赖,script src=script src=在自己的 app.js 文件中把 Wilddog 作为依赖注入到我们的 module 中:angular.module(starter, ionic, wilddog)现在我们就可以使用wild-angular的 $wilddogObject、$wilddogArray、$wilddogAuth 来对数据进行操作了。提示和建议1,我们建议你直接使用野狗官方提供的SDK地址。这样,你将无需更新任何代码,即可获得更新。2,wilddog.js是经过大量测试的RELEASE版本。3,野狗全站均支持Spdy 3.1和Gzip压

5、缩。我们正在尝试更高的压缩比,例如SDCH,Http2来进一步提升静态资源加载速度。4,不用担心Https的性能。我们对Https进行了极致的优化。野狗的官网,直到windows.onload事件触发,也只花费了不到500ms。2. 了解数据数据是一棵 JSON 树所有的数据都存储在各个 JSON 对象中,没有任何表的概念。当你把数据添加到这棵json 树中,这些数据就变成这棵树的子树。比如,我们在users/mchen下增加widget后,我们的数据是这样的: users: mchen: friends: brinchen: true , name: Mary Chen, / 新数据节点会增

6、加在已经存在的JSON树中 widgets: one: true, three: true , brinchen: . , hmadi: . 创建一个Wilddog 对象引用在html中读写wilddog数据,需要创建一个Wilddog对象引用, 要操作和同步哪些数据取决于创建 Wilddog对象引用时传入的URLnew Wilddog(https:/创建一个Wilddog引用并不是直接访问这个URL,或创建一个连接。数据直到需要的时候才会传输。一旦这个数据被查询,这个数据会一直与服务端保持一致。你可以直接访问一个子节点:new Wilddog(https:/你还可以通过 child接口进行相

7、对路径访问:var rootRef = new Wilddog(https:/rootRef.child(users/mchen/name);Wilddog 中的数组Wilddog并不天然支持数组,当我们想存数组时,我们把数组变成对象:/ 原始数据hello, world/ 存储后的新数据0: hello, 1: world需要注意的是,如果某节点的所有子节点的key都是整数,且0到key的最大值之间,超过一半的key都有非空的值,那么wilddog客户端会将它们当作数组来处理。限制和约束描述约束备注树的深度32key的长度768bytesUTF-8 编码,不能包含.$#/和 ASCII控制字

8、符0-31和127一个叶子节点的数据大小1mbUTF-8 编码通过SDK写入的数据大小限制2mbUTF-8 编码通过 REST 写入数据大小限制4mb一次能读取的节点2000一次条件查询能返回的最大条数500如使用 limitToFirst()、limitToLast()等3.保存数据保存数据的方式methoddescriptionset()写入和替换当前路径的数据update()修改部分子节点的数据push()在当前节点下新增一个数据,数据的key随机生成transaction()一个复杂数据被并发更新导致数据错误,使用事务防止数据被并发更新用 set() 写数据set 是 Wilddog

9、最基本的写数据操作。set() 设置当前节点的值,如果当前节点已经存在值,set 会将旧值替换成新值。为了理解set的工作原理,我们创建一个简单博客app,这个博客的app储存在这里:var ref = new Wilddog(https:/我们用唯一的用户名来标识一个用户,存储他们的全名和生日。首先,我们创建一个引用,然后用set储存数据,set可以传入string,number,boolean,object类型:var usersRef = ref.child(users);usersRef.set( alanisawesome: date_of_birth: June 23, 1912,

10、 full_name: Alan Turing , gracehop: date_of_birth: December 9, 1906, full_name: Grace Hopper );这时,数据被嵌套保存到了相应的位置上, 完成上面的过程,你也可以直接这样做:usersRef.child(alanisawesome).set( date_of_birth: June 23, 1912, full_name: Alan Turing);usersRef.child(gracehop).set( date_of_birth: December 9, 1906, full_name: Grac

11、e Hopper);这两种方式的区别是,如果 /user 下面原来有数据的时候,第一种方式会把数据全部覆盖掉,而第二种方式只会覆盖alanisawesome和gracehop两个子节点.更新已经存在的数据如果你想同时更新多个子节点,而不覆盖其他的子节点,你可以使用 update() 函数:var hopperRef = usersRef.child(gracehop);hopperRef.update( nickname: Amazing Grace);这样会更新 Grace的数据,更新她的nickname。如果我们用set而不是update,date_of_birth和full_name都会

12、被删除。保存一个列表当多个用户同时试图在一个节点下新增一个子节点的时候,这时,数据就会被重写,覆盖。 为了解决这个问题,Wilddog push()采用了生成唯一ID 作为key的方式。通过这种方式,多个用户同时在一个节点下面push 数据,他们的key一定是不同的。这个key是通过一个基于时间戳和随机的算法生成的。wilddog采用了足够多的位数保证唯一性。用户可以用push向博客app中写新内容: var postsRef = ref.child(posts); postsRef.push( author: gracehop, title: Announcing COBOL, a New

13、Programming Language ); postsRef.push( author: alanisawesome, title: The Turing Machine );产生的数据有一个唯一ID: posts: -JRHTHaIs-jNPLXO: author: gracehop, title: Announcing COBOL, a New Programming Language , -JRHTHaKuITFIhnj: author: alanisawesome, title: The Turing Machine 获取唯一ID调用push会返回一个引用,这个引用指向新增数据所在

14、的节点。你可以通过调用key()来获取这个唯一ID / 通过push()来获得一个新的数据库地址var newPostRef = postsRef.push( author: gracehop, title: Announcing COBOL, a New Programming Language);/ 获取push()生成的唯一IDvar postID = newPostRef.key();使用事务保存数据当处理可能被并发更新导致损坏的复杂数据时,比如增量计数器,我们提供了事务操作。事务操作需要提供两个参数:一个更新函数和一个可选的完成 callback 函数。更新函数提供当前数据,当前数据

15、是云端读取的。举例说明,如果我们想在一个的博文上计算点赞的数量,我们可以这样写一个事务:var upvotesRef = new Wilddog(https:/upvotesRef.transaction(function (current_value) / return (current_value | 0) + 1;);我们使用 currentData.getValue()!= null 来判断计数器是否为空或者是自增加。 如果上面的代码没有使用事务, 当两个客户端在同时试图累加,那结果可能是为数字 1 且非数字 2。注意:doTransaction() 可能被多次被调用,必须处理 cur

16、rentData 变量为 null 的情况。 当事务允许时,本地不会缓存从云端读取的数据。更多关于事务API 的文档。4.获取数据到目前为止,我们已经了解到如何向Wilddog中保存数据,现在我们来看看如何查询数据。Wilddog查询数据的方式是绑定一个异步监听的回调函数,每当数据被第一次查询或者数据发生变化,这个回调函数都会被执行。重新看博客app的例子,我们可以这样读取博客数据:/ 获得一个数据库连接实例var ref = new Wilddog(https:/ 监听数据ref.on(value, function(snapshot) console.log(snapshot.val();

17、, function (errorObject) console.log(The read failed: + errorObject.code););运行这段代码,我们会看到控制台中打印出一个对象,包含所有的博客数据。每次当有新的博客数据被写入时,这个回调函数都会被触发执行。回调函数接收一个Snapshot类型作为参数。一个Snapshot对象代表的是在指定的数据路径下,某一个时间点上数据的一个快照。调用它的val()函数,可以得到一个代表当前节点数据的javascript对象。如果路径节点下没有数据,那么这个Snapshot将为null。这个例子中我们用value作为事件类型,用于读取当前

18、路径节点下的所有数据。我们还可以使用另外三种数据事件类型。事件类型WildDog提供了四种数据事件:value,child_added,child_changed,child_removed。valuevalue事件用来读取当前节点的静态数据快照,value事件在初次获取到数据时被触发一次,此后每当数据发生变化都会被触发。回调函数被执行时候,当前节点下所有数据的静态快照会被作为参数传入。child_added与value事件返回指定数据节点下的所有数据不同,child_added事件会为每一个现存的子节点数据触发一次,此后每当有子节点数据被增加时被触发一次。回调函数传入的也是DataSnaps

19、hot对象,包含的是新增子节点的数据。如果我们只想获取新增的博客数据,可以使用child_added事件:/ 获得一个数据库连接实例var ref = new Wilddog(https:/ 获得新增加的数据ref.on(child_added, function(snapshot) var newPost = snapshot.val(); console.log(Author: + newPost.author); console.log(Title: + newPost.title););child_changed当子节点数据发生了改变时,child_changed事件会被触发,事件回调

20、函数中传入的参数是子节点改变后的数据快照。 我们可以使用child_changed事件来读取被修改的博客数据:/ 获得一个数据库连接实例var ref = new Wilddog(https:/ 获得发生改变的数据ref.on(child_changed, function(snapshot) var changedPost = snapshot.val(); console.log(The updated post title is + changedPost.title););child_removed当直接子节点被删除时,child_removed事件被触发。事件回调函数中传入的参数是被

21、删除的直接子节点的数据快照。在博客的例子中,我们可以使用child_removed事件,在有博客数据被删除时,在控制台中打印出来:/ 获得一个数据库连接实例var ref = new Wilddog(https:/ 获取被删除的数据ref.on(child_removed, function(snapshot) var deletedPost = snapshot.val(); console.log(The blog post titled + deletedPost.title + has been deleted););取消事件绑定通过off()函数可以取消一个事件回调函数的绑定:ref

22、.off(value, originalCallback);一次性读取数据在某些场景下,也许需要事件的回调函数只被触发一次,然后立即取消。可以使用once()函数:ref.once(value, function(data) / 执行业务处理,此回调函数只会被调用一次)查询数据Wilddog支持选择性的查询数据。要构造一个查询,需要先指定数据如何排序,可以使用以下几个函数:orderByChild(),orderByKey(),orderByValue(),orderByPriority()。接下来,可以组合以下五个函数,构造出一个复杂的条件查询:limitToFirst(),limitToL

23、ast(),startAt(),endAt(),equalTo()。下面我们来举例如何进行数据查询。假设现在有一些关于恐龙的数据如下: lambeosaurus: height : 2.1, length : 12.5, weight: 5000 , stegosaurus: height : 4, length : 9, weight : 2500 按照指定的子节点排序通过将子节点的路径名作为参数传递给orderByKey(),可以实现按指定子节点排序。例如,要按照height进行排序,可以:var ref = new Wilddog(https:/ref.orderByChild(heig

24、ht).on(child_added, function(snapshot) console.log(snapshot.key() + was + snapshot.val().height + meters tall););不包含指定子节点的数据节点,将会按照该子节点为null进行排序,会排在最前边。每个查询都只能有一个排序。在一个查询中多次调用orderByChild()会抛出错误。按照数据节点名称排序使用orderByKey()函数,可以实现按照数据节点的名称进行排序。下面的例子按照alpha字母顺序读取所有的恐龙数据:var ref = new Wilddog(https:/ref.o

25、rderByKey().on(child_added, function(snapshot) console.log(snapshot.key(););按照数据节点的值排序使用orderByValue()函数,我们可以按照子节点的值进行排序。假设恐龙们进行了一场运动会,我们统计到它们的得分数据: scores: bruhathkayosaurus : 55, lambeosaurus : 21, linhenykus : 80, pterodactyl : 93, stegosaurus : 5, triceratops : 22 要按照得分进行排序,我们可以构造一个这样的查询:var ref

26、 = new Wilddog(https:/scoresRef.orderByValue().on(value, function(snapshot) snapshot.forEach(function(data) console.log(The + data.key() + dinosaurs score is + data.val(); ););按照优先级排序关于优先级,请参考API文档中的相关部分。复杂查询我们已经了解到数据排序的函数。接下来是limit类的和range类的查询,通过它们,可以构建出更为复杂的查询:limit查询limitToFirst()和limitToLast()两个

27、函数用于设置最大多少个子节点数据会被同步。如果我们设置为100,那么初次获取到数据时,就只会最多触发100次事件回调函数。如果数据库中有少于100条消息数据,child_added事件将会为每一条消息数据被触发一次。如果消息数量多于100条,那么只有其中的100条会被触发child_added事件。如果我们使用了limitToFirst()函数,那么被触发的100条将会是排序最前边的100条。如果使用了limitToLast()函数,那么被触发的100条将是排序最后的100条。继续恐龙的例子,我们可以获得体重最大的两种恐龙:var ref = new Wilddog(https:/ref.orderByChild(weight).limitToLast(2).on(chil

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1