Feathers哲学
它并不是又一个Javascript框架,也不是一个重复被造的轮子。而是使用service和cross cutting concerns来构建web应用的尝试。可扩展而又面向服务是它的一大特点,结果会更灵活。它始终坚信,UI、数据或商业逻辑是web应用或移动app的核心,而架构可以帮助实现剩余的工作。
服务的概念
服务层可以帮助解耦应用的接入和呈现,也方便测试。可以为HTTP REST和websocket提供相同的API。
统一接口
好比如REST的一个关键约束,命名约定可以见词知意。对应于REST,有以下方法:GET, POST, PUT, PATCH and DELETE。而服务也有统一的接口。
const myService = {
// GET /path
find(params, callback) {},
// GET /path/
get(id, params, callback) {},
// POST /path
create(data, params, callback) {},
// PUT /path/
update(id, data, params, callback) {},
// PATCH /path/
patch(id, data, params, callback) {},
// DELETE /path/
remove(id, params, callback) {}
}
这个接口让”hook”到方法执行中以及返回后发射事件更简单,来提供实时功能。
Hooks
遵循小的模块做一件事好于大的复杂模块。然后,可以创建before和after hooks 来把各模块链起来。
站在巨人之肩
Express 4 Feathers继承了它。
Vorpal Feathers的CLI工具的生成器继承了它。
Socket.io or Primus Feathers封装了两位巨人,来实现web socket传输。
mongoose, sequelize, knex, or waterline 服务适配器的ORM的实现。
npm 仍然是包管理工具
passport 完成了很多feathers-authentication的工作。
下面展示了利用Feathers实现的利器,业绩Feathers的生态系统。
应用方面
Feathers Chat
Feathers React Native Chat
起步中的项目
Feathers + Apollo
Feathers + React + Mobx
Feathers + React + Webpack
社区插件
。。。
认证
Feathers-accounts
Feathers-service-verify-reset
通信
Feather-batch
数据库
省略若干字
文档
Feathers-swagger
多实例
Feathers-cluster
Feathers-sync
Feathers-mailer
Feathers-mailgun
Feathers-sendgrid
回应
Feathers-action
Feathers-action-creators
Feathers-action-reducer
Feathers-action-types
Feathers-react-redux
Feathers-reduxify-services
测试
Feathers-tests-fake-app-users
转化
Feathers-populate-hook
Feathers-transform-hook
Feathers-virtual-attribute-hook
工具
Feathers-hooks-common
Feathers-hooks-utils
有效性
Feathers-hooks-validate-joi
Feathers-hooks-validatiob-jsonschema
Feathers-tcomb
Feathers-validate-hook
Feathers-validator
视图层
donees-Feathers
Feathers-done-ssr
Feathers-mithril
Feathers-reactive
ng-Feathers
vue-syncers-Feathers