摘要:是基于的插件式開發框架和平常的相比,它無需另外綁定路由集合可拓展開發簡單,依照的著名依賴注入框架來制作,讓開發者專注于邏輯。采用多服務多進程架構來保證服務的穩定和快速響應能力。的中間件和的中間件保持兼容。默認使用的是后續會提供。
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 --saveGetting Started
使用polix-cli初始化應用
$ npm i polix-cli -g $ pol init example && cd example $ make build && make devService
在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 } }
polix已經內置polix-request插件了,這里只是個演示Start
$ make dev
地址:polix.js
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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、共用接口、前后端分離、接口約定的實踐 隨著互聯網高速發展,公司對項目開發周期不斷縮短,我們面對各種需求,使用原有對接方式,各端已經很...
摘要:前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。背后的故事本文是對于年之間世界發生的大事件的詳細介紹,闡述了從提出到角力到流產的前世今生。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎...
閱讀 2423·2021-10-09 09:59
閱讀 2177·2021-09-23 11:30
閱讀 2591·2019-08-30 15:56
閱讀 1145·2019-08-30 14:00
閱讀 2939·2019-08-29 12:37
閱讀 1253·2019-08-28 18:16
閱讀 1656·2019-08-27 10:56
閱讀 1022·2019-08-26 17:23