V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
timocoffee
V2EX  ›  推广

如何快速上手 DroiBaaS 云代码操作

  •  
  •   timocoffee · 2017-01-04 10:01:52 +08:00 · 1556 次点击
    这是一个创建于 2887 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    开发一个 App 联网已经是目前移动互联网的趋势,有时候为了提升 App 的弹性,可以不用考虑版本更新的问题,因此需要做一些后台数据配置,以及存放一些动态信息在后台,为此却必须要搞个服务器,架设数据库,还要考虑带宽,实在是有够麻烦!现在有一个联网神器跟大家分享,是近几年国外移动互联网的主流服务—— BaaS ( Backend as a Service ),有了 BaaS 这样的服务,联网再也不如以往艰巨(令人内心煎熬)。 举近半年内在国内移动互联网领域杀出来的 DroiBaaS 为例,只要写个 DroiObject ,数据就在云服务器上,如果需要更复杂一点的商务逻辑,写个云代码就好了。整个过程包含配置也不过就是 10 分钟的事(写完了还可以轻松抽根烟),真的是分分钟钟教你怎么写联网 App 啊!

    什么是云代码

    云代码是被储存在 DroiBaaS 应用层的一种以 lua 脚本语言撰写的代码,能让应用客户端透过简单的 SDK 和 API 触发执行后回传结果,或自行定义排程时间与参数来定期执行云代码。详细的云代码规范请参考云代码开发文档

    操作云代码

    云代码的操作可以简单分为三个部分: DroiCLI 初始化、撰写云代码、部署云代码。首先必须先从 DroiBaaS 官方网站下载DroiCLI。 DroiCLI 是一个终端机程式,功能是让我们可以管理云代码档案,并选择下载特定版号的云代码或是发布到开发及生产模式。详细的操作可以查看DroiCLI 开发文档。当我们写好了云代码,接着就要部署到 DroiBaaS 上,才能够开始被应用客户端使用。

    DroiCLI 初始化

    1. 从 DroiBaaS Web 页面获取Developer Token
    2. 执行droi init Developer Token 后并选择欲操作的 App.
    3. init 成功后会创建 App 名称的资料夹,并移动到该资料夹。
    4. 第一次使用或是想要新增对应的范本云代码,可以执行droi template
    5. 想要捞取最新的云代码可以执行droi fetch 注意: 此动作会覆盖现行资料夹内所有档

    撰写云代码

    首先我透过droi template 获取到一个 sample.lua 的范本,对他重新命名以及参照云代码 SDK文件来进行开发。在这边的范例是一个捞取外部天气资料的云代码。可以看到我用到了三个云代码套件:

    • WebScraper 来进行外部网路资源的获取
    • cjson 解码 json 字串
    • Lua DroiObject SDK 将对应的资料写入云数据库
    local _M = {}
    local Logger = Droi.CloudLogger
    local ws = Droi.WebScraper
    local droi_object = Droi.Object
    local role = "AaNpVYMBZJLxDDh9yq573jyK3HwxBbxG6a_k9cGL"
    
    function _M.main(Parameters)
        local resp_bool = false
        local resp_message = ""
    
        -- Query weather by WebScraper
        local resultWS = {}
        local httpStatus = nil
        local scraper = ws.Scraper();
        scraper.SetURL("api.openweathermap.org");
        scraper.SetURI("data/2.5/forecast?id=524901&APPID=1a41f3f7e055102a11bcfeb91b2e721f")
        httpStatus, resultWS = scraper.HTTPPost();
        -- Check http status
        if ( httpStatus == "200") then
            local weather_data = cjson.decode(resultWS)
            local droi_object = Droi.Object
            -- Save data to droi object.
            local obj = droi_object("WeatherForcast", nil, role, weatherData)
            local resp = obj:save()
            if (resp:isSuccess() == true) then
                resp_bool = true
                resp_message = "Update forcast successfully."
                Logger.log(Logger.DEBUG, resp_message)
            else
                resp_message = resp:getMessage()
                Logger.log(Logger.ERR, string.format("update fail, msg: %s", resp:getMessage()))
            end
        else
            resp_message = "Fail to get weather data, httpStatus: "..httpStatus
        end
        local response = {}
        response.bool = resp_bool
        response.msg =  resp_message
        return response
    end
    
    return _M
    
    

    部署到沙箱模式

    DroiBaaS 的一大特色就是沙箱模式的设计,沙箱模式算是开发用的,其特点是有隔离仍在进行开发中的代码,让后开发的内容不会影响到线上的产品。要部署到沙箱模式很简单,在执行droi fetch后也有对应的提示。 只要执行droi deploy sandbox 就可以将最新的云代码整包上传到沙箱模式的 App 。

    部署到生产模式

    当我们在沙箱模式上开发完毕,决定要将特定版号的云代码部署到生产模式也很简单。假设你决定将v0.0.9这个版本部署到生产模式,只要执行droi deploy production即可。

    云代码日志观看

    整个开发过程都会被记录在日志中,知道云代码是否被正确的执行。譬如上传的云代码有 Syntax errorc 或是该云代码不存在时,客户端执行云代码时会收到Code:1040001,或是有 Runtime error 时,客户端会收到Code:1040003。这时候 DroiBaaS 会将该次的除错信息记录起来,让我们可以从云代码日志中看到对应的信息而进行除错。另外,我们也可使用 Droi.Logger 类来进行自定义的信息输出到日志上。 两个模式的观看路径如下:

    沙箱模式

    我们可以透过 DroiCLI 进行沙箱模式的云代码日志观看,或是从 DroiBaaS Web->云控中心->云日志->点击开始。

    生产模式

    透经过路径: DroiBaaS Web->云控中心->云日志->点击开始.

    结语

    DroiBaaS 将联网变得简单很多,整个过程上手了后真的花不到 10 分钟。最令人满意的是省了租服务器的费用,目前 DroiBaaS 的免费额度在众多平台来说还是最优惠的。 DroiBaaS 把 App 联网的难度大幅降低到初学者都能搞定的难度,只要会些基础代码,就能开发云代码,后台功能变得一点都不复杂! 10 分钟拥有后台能力,真的是可能的,试过就能感受到有多么方便好用!

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2785 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:01 · PVG 14:01 · LAX 22:01 · JFK 01:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.