该项目是 LeanEngine Node.js 项目的常用功能和示例仓库。包括了推荐的最佳实践和常用的代码片段,每个文件中都有较为详细的注释,适合云引擎的开发者阅读、参考,也可以将代码片段复制到你的项目中使用。
若希望从一个更精简的项目骨架开始开发你的新项目,请使用 leancloud/node-js-getting-started。
下面列出的功能均以云函数实现,位于 functions
目录中。每个文件的开头已列出所需的依赖和配置(环境变量),你可以在安装依赖后将文件直接复制到你的 functions
目录中,我们的示例项目会自动加载这个目录中的文件。
对于需要 LeanCache 的功能,还请阅读下面的 LeanCache 段落。
✅表示写了测试,✨表示实现了相对完整的功能,无需修改即可使用。
文件名 | 提供的云函数 | 介绍 |
---|---|---|
amr-transcoding.js | amrToMp3 | 使用 ffmpeg 将 amr 音频转码为 mp3。 |
associated-data.js | createPostSamples getPostsWithAuthor getPostWithAuthor afterUpdate:_User |
缓存关联数据示例(需要 LeanCache)。 |
batch-update.js | batchUpdateByQuery batchUpdateAll |
批量更新数据示例。 |
captcha-cache.js | getCaptchaImageCache requestMobilePhoneVerifyCache |
使用图形验证码限制短信接口(使用 LeanCache)(需要 LeanCache)。 |
captcha-storage.js | getCaptchaImageStorage requestMobilePhoneVerifyStorage |
✅ 使用图形验证码限制短信接口(使用云存储后端)。 |
crawler.js | crawlWebsite crawling |
爬虫示例,使用云队列抓取一个站点下的所有网页。 |
imagemagick.js | imageMagicResize | ✅ 使用 imageMagick 处理图像。 |
leaderboard.js | submitHighest getRankRange getScoreRange getRankAndScore archiveLeaderboard |
✨ 一个功能相对完整的排行榜,支持任意数量的用户排序、支持查询任意用户的排名、支持查询任意排名段的用户(需要 LeanCache)。 |
limited-stock-rush.js | createRushStock getOpeningRushs rush commitRushStock |
✨ 使用 LeanCache 应对秒杀抢购活动中短时间的大量请求(需要 LeanCache)。 |
login-by-app.js | requestLoginByApp verifyByApp loginByApp |
通过移动端应用验证用户身份,登录网站(比如扫码登录)。 |
meta.js | getEnvironments getUser getParams getClientMeta getHeaders afterSave:HookObject |
从运行环境或客户端读取元信息(环境变量、请求头等)。 |
pubsub.js | publishMessage | 使用 Redis Pub/Sub 收发消息。 |
queue-delay-retry.js | queueDelayTask queueRetryTask delayTaskFunc retryTaskFunc |
云队列:延时和重试。云函数任务队列提供了一种可靠地对云函数进行延时运行、重试、结果查询的能力。 |
queue-result-query.js | createTask queryResult longRunningTask |
云队列:结果查询 |
readonly.js | updateCategory getCategories afterUpdate:Category afterSave:Category afterDelete:Category refreshCategories |
热点只读数据缓存示例(需要 LeanCache)。 |
redlock.js | startTaskLoop getCurrentTask |
用 LeanCache 实现分布式锁(需要 LeanCache)。 |
rtm-signature.js | signLogin signStartConversation signOperateConversation signQueryMessage signBlockConversation signBlockClient |
✅ 使用云引擎实现即时通讯服务的签名。 |
todos.js | getAllTodos createTodo deleteTodo setTodoToDone |
在云引擎中以客户端的权限来操作云存储。 |
weapp-decrypt.js | decryptWeappData | ✨ ✅ 解密微信小程序用户加密数据。 |
xml.js | xmlBuildObject | 使用云函数序列化 XML 对象。 |
rtm-onoff-status.js | _clientOnline _clientOffline getOnOffStatus |
即时通讯上下线状态的存储以及查询(需要 LeanCache)。 |
下面列出的功能位于 routes
目录。每个文件的开头已列出所需的依赖和配置(环境变量),有些功能需要额外的配置,请阅读文件开头的说明,你可以在安装依赖后将文件直接复制到你的 routes
目录中,然后在 app.js
中引用,例如:
app.use('/wechat', require('./routes/wechat-message-callback'))
文件名 | 介绍 |
---|---|
wechat-message-callback.js | 接收并自动回复 微信公众平台的用户消息回调 |
websocket.js | 简单的 WebSocket 示例:将客户端发来的消息原样发回客户端(echo)、每隔一秒向客户端发送一条消息(timer) |
cookie-session.js | 使用 Cookie Session 在 Cookie 中维持用户登录状态 |
render-ejs.js | 使用 EJS 渲染 HTML 页面 |
markdown.js | 项目主页,将 README.md 渲染成 HTML 显示在页面上 |
还有一些功能相对完备的 Demo 被制作成了独立的应用:
Demo 地址 | 代码地址 | 介绍 |
---|---|---|
snapcat.leanapp.cn | snapcat 分支 | 一个使用 chrome-headless 的截图服务。 |
graphql.leanapp.cn | leancloud/leancloud-graphql | 运行在云引擎上的第三方 GraphQL 支持,允许你用 GraphQL 查询 LeanCloud 云存储中的所有数据。 |
leanticket.cn | leancloud/ticket | 运行在云引擎上的工单系统(即 LeanCloud 官方客服系统) |
status.leancloud.cn | leancloud/leancloud-status | LeanCloud 服务状态页。 |
这些工具脚本位于 bin
目录:
文件名 | 使用方法 | 介绍 |
---|---|---|
load-test | load-test 30 |
对自定义的代码片段进行压力测试的工具,会给出速率和耗时等统计数据。 |
对于用到了 LeanCache 的功能,你需要在控制台上创建 LeanCache 实例,复制该项目根目录的 redis.js 到你的项目,并修改其中的 LeanCache 名称。
本地运行 Redis:
- Mac 运行
brew install redis
安装,然后用redis-server
启动。 - Debian/Ubuntu 运行
apt-get install redis-server
, CentOS/RHEL 运行yum install redis
. - Windows 尚无官方支持。