@wolfx/lightning
TypeScript icon, indicating that this package has built-in type declarations

5.2.2 • Public • Published

极简风格的 Web 服务端框架 Lightning

超轻量,易于上手。坚持约定大于配置的原则,使开发更简单。

需要配合 lightning-templatelightning-generator 一起使用效果最佳。

关于 lightning-templatelightning-generator 可以在 Github 获取。

目前作为公司内部使用。

5.x 更新``

重写了全部代码,与 4.x 不兼容。

const server = new Server({ port: 5000, staticDir: path.resolve(process.cwd(), "public") });
/*
自定义logger
server.setLogger({
  log: console.log,
  warn: console.warn,
  error: console.error
});
*/
server.addRoute(Server.GET, "/test", {}, async (req, res, next) => {
  return req.query;
});
server.addRoute(Server.POST, "/", {}, async (req, res, next) => {
  return req.body;
});
server.start();

如果你喜欢用装饰器,也可以这样使用:

const server = new Server({ port: 5000, staticDir: path.resolve(process.cwd(), "public") });
server.start();

@RouterClass()
class DemoRouter {
  @GetMapper(server, "/:id/:type")
  async getData(req: LRequest, res: LResponse) {
    return "hello";
  }
}

使用动态路由

@RouterClass()
class DemoRouter {
  @GetMapper(server, "/:id/:type")
  async getData(req: LRequest, res: LResponse) {
    return "hello";
  }
}

文件上传

const storage = multer.diskStorage({
  destination: function(req, file, cb) {
    cb(null, "public");
  },
  filename: function(req, file, cb) {
    cb(null, file.fieldname + "-" + Date.now());
  }
});
const upload = multer({ storage });

@RouterClass()
class DemoRouter {
  @PostMapper(server, "/upload", {
    uploader: upload.single("avatar")
  })
  async getData(req: LRequest, res: LResponse) {
    return "ok";
  }
}

Readme

Keywords

Package Sidebar

Install

npm i @wolfx/lightning

Weekly Downloads

0

Version

5.2.2

License

MIT

Unpacked Size

22.6 kB

Total Files

18

Last publish

Collaborators

  • wolfx