在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
epii-serverA koa-based server with preset MVC model.
FeaturesMVC pipeline(Request) => / Static / => / Middleware / => / Router (Controller) / => / Render (Model) => (View) /(Response)&/ Service / everywhere ASP.net-likedDifferent ActionResult makes different response. // service/service1.jsmodule.exports = async ({ context }) => { // anything you want to provide return { example: () => {} };}// controllermodule.exports = [ { path: '/', verb: 'get', body: async function ({ renders, service1 }) { // response text/plain return renders.text('text output'); // response application/json return renders.json({ state: true }); // response text/html by ViewRender return renders.view({ name: 'Li Lei' }); // response application/octet-stream return renders.file('dataset.csv'); // response redirect return renders.jump('/target'); // use service return renders.json(service1.example()); } }]; simple app shell definition// client/index.meta.jsmodule.exports = { base: 'simple', // inherit simple layout head: { styles: 'client/index.css' }, body: { holder: 'client/index.html', scripts: 'client/index.js' }};// layout/simple.meta.jsmodule.exports = { head: { title: 'epii server', metas: [], styles: 'reset.css', icon: 'epii-icon.png' }, body: { scripts: 'jquery-2.2.2.min.js' }}; Or you maybe want to write HTML directly. // client/index.meta.jsmodule.exports = { html: 'client/index.html'} See also Usageproject like this(root)├── [layout]│ └── simple.meta.js├── client│ ├── ViewA│ │ └── index.meta.js│ └── ViewB│ └── index.meta.js├── server│ ├── service│ ├── middleware│ │ └── $order.js│ └── controller│ └── index.js└── static ├── (files) └── .well-known └── (files) install as dependencynpm install --save @epiijs/server@latest use API to start serverconst { startServer } = require('@epiijs/server');startServer({ name: 'YOUR-APP-NAME', port: 8080, path: { root: __dirname, server: { controller: 'server/controller', middleware: 'server/middleware', service: 'server/service', }, client: 'client', layout: 'layout', static: 'static', /* will NEVER support upload */ }, static: { prefix: '__file', }, expert: { 'well-known': true, // default false }}); host server by nginx + certbotSetup your node app in nginx conf.d directory. upstream your-app { server 127.0.0.1:your-port;}server { listen 80; server_name your-host; root /your-app-static-dir; index index.html; location / { proxy_pass http://your-host; proxy_set_header Host $host; }} Use certbot and it will try to validate domain by nginx conf. FAQHow to contributing (TODO)How to serve static filesYou can serve your JS + CSS + Media in CDN and use SSR to render app shell html (index.html) with state.The recipe can perform balance between maintainability and performance. Why not serve index.html in CDN
Language (TODO) |
请发表评论