成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

datastack - 基于koa的RESTful框架

_ivan / 1104人閱讀

摘要:項(xiàng)目地址對(duì)開(kāi)發(fā)者友好的輕量級(jí)中間件,基于。事實(shí)上,通過(guò)實(shí)現(xiàn)自己的類(lèi),你可以接入任何持久化方案。假如用到了中的一些高級(jí)功能事件訂閱等,不可避免的涉及到事件在之間同步等問(wèn)題。而集群之間的問(wèn)題,遠(yuǎn)遠(yuǎn)不止這一個(gè)。

項(xiàng)目地址: https://github.com/RobinQu/datastack

對(duì)開(kāi)發(fā)者友好的輕量級(jí)RESTful中間件,基于koa。

我會(huì)陸續(xù)放出一下tutorials,這篇文章純屬datastack 101,希望勾起大家的興趣。

TL;DR
var datastack = require("datastack"),
    koa = require("koa");

var app = koa();
datastack(app, {
  storage: {
    type: "mongodb",
    uri: "mongodb://127.0.0.1:27017/zoo"
  }
});
app.resource("cats");
app.resource("dogs");
app.listen(porcess.env.PORT || 8888);
More fun Events subscription

https://github.com/RobinQu/datastack/blob/master/spec/ws_subscription_spec.js

datastack自帶的組件即可實(shí)現(xiàn)將事件的CRUD操作通過(guò)廣播,在客戶(hù)端:

var client = new Websocket("ws://localhost:8888/books/_subscription");
client.on("message", function(data) {
//json encoded string
var event = JSON.parse(data);
// event.type === "datastack:create"
// event.data === `storeKey`s of created records
});

通過(guò)datastack的notifier體系,可以輕松接駁Apple APN、Google Push Service,或者其他的sass服務(wù)(Mailgun、Urban Airship等),讓你快速實(shí)現(xiàn)簡(jiǎn)潔的消息體系。

Data store

默認(rèn)是利用mongo的,但相信不是每個(gè)人都喜歡mongo。事實(shí)上,通過(guò)實(shí)現(xiàn)自己的Storage類(lèi),你可以接入任何持久化方案。

例如,為測(cè)試而寫(xiě)的MemoryStore: https://github.com/RobinQu/datastack/tree/master/src/storage/memory

只需在創(chuàng)建datastack時(shí)給定storage屬性,

var koa = require("koa"),
      datastack = require("datastack"),
      MySuperStorage = require("my-super-storage");

var app = koa();
datastack(app, { storage: new MySuperStorage() });
StackApp

盡管datastack中大部分的組件都可以利用mixin的方式應(yīng)用到原生的koa應(yīng)用實(shí)例上,我們也提供一個(gè)koa的子類(lèi)StackApp,它有如下優(yōu)勢(shì):

更多API shortcut

提供對(duì)cluster的一些支持(事件消息傳播等)

代碼會(huì)更簡(jiǎn)潔

一個(gè)簡(jiǎn)單的例子:

var datastack = require("datastack");
var app = datastack.app({
  storage: {
    type: "mongodb",
    uri: "mongodb://127.0.0.1:27017/datastack-test"
  }
});
app.resource("book");
app.resource("author");
var port = process.env.PORT || 8888;
app.listen(port, function() {
  console.log("server is up and running");
});
StackCluster

這是一個(gè)基于recluster 的封裝。假如用到了datastack中的一些高級(jí)功能(事件訂閱)等,不可避免的涉及到事件在cluster之間同步等問(wèn)題。而集群之
間的問(wèn)題,遠(yuǎn)遠(yuǎn)不止這一個(gè)。StackCluster是為了解決這些目前我碰到的一些問(wèn)題,以及未來(lái)架構(gòu)中可能出現(xiàn)的問(wèn)題而準(zhǔn)備的,推薦使用。

一個(gè)完整的例子: https://github.com/RobinQu/datastack/tree/master/example/cluster

項(xiàng)目狀況

其實(shí)在koa出來(lái)之后就在計(jì)劃這個(gè),但是寫(xiě)的好沒(méi)動(dòng)力。目前大部分架構(gòu)已完成,現(xiàn)在的任務(wù):

寫(xiě)更多的測(cè)試

更多的存儲(chǔ)方案(redis, mysql, 以及混合存儲(chǔ),即多級(jí)緩存)

安全認(rèn)證, 目前僅有有BasicAuth方案

消息通訊
4.1 更多渠道(APN、mail)
4.2 更多底層通訊方式 (zmq, AMQ)

datastack已經(jīng)在我的個(gè)人項(xiàng)目中使用,但數(shù)量級(jí)還不夠證明它的穩(wěn)定性。

貢獻(xiàn)

當(dāng)然是越多越好了,datastack里面已經(jīng)有很多打開(kāi)的issues了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/18730.html

相關(guān)文章

  • 造輪子系列 --- 注解、插件式node.js web / restful api 框架

    摘要:是基于的插件式開(kāi)發(fā)框架和平常的相比,它無(wú)需另外綁定路由集合可拓展開(kāi)發(fā)簡(jiǎn)單,依照的著名依賴(lài)注入框架來(lái)制作,讓開(kāi)發(fā)者專(zhuān)注于邏輯。采用多服務(wù)多進(jìn)程架構(gòu)來(lái)保證服務(wù)的穩(wěn)定和快速響應(yīng)能力。的中間件和的中間件保持兼容。默認(rèn)使用的是后續(xù)會(huì)提供。 polix是基于koa v2.5.0的IOC、插件式開(kāi)發(fā)框架,和平常的Node.js Web Framework相比,它無(wú)需另外綁定路由集合、可拓展、開(kāi)發(fā)簡(jiǎn)單...

    JowayYoung 評(píng)論0 收藏0
  • 最好用koa2+mysqlRESTful API腳手架,mvc架構(gòu),支持node調(diào)試,pm2部署

    摘要:基于構(gòu)建的服務(wù)器腳手架這是一個(gè)基于的輕量級(jí)腳手架,支持支持使用編寫(xiě)。腳手架可以根據(jù)不同的環(huán)境配置不同的信息運(yùn)行價(jià)值,支持開(kāi)發(fā),測(cè)試,生產(chǎn)環(huán)境的不同參數(shù)配置。 #基于webpack構(gòu)建的 Koa2 restful API 服務(wù)器腳手架 這是一個(gè)基于 Koa2 的輕量級(jí) RESTful API Server 腳手架,支持 ES6, 支持使用TypeScript編寫(xiě)。 GIT地址:https...

    xiongzenghui 評(píng)論0 收藏0
  • 基于JavaScript簡(jiǎn)單解釋器實(shí)現(xiàn)(一)——表達(dá)式語(yǔ)法樹(shù)生成

    摘要:語(yǔ)法樹(shù)這一章主要是完成語(yǔ)法樹(shù)的生成。其中由于函數(shù)聲明部分過(guò)于簡(jiǎn)單,沒(méi)必要生成語(yǔ)法樹(shù),打算留到下一章一起處理。主循環(huán)結(jié)束后數(shù)據(jù)棧中的第一位元素則為語(yǔ)法樹(shù)。這是最后生成的語(yǔ)法樹(shù)總結(jié)總之,語(yǔ)法樹(shù)就算是生成完畢了。 前言 這個(gè)系列是關(guān)于CodeWars上的一條1Kyu題:Simple Interactive Interpreter。也就是實(shí)現(xiàn)一個(gè)簡(jiǎn)單的交互式解釋器。題目地址:http://ww...

    DataPipeline 評(píng)論0 收藏0
  • 基于JavaScript小型Three-Pass編譯器實(shí)現(xiàn)

    摘要:也因此,語(yǔ)法樹(shù)生成過(guò)程異常簡(jiǎn)單,基本是和波蘭表達(dá)式生成沒(méi)區(qū)別了。這個(gè)沒(méi)啥好講的了,就是波蘭表達(dá)式的生成略改而已,改動(dòng)部分包括多了值棧和參數(shù)列表。其中立即量和參數(shù)這倆個(gè)分別是將數(shù)字和參數(shù)放入寄存器后壓棧。其他的操作則是首先分別執(zhí)行子節(jié)點(diǎn)。 前言 昨天完成了codewars上的1級(jí)題簡(jiǎn)單解釋器實(shí)現(xiàn),今天突發(fā)奇想上去看看總共有多少1級(jí)題,然后發(fā)現(xiàn)總共也只有三題。而且,這三題都是編譯器解釋器相...

    lansheng228 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<