使用nodejs + koa2如何模仿springMVC框架

  介绍

这期内容当中小编将会给大家带来有关使用nodejs + koa2如何模仿springMVC框架,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1,在硬盘上新增一个文件夹,打开万顺昌点击“添加工作区文件夹& # 39;,如果没有欢迎的使用页面& # 39;,点击——文件——新建窗口,效果如下图:

使用nodejs + koa2如何模仿springMVC框架

使用nodejs + koa2如何模仿springMVC框架

2,添加VSC调试.Shift + ctrl + p,输入框内输入:发射。json

使用nodejs + koa2如何模仿springMVC框架

选择刚刚的文件夹

使用nodejs + koa2如何模仿springMVC框架

使用nodejs + koa2如何模仿springMVC框架

3,目录结构

使用nodejs + koa2如何模仿springMVC框架

从低到高一个一个地> {   “name":“koa2mcv"   “version":“1.0.0"   “description":“你好高雅与MVC" 2例,   “main":“app.js"   “scripts": {   “时:“节点app.js"   },   “author":“baba"   “dependencies": {   “koa":“2.11.0"   “koa-router":“8.0.8"   “koa-bodyparser":“4.3.0"   “koa-static-plus":“0.1.1"   “koa-view":“2.1.3"   “koa-jwt":“4.0.0"   “koa-log4":“2.3.2"   “jsonwebtoken":“8.5.1"   “nunjucks":“3.2.1"   “mime":“2.4.5"   “mz":“2.7.0"   }   }

参数介绍:名称项目名称,版本版本号,描述项目描述,主要项目启动文件,脚本启动快捷设置,作者作者,依赖第3方中间件名称及版本。

3 - 2,应用。js

//启动服务   要求(& # 39;。/config/init # 39;) .startServer ();

启动相关配置,封装到配置/init.js中,启动文件直接引用即可。

3 - 3,观点存放html页面

3 - 4,静态存放静态文件,css, js,字体等

3 - 5, src存放业务控制,类似于springMVC中的控制器,服务。

3 - 6,配置存放核心配置文件。

3-6-1, init。js项目核心。

异常友好处理

函数处理程序(){
  下一个返回异步(ctx)=比;{
  
  .getTime const开始=new日期()();
  
  var urlReq=ctx.request.url;
  如果(urlReq !==& # 39;/favicon.ico& # 39;) {
  
  console.log(“请求地址:$ {ctx.request。方法}$ {urlReq}”);
  尝试{
  
  让params=对象。分配({},ctx.request。查询,ctx.request.body);
  
  如果配置(“token") .excludeUrl.indexOf (urlReq)==1,,! tokenFunction.varifyToken (params.token)) {
  ctx。状态=401;
  其他}{
  等待下一个();
  }
  }捕捉(错误){
  ctx.status=401;
  console.log(“错误!无法获取令牌参数”);
  最后}{
  
  让犯错={};
  如果(! ctx.status) {
  犯错。状态=500;
  }else if (ctx.status==200) {
  返回;
  其他}{
  犯错。状态=ctx.status;
  }
  
  开关(err.status) {
  404年情况:
  犯错。url=配置(“server-name") + & # 39;公共/404./静态html # 39;;
  err.message=白试床淮嬖?“;
  打破;
  401年情况:
  犯错。url=配置(“server-name") + & # 39;公共/10000./静态html # 39;;
  err.message=暗锹绞?请重新登陆!“;
  打破;
  500年情况:
  犯错。url=配置(“server-name") + & # 39;公共/500./静态html # 39;;
  err.message=跋低衬诓看砦?“;
  打破;
  }
  
  开关(ctx.request.type) {
  & # 39;application/json # 39;:
  ctx。=& # 39;类型application/json # 39;;
  ctx。身体={errorCode:犯错。错误代码,信息:err.message}
  打破;
  默认值:
  
  ctx。=& # 39;类型text/html # 39;;
  ctx.redirect (err.url);
  打破;
  }
  }
  }
  const女士=new日期().getTime()——开始;
  控制台。日志(“请求消耗时间:${女士}女士');
  }
  }

路由配置

函数控制器(){
  
  const路由器=new koaRouter ({
  前缀:配置(“server-name")
  });
  
  函数findJsonFile (rootpathStr) {
  
  fs.readdirSync (rootpathStr)。forEach(函数(项目、索引){
  
  让fPath=path.join (rootpathStr、项);
  
  让统计=fs.statSync (fPath);
  
  如果(stat.isDirectory ()===true) {
  findJsonFile (fPath);
  }
  
  如果(stat.isFile ()===true&, fPath.endsWith (& # 39; . js # 39;)) {
  
  var=需要映射(fPath);
  (var url映射){
  如果(url.startsWith (& # 39; & # 39;)) {
  router.get (url.substring(4)映射[url]);
  }else if (url.startsWith (& # 39; POST & # 39;)) {
  router.post (url.substring(5),映射[url]);
  }else if (url.startsWith(& # 39;把& # 39;)){
  router.put (url.substring(4)映射[url]);
  }else if (url.startsWith(& # 39;删除& # 39;)){
  router.del (url.substring(7),映射[url]);
  }
  控制台。日志(注册URL: $ {URL} ');
  }
  }
  });
  }
  
  findJsonFile (rootpath + & # 39; src # 39;);
  返回router.routes ();
  }

使用nodejs + koa2如何模仿springMVC框架