{"id":13654369,"url":"https://github.com/WildDogTeam/wilddog-weapp","last_synced_at":"2025-04-23T09:33:25.238Z","repository":{"id":94035107,"uuid":"71329792","full_name":"WildDogTeam/wilddog-weapp","owner":"WildDogTeam","description":"野狗(wilddog)微信小程序客户端","archived":false,"fork":false,"pushed_at":"2017-10-25T06:30:22.000Z","size":326,"stargazers_count":94,"open_issues_count":7,"forks_count":46,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-02-18T20:45:51.223Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WildDogTeam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-10-19T07:18:58.000Z","updated_at":"2023-09-10T10:03:12.000Z","dependencies_parsed_at":"2023-03-13T17:08:02.132Z","dependency_job_id":null,"html_url":"https://github.com/WildDogTeam/wilddog-weapp","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WildDogTeam%2Fwilddog-weapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WildDogTeam%2Fwilddog-weapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WildDogTeam%2Fwilddog-weapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WildDogTeam%2Fwilddog-weapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WildDogTeam","download_url":"https://codeload.github.com/WildDogTeam/wilddog-weapp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250407700,"owners_count":21425546,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T03:00:30.784Z","updated_at":"2025-04-23T09:33:24.981Z","avatar_url":"https://github.com/WildDogTeam.png","language":null,"funding_links":[],"categories":["实用库","Others","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# wilddog-weapp\n----\n\n野狗微信小程序客户SDK\n\n## 配置\n微信小程序平台不同于web平台，它是一个封闭的平台。对于所有的资源使用微信都有严格的限制。所以，在微信小程序中使用野狗之前需要做一些额外的配置，除此之外，你可以像在其他开放平台一样使用野狗。\n\n#### 配置域名白名单\n\n首先，如果想使用野狗数据同步功能和登陆认证的功能你需要在微信小程序管理后台配置域名白名单。路径是 设置\u003e开发设置\u003e服务器配置。由于微信给开发者设置了很多限制，每月只能修改3次，所以修改的时候一定要慎重。为了简化配置，你自需要增加2个域名到白名单：\n\n* socket合法域名 `wss://s-dalwx-nss-1.wilddogio.com`\n* request合法域名 `https://auth.wilddog.com`\n\n#### 配置AppId和AppSecret\n\n如果你想使用微信的用户账号来认证(`auth.signInWeapp(opt_callback)`)，那么你还需要在野狗的管理后台配置微信的AppId 和AppSecret。\n你可以在 设置\u003e开发设置\u003e开发者ID 中找到AppId 和AppSecret。之后在野狗后台中打开微信小程序登陆授权开关，并且将Appid 和AppSecret传入即可。\n\n## 将野狗sdk引入到微信小程序中\n\n1. 将wilddog-weapp-all.js 直接放到微信小程序的项目中\n2. 使用commonjs引入\n\n```js\nvar wilddog = require('wilddog-weapp-all')\n```\n3. 初始化\n\n```js\nvar config = {\n    syncURL: 'https://\u003cWD-APPID\u003e.wilddogio.com',\n    authDomain: '\u003cWD-APPID\u003e.wilddog.com'\n}\nwilddog.initializeApp(config)\n```\n\n\n\n\n## API(以下API为野狗sdk在小程序平台独有的API，另外兼容web端的所有其他API)\n\n微信小程序平台与一般的开放平台不同之一是它有默认的用户，所以我们提供了一个可以使用一个api进行auth的方法：\n\n#### auth.signInWeapp(opt_callback)\n\n* opt_callback: function(err,user) 可选回调函数，认证成功后被调用，如果认证过程一切正常`err`为`null`,user是一个包含用户`id`和`provider`等信息的对象。否则 `err` 是一个Error对象，user为null\n\nreturn Promise 对象\n\n```js\nvar config = {\n    syncURL: 'https://\u003cWD-APPID\u003e.wilddogio.com',\n    authDomain: '\u003cWD-APPID\u003e.wilddog.com'\n}\nwilddog.initializeApp(config)\nwilddog.auth().signInWeapp(function(err,user){\n    // do your logic\n})\n\n//或者使用Promise\n\nwilddog.auth().signInWeapp().then(function(user){\n\n}).catch(function(err){\n\n})\n\n```\n#### ref.bindAsArray(page,varName,callback)\n\n将一个reference或query 与page.data中某个Array绑定，绑定后这个reference指向的数据发生任何变化都将实时同步到绑定到的变量上，从而实时同步到页面。使用bindAsArray 相当于已经监听了 所有 child_* 事件。\n\nbindAsArray 可以很方便列表展示\n\n* page 小程序的page对象\n* varName 与页面绑定的变量名\n* callback 绑定是否成功的回调函数\n\n例子\n\napp.js\n\n```js\nvar config = {\n    syncURL: 'https://\u003cWD-APPID\u003e.wilddogio.com',\n    authDomain: '\u003cWD-APPID.wilddog.com\u003e'\n}\nApp({\n    onLaunch:function () {\n        wilddog.initializeApp(config)\n        this.todoRef = wilddog.sync().ref('todo').orderByPriority().limitToFirst(20)\n    },\n    onHide:function(){\n        this.todoRef.goOffline();\n    },\n    onShow:function(){\n        this.todoRef.goOnline();\n    }\n})\n```\n\n** 注意： **\n小程序 1.3+ 版本 onHide 触发后 ws 会自动断连，必须等到 onShow 触发时才可以重连。在此期间 wilddog 重连机制无效，因此需要用户在 onHide 时手动断连，onShow 时手动连接。 \n\npage (假设是 index)\n\nindex.js\n```\nvar app = getApp()\nPage({\n    ...\n    onLoad: function () {\n        app.todoRef.bindAsArray(this,'todo',function(err){\n            if(err != null){\n                // 数据绑定失败，失败原因：err.message;\n            } else {\n                // 数据绑定成功\n            }\n        })\n    }\n    ...\n})\n```\n\nindex.wxml\n\n```html\n...\n\u003cview wx:for = \"{{todo}}\"\u003e{{item[\".key\"]}}-{{item[\".value\"]}}--{{item[\".priority\"]}}\u003c/view\u003e\n...\n```\n\n** 注意： **\n数据绑定的过程中，野狗数据与微信小程序的数据是一一对应的，但形式发生了变化\n\n```json\n{\n    \"1234\": \"hello\",\n    \"1235\": \"hello again\"\n}\n```\n会映射如下 Array\n\n```json\n[\n    {\n        \".key\": \"1234\",\n        \".value\": \"hello\",\n        \".priority\": null\n    },\n    {\n        \".key\": \"1235\",\n        \".value\": \"hello again\",\n        \".priority\": null\n    }\n]\n```\n\n#### ref.bindAsObject(page,varName)\n\n与bindAsArray 类似，不过是绑定到一个Object，而不是Array。\nbindAsObject 可以很方便的展示结构化数据，比如某种配置信息。\n\nindex.js\n```\nvar app = getApp()\nPage({\n    ...\n    onLoad: function () {\n        // userInfoRef 在app中提供，在这个例子中不再重复出现\n        app.userInfoRef.bindAsObject(this,'userInfo',function(err){\n            if(err != null){\n                // 数据绑定失败，失败原因：err.message;\n            } else {\n                // 数据绑定成功\n            }\n        })\n    }\n    ...\n})\n```\n\nindex.wxml\n\n```html\n\u003cview\u003e\n    userName: {{userInfo[\".value\"][\"userName\"]}}\n\u003c/view\u003e\n\n```\n\n在这里，同样数据会发生映射\n比如原始数据：\n\n```json\nkey: \"1234\"\nvalue:{\n    \"userName\": \"Jack\"\n}\n\n```\n将会被映射为：\n\n```json\n{\n    \".key\": \"1234\",\n    \".value\": {\n        \"userName\": \"Jack\"\n    },\n    \".priority\": null\n}\n\n```\n\n#### ref.unbind(page,varName)\n\n取消数据绑定\n\n\n完整的API请参考 [Sync API](https://docs.wilddog.com/api/sync/web/api.html) 和 [Auth API](https://docs.wilddog.com/api/auth/web/Auth.html)\n\n更多信息请移步[野狗官方文档](https://docs.wilddog.com)\n\n如果遇到问题或有余力解答别人的问题可以到[野狗开发者社区](https://forum.wilddog.com) **注意：现在正在小规模测试**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWildDogTeam%2Fwilddog-weapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWildDogTeam%2Fwilddog-weapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWildDogTeam%2Fwilddog-weapp/lists"}