LoopBack

ES6的出品为JS成为企业级语言扫清障碍,与之配套的需要一个真正的企业级框架。Express是一个精巧的微内核不足以支撑起一个大项目。
LoopBack 是建立在 Express 基础上的企业级 Node.js 框架,这个框架有以下特点:

  • 编写少量代码就能创建动态端到端的 REST API
  • 支持主流的数据源,例如 Mongodb、MySQL、SOAP 等和 REST API 的数据。
  • 一致化的模型关系和对 API 访问的权限控制
  • 可使用内置的用于移动应用场景下的地理定位、文件服务以及消息推送
  • 提供 Android、iOS 和 JavaScript 的 客户端SDK

LoopBack 作为一个面向企业级的 Web 框架,提供了更丰富的功能,方便添加模型,权限控制,连接数据源等操作。例如可以通过修改配置增加模型,并指定模型的数据源。它默认提供了一些基础模型,例如 User 这个模型包含了注册登录等逻辑,可以非常方便的继承这些内建模型,实现个性化的定制。它还提供了 Hook 编程的机制,提供了可视化的调试页面,自动生成对应的前端 SDK 。这些功能在开发大型 Web 服务的时候,帮助我们更容易查看和管理项目。

StrongLoop 是 IBM 的一家子公司,StrongLoop 的 LoopBack 框架能够轻松地连接数据并将数据公开为 REST 服务。它能够在图形(或命令行)界面中以可视方式创建数据模型,可以使用这些模型自动生成 REST API – 从而为 REST 服务层生成 CRUD 操作,无需编写任何代码。这很重要?因为它使 API 开发变得更容易,并显著减少了从概念到实现所需的时间。

在 LoopBack 框架中,是通过所谓的“数据连接器”来获取和持久化数据。

Cloudant 是一个 DBaaS 服务,是一个衍生的 Apache CouchDB,所以将 LoopBack 连接器连接到 Cloudant 很简单,只需在应用程序中使用现有的社区驱动的 CouchDB LoopBack Connector。

StrongLoop 是生成 LoopBack 框架的工具程序,有的认为Strongloop 相当于Loopback + Angularjs。

相关文章

node 框架 LoopBack 教程
https://cnodejs.org/topic/57e5b2859c495dce044f397c
StrongLoop学习笔记(一)
https://blog.csdn.net/sanpo/article/details/45082089
使用Loopback3.0构建应用程序(一)
https://www.jianshu.com/p/763b1a847d2c
IBM developerWorks,可以其中搜索Strongloop
https://www.ibm.com/developerworks/cn/
Loopback 2.0
http://loopback.io/doc/en/lb2/Remote-methods.html#overview
Loopback 3.8.0
http://apidocs.strongloop.com/loopback/#model-remotemethod
http://apidocs.strongloop.com/loopback/#persistedmodel-create
https://loopback.io/doc/en/lb3/Remote-methods.html
find方法中Filter的where中的语法格式:
http://loopback.io/doc/en/lb2/Where-filter.html#where-clause-for-queries

使用loopback做邮箱验证,LoopBack用户模型提供了注册新用户并确认其电子邮件地址的方法。您还可以使用loopback-component-passport模块将登录信息与Facebook,Google和其他第三方提供商集成。
https://www.jianshu.com/p/21b4d84fb7af

生成lb-services.js

Loopback生成lb-services.js,使用Loopback CLI工具的lb-ng命令

$ lb-ng server.js lbservices/lb-services.js

代码示例

//自定义方法
Unit.remoteMethod(
        'deleteRecursive',
        {
            description:'',
            accessType: 'WRITE',
            accepts: {arg: 'id', type: 'string',description: '机组 id', http: {source: 'query'}},
            returns: [{arg: 'status', type: 'string'}],
            http: [
                {verb: 'delete', path: '/deleteRecursive'}
            ]
        }
    );
#source的选择有 body,path,query
//实现包装find的功能
    Project.findProjects=function(filter,callback) {
        console.log("findProjects",filter);
        var json=JSON.parse(filter);
        Project.find(json,function (err,data) {
            callback(null,data);
        });
    }
    Project.remoteMethod('findProjects', {
            description:'查询工程列表',
            accessType: 'READ',
            accepts: {arg: 'filter', type: 'string',description: '查询条件', http: {source: 'query'}},
            returns: {type: 'array', root: true},
            http: [
                {verb: 'get', path: '/findProjects'}
            ]
        }
    );

发表评论