关键"/>
开发Countly plugin 的7个关键
Countly为1.4万个App提供优秀的数码数据采集和分析服务,每月采集500亿数据点。Countly 在Gartner的《移动数据分析报告》连续两年(2016-2017年)被称为国际领先者之一。
为了更准确地获取中国用户定位,蒋林春(航美在线网络科技有限公司)在2016年建议Countly采用百度的echarts组件。以符合Countly的插件式的架构,Countly的团队决定定制现有的“Country view”模块,提供中国城市和省的细分。 因此我们对于插件开发,我们提炼出了7个插件开发的关键要点。
1. 理解Countly plugin的开发指南
在此网链你能参考完整的插件开发指南, 建议在开发前先完整过一遍此文库。请查看以下的完整插件目录结构:
2. 开发插件API接口
这个是该插件的api服务目录,入口运行文件为app.js,在app.js中可以处理countly 服务从客户端收到的数据,也可以通过这个插件的api服务,对这个插件的前端提供数据展示接口。
提示: Countly 核心框架,不同的插件之间的通信可以基于事件实现。
我们可以理解大部分的行为都是事件,从客户端传送的 session、view、 customized event都可以理解问事件。 系统内部的各个插件的系统事件可以通过 plugins.register("/i/ourplugin", processFun)注册监听, 和通过 plugins.dispatch("/i/ourplugin", params) 触发特定事件。欢迎参考系统默认的事件列表。
你可以通过我们的logger插件了解到一些核心思路:
- 监听’/sdk’事件,截获用户从sdk端请求到Countly的数据,添加到日志数据库collection中。
-
监听’/o’事件,当在Countly dashboard向Countly api发起'/o?method=logs&filter={}'请求的时候,可以根据filter条件返回log记录。
目前在 country plugin中因为已经在Countly 主目录实现了country 关联的事件处理,因此在这次定制修改中 我们目前不需要自己实现API服务。
3. 开发Frontend Javascript 代码
基于backbone framework 我们封装了基本的MVC结构,每个插件默认加载的文件是countly.models.js 和 countly.views.js
提示:
- Countly.models.js 定制了 前端的数据model, 和数据的CRUD处理逻辑。
- Countly.views.js 负责渲染视图模板,同时加载 Countly.models.js 中的数据和数据处理逻辑。
- 此外也可以封装更多javascript文件,到该插件的 ./frontend/public/javascripts 目录下。
Map视图 我们选择了EChart,Echart支持中国地区城市级别的数据分布视图,同时还提供国家级别的视图,可以很好的满足我们中国地区客户国际化的需求。
在Countly.views.js中我们定义一个EchartMapView. 这个对象继承自countlyView。countlyView的生命周期如下:
提示:
- 通常情况下,在前端可能有更多的资源需要引入到前端展示,可以将这文件放入到 这个插件的”frontend/public/” 目录下, 在运行这个插件后,这个目录可以通过Http(s)://${domain}/${plugin name}/ 访问到。
在 Echart Map plugin中,我们添加了pingyin.js 来解析中文对应的英文字母,实现对数据库内 city 英文名对应到相应的中文城市名。也添加了GEO location json文件,用于EChart Map 解析地理位置。 这些文件最后都会在EchartMapView.initialize() 中加载进来,然后在EchartMapView.renderCommon()中初始化EChart Map 对象。
4. 开发前端html视图
Countly推荐使用Handlebars.js实现动态视图的组装,在这个插件中,我们定义好这个插件的视图html template文件, 然后通过在EchartMapView的函数来加载template和 templateData, 渲染最终数据。
5. 插件全局环境变量的实现
Countly为插件提供全局环境变量的设置和读取。Countly会自动为配置生成UI界面,也可以根据您的需求定制。
提示:
- 需要在dashboard显示的变量对象结构最好不要超过两层的嵌套,Countly Configuration 视图的UI才能正常解析。
6. 插件全局环境变量的实现
Package.json描述了这个插件的信息,会在dashboard的插件目录中展示。 启用插件时,会读取package.json 安装lib依赖, 同时执行install.js脚本,在脚本里可以做些这个插件对应数据库表空间的初始化,添加索引之类的工作。例子:当关闭插件的时候,会运行 uninstall.js 脚本。
7. API的Debug和测试
在开发API服务的时候,可以启用Node.js Inspector 来调试。
Countly的测试框架基于Mocha,在plugin的目录下添加tests.js 可以在Countly运行test时加载这个插件的test。例子:.js
转载于:
更多推荐
开发Countly plugin 的7个关键
发布评论