摘要:是基于的插件式开发框架和平常的相比,它无需另外绑定路由集合可拓展开发简单,依照的著名依赖注入框架来制作,让开发者专注于逻辑。采用多服务多进程架构来保证服务的稳定和快速响应能力。的中间件和的中间件保持兼容。默认使用的是后续会提供。
polix是基于koa v2.5.0的IOC、插件式开发框架,和平常的Node.js Web Framework相比,它无需另外绑定路由集合、可拓展、开发简单,依照java的著名依赖注入框架spring来制作,让开发者专注于逻辑。polix采用多服务多进程架构来保证服务的稳定和快速响应能力。polix的中间件和koa v2.x的中间件保持兼容。默认使用的ORM是sequelize(后续会提供polix-orm)。开发者可以选择ES6/7/8 或者 TypeScript来进行开发。
</>复制代码
$ npm i polix --save
Getting Started
</>复制代码
使用polix-cli初始化应用
</>复制代码
$ npm i polix-cli -g
$ pol init example && cd example
$ make build && make dev
Service
</>复制代码
在service文件夹下添加user.js
</>复制代码
const { Service } = require("polix");
class UserService extends Service {
constructor(){
super();
this._name = {};
}
async addUser(userId,name){
this._name[userId] = name;
return this;
}
async getUser(userId){
return this._name[userId];
}
}
module.exports = UserService;
Controller
</>复制代码
在controller文件夹下添加user.js
</>复制代码
const { Controller, GET, POST, DEL, PUT } = require("polix");
class UserController extends Controller {
// POST /user/addUser
@POST
async addUser(param, ctx){
await this.service.user.addUser(param.userId,param.name);
ctx.body = {
result: "ok"
};
}
// GET /user/getUser
@GET
async getUser(param, ctx){
let user = await this.service.user.getUser(param.userId);
ctx.body = {
user
};
}
// GET /user/info
@GET("info")
async getInfo(param, ctx){
ctx.body = {
v: "v1.0"
}
}
// PUT /user/updateUser
@PUT
async updateUser(param, ctx){
ctx.body = {
status: true
}
}
// DEL /user/delUser
@DEL
async delUser(param, ctx){
ctx.body = {
status: true
};
}
// GET /user/status/:userId
@GET("status/:userId")
async getStatus(param, ctx){
ctx.body = {
status: true,
userId: param.userId
};
}
}
module.exports = UserController;
Middware
polix的中间件与koa 2.x 的中间件保持兼容
框架默认加载koa-body中间件,如需另外添加中间件则新建middware文件夹(与controller文件夹平级)
添加跨域中间件 ,新建cors.js:
</>复制代码
# cors.js
const cors = require("koa2-cors");
module.exports = function(){
return cors({
origin: function(ctx) {
return "*";
},
exposeHeaders: ["WWW-Authenticate", "Server-Authorization"],
maxAge: 5,
credentials: true,
allowMethods: ["GET", "POST", "DELETE"],
allowHeaders: ["Content-Type", "Authorization", "Accept"]
});
}
该文件夹下必须存在index.js文件作为总输出中间件文件,加载时根据导出对象的顺序进行绑定中间件
</>复制代码
# index.js
const cors = require("./cors");
module.exports = {
cors // 必须是函数 ,绑定方式为:app.use(cors())
}
Plugin
</>复制代码
$ npm i --save polix-request
</>复制代码
在项目根目录下的config文件夹下的plugin.default.js中添加以下代码
</>复制代码
// `curl`最终会挂载到`this.app`下
exports.curl = {
// 表示是否启用该插件
enable: true,
// 插件`npm`包名
package: "polix-request"
};
</>复制代码
在controller里用polix-request
</>复制代码
@GET
async getWebInfo(param, ctx){
let result = await this.app.curl.get("https://www.baidu.com");
ctx.body = {
data: result
}
}
Start</>复制代码
polix已经内置polix-request插件了,这里只是个演示
</>复制代码
$ make dev
地址:polix.js
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/40029.html
摘要:本项目将使用配合最简单的逻辑来展示一个基于的微服务全栈快速开发实践的。提供一系列大型项目常用的非功能性特征,比如内嵌服务器,安全,指标,健康检测,外部化配置。 SprintBoot-Vue SpringBoot + 前端MVVM 基于Java的微服务全栈快速开发实践 showImg(https://segmentfault.com/img/remote/1460000010167913...
摘要:本项目将使用配合最简单的逻辑来展示一个基于的微服务全栈快速开发实践的。提供一系列大型项目常用的非功能性特征,比如内嵌服务器,安全,指标,健康检测,外部化配置。 SprintBoot-Vue SpringBoot + 前端MVVM 基于Java的微服务全栈快速开发实践 showImg(https://segmentfault.com/img/remote/1460000010167913...
摘要:一个专注于浏览器端和兼容的包管理器。一个整合和的最佳思想,使开发者能快速方便地组织和编写前端代码的下一代包管理器。完全插件化的工具,能在中识别和记录模式。健壮的优雅且功能丰富的模板引擎。完整的经过充分测试和记录数据结构的库。 【导读】:GitHub 上有一个 Awesome – XXX 系列的资源整理。awesome-javascript 是 sorrycc 发起维护的 JS 资源列表...
摘要:认证鉴权与权限控制在微服务架构中的设计与实现一引言本文系认证鉴权与权限控制在微服务架构中的设计与实现系列的第一篇,本系列预计四篇文章讲解微服务下的认证鉴权与权限控制的实现。 java 开源项目收集 平时收藏的 java 项目和工具 某小公司RESTful、共用接口、前后端分离、接口约定的实践 随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很...
摘要:前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点分为新闻热点开发教程工程实践深度阅读开源项目巅峰人生等栏目。背后的故事本文是对于年之间世界发生的大事件的详细介绍,阐述了从提出到角力到流产的前世今生。 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎...
阅读 2516·2021-10-09 09:59
阅读 2296·2021-09-23 11:30
阅读 2683·2019-08-30 15:56
阅读 1219·2019-08-30 14:00
阅读 3024·2019-08-29 12:37
阅读 1345·2019-08-28 18:16
阅读 1726·2019-08-27 10:56
阅读 1099·2019-08-26 17:23