NodeJS入门 0xB Node的Web开发(2)服务器端框架(3)

DerbyJS

    DerbyJS 是全栈框架,支持数据同步和视图的服务器端渲染。它用到了 MongoDB 和 Redis,数据同步层是由 ShareJS 提供的,支持冲突的自动解析。

    设置

    运行 DerbyJS 的例子需要安装 MongoDB 和 Redis。要快速创建新的 DerbyJS 项目,需要安装 derby 和 derby-starter。

mkdir example-derby-app
cd example-derby-app
npm init -f
npm install --save derby derby-starter derby-debug

    Derby 程序分为几个小程序。创建新的 app 目录,在其中创建三个文件: index.js、 server.js 和index.html。

// app/index.j
const app = module.exports = require('derby')
    .createApp('hello', __filename);
app.loadViews(__dirname);
app.get('/', (page, model) => {
    const message = model.at('hello.message');
    message.subscribe(err => {
        if (err) return next(err);
        message.createNull('');
        page.render();
    });
});
// app/server.js
require('derby-starter').run(__dirname, { port: 8005 });
<!-- app/index.html -->
<Body:>
Holler: <input value="{{hello.message}}">
<h2>{{hello.message}}</h2>

     定义路由

    DerbyJS 中的路由是用 derby-router 实现的。因为是基于 Express 的,所以 DerbyJS 的路由 API跟服务器端路由类似,浏览器中用的也是这个路由模块。在 DerbyJS 程序中点击链接时,它会试着在客户端渲染响应。

    apps/app/index.js

app.get('hello', '/hello');

    apps/app/views/hello.pug

index:
h2 Hello
p Hello world

    apps/app/views/index.pug

import:(src= "./hello")

    REST API

    在 DerbyJS 中创建 RESTful API 需要用 Express 添加路由和路由处理器。 DerbyJS 项目中有个server.js 文件,可以用 Express 创建服务器。打开 server/routes.js,你会发现一个路由的例子,是用标准的 Express 路由 API 定义的。
    在服务器路由文件中,可以用 app.use 装载另一个 Express 程序,所以可以将 REST API 作为一个完全独立的 Express 程序,然后让作为主程序的 DerbyJS 程序装载它。

    优点

    DerbyJS 有数据库模型 API 和数据同步 API。你可以用它搭建单页 Web 程序和现代化的实时程序。因为它自带对 WebSocket 和同步的支持,所以不用我们费心去选择 WebSocket 库,或者如何在服务器端和客户端之间同步数据。

    弱点

     几乎很难说服有服务器端或客户端库使用经验的人使用 DerbyJS。比如说,那些喜欢 React的客户端开发人员通常都不想用 DerbyJS。那些熟悉 WebSocket,喜欢做 REST API 或 MVC 项目的服务器端开发人员也没有学习 DerbyJS 的动力。

    LoopBack

    LoopBack是 StrongLoop 创建的,这家公司为 Node Web 程序的开发提供了一些商业支持服务。 LoopBack 是个 API 框架,但它的功能特性很适合跟数据库配合,也很适合跟 MVC 程序配合。它甚至还有个浏览和管理 REST API 的 Web 界面。如果你要给移动端和桌面端程序找个创建Web API 的框架,那就是 LoopBack 了。

     设置

npm install -g strongloop
slc loopback

    输入 node .运行这个项目,用 slc loopback:model 创建模型。在设置新的 LoopBack项目时,会经常用到 slc 命令。
    在项目运行时,你应该可以在 http://0.0.0.0:3000/explorer/ 访问到 API 管理界面。点击 User 展开用户端点,会有一个列表显示所有可用的 API 方法,包括 PUT /Users 和 DELETE /Users/{id}等标准的 RESTful 路由

    定义路由 

// server/boot/routes.js
module.exports = (app) => {
    const router = app.loopback.Router();
    router.get('/hello', (req, res) => {
        res.send('Hello, world');
    });
    app.use(router);
};

    REST API

    在 LoopBack 项目中,用模型生成器是创建 REST API 最轻松的办法。 slc 命令有这个功能。比如说,如果要用 slc loopback:model 添加名为 product 的新模型,则运行:

slc loopback:model product

 

     优点

    即便是这样简短的介绍,也能清楚地表明 LoopBack 帮我们免除了繁琐的套路化代码。它的命令行工具几乎可以生成一个完整的 RESTful Web API 程序,甚至包括数据库模型和校验。同时, LoopBack 对前端代码没有太多限制。它还让你考虑哪个模型可以通过浏览器访问,哪个只能在服务器端使用。有些框架在这个问题上犯了错误,把所有事情都推给了浏览器。
    如果有需要跟 Web API 通话的移动端程序,可以看看 LoopBack 的客户端 SDK。它支持 API集成,可以给 iOS 和 Android 推送消息。

    弱点

    LoopBack 基于 JSON 的模型 API 跟大部分 JavaScript 数据库 API 都不同。所以可能要花些时间才能搞懂如何将它映射到已有的数据库模式上。另外,因为 HTTP 层是基于 Express 的,所以在某种程度上会受限于 Express 所支持的功能。尽管 Express 是个很好的 HTTP 服务器库,但还有支持更现代化的 API 的新库。 LoopBack 没有特定的插件 API,虽然可以用 Express 中间件,但毕竟不如 Flatiron 或 hapi 的插件 API 方便。

比较

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值