Feathersjs VS Senecajs

时间:2017-08-09 10:51:59

标签: node.js feathersjs seneca

我一直在玩塞内卡微服务和羽毛球。两者都有一定程度的相似之处。我尝试了塞内卡和羽毛的例子。 羽毛几乎没有什么优势,比如

  • 简单而漂亮的CLI生成器
  • 不错的文档。

缺点是它与Express配合使用。它应该像Seneca一样独立。

以下是使用Seneca的简单示例代码。它运行在不同的端口上,似乎所有服务都是相互独立的。塞内卡更像是独立的。我还在git Ramanujan上找到了一个惊人的存储库。

我想知道两者的优点和缺点。比较两者都非常糟糕,但我的目标是使用其中一个来制作API。

所以我对选择哪一个感到很困惑。

server.js

seneca.add({cmd: 'config'}, function (msg, done) {
  var config = {rate: 0.23}
  var value = config[msg.prop]
  done(null, {value: value})
})

// local rates
seneca.add({cmd: 'salestax', country: 'US'}, function (msg, done) {
  var state = {
    'NY': 0.04,
    'CA': 0.0625
    // ...
  }
  var rate = state[msg.state]
  var total = msg.net * (1 + rate)
  done(null, {total: total})
})
.listen({"type": "http", "port": 10101});


// categories
seneca.add({ cmd: 'salestax', country: 'IE' }, function (msg, done) {
  var category = {
    'top': 0.23,
    'reduced': 0.135
    // ...
  }
  var rate = category[msg.category]
  var total = msg.net * (1 + rate)
  done(null, { total: total })
})
.listen({"type": "http", "port": 10102});

//normal
seneca.add({cmd: 'salestax'}, function (msg, done) {
  seneca.act({cmd: 'config', prop: 'rate'}, function (err, result) {
    var rate  = parseFloat(result.value)
    var total = msg.net * (1 + rate)
    done(null, {total: total})
  })
})
.listen({"type": "http", "port": 10103});

client.js

require('seneca')()
  .client( {port: 10101} )
  .client( {port: 10102} )
  .client( {port: 10103} )

  .ready( function () {
      this.act('cmd:salestax,net:100,country:IE,category:reduced', function (err, result) {
        console.log('IE: ' + result.total)
      })
      this.act('cmd:salestax,net:100,country:US,state:NY', function (err, result) {
        console.log('US,NY: ' + result.total)
      })
      this.act('cmd:salestax,net:100,country:DE', function (err, result) {
        console.log('DE: ' + result.total)
      })
      this.act('cmd:salestax,net:100', function (err, result) {
        console.log(result.total)
      })
  })

0 个答案:

没有答案