主要框架:koa2全家桶+mongoose+pm2。

在阅读前建议将项目克隆到本地配合食用,否则将看得云里雾里。

项目地址:https://github.com/YogurtQ/koa-server

如有错误,欢迎指正。如有疑问,欢迎交流。

在此强烈推荐还在用express的同学转到koa2,koa2本就是express原班人马打造,熟悉express的话上手很快,而且es6/es7语法真的越用越爽。如果是新手的话,直接学习koa2就对了。

一、安装

node.js v7.6.0+

npm v3.x+

须安装pm2

全局安装pm2

npm i -g pm2

安装依赖

npm i

启动development

npm run dev

启动production

npm run build

启动test

npm run test

二、项目结构

├─.gitignore                // 忽略文件配置
├─app.js // 应用入口
├─config.js // 公共配置文件
├─ecosystem.config.js // pm2配置文件
├─package.json // 依赖文件配置
├─README.md // README文档
├─routes // 路由
| ├─private.js // 校验接口
| ├─public.js // 公开接口
| └view.js // 页面接口
├─models // 模型
| ├─index.js // 配置
| └user.js // schema
├─controllers // 操作业务逻辑
| ├─index.js // 配置
| ├─login.js // 登录
| └test.js // 测试
├─services // 业务
| ├─index.js // 配置
| └user.js // 用户
├─middlewares // 中间件
| ├─cors.js // 跨域中间件
| ├─jwt.js // jwt中间件
| ├─logger.js // 日志打印中间件
| └response.js // 响应及异常处理中间件
├─logs // 日志目录
├─lib // 依赖库
| ├─error.js // 异常处理
| ├─baseDAO.js // 基础业务类
| └mongoDB.js // mongoDB配置
├─bin // 启动目录
| ├─.sh/.bat // 启动和停止批处理文件
| └www // 启动文件配置

三、项目说明

1.routes 路由

  • public 无需校验,可直接访问
  • private 需登录,身份验证通过后可访问
  • view 前端页面路由,非必须

2.views 页面

  • 页面目录,首页默认为index.html,可在routes/view中修改,如需使用模板引擎可自行安装
  • 现在的一贯做法是,前后端分离,将前端文件放入代理服务器中。如将vue项目打包后的dist文件丢进nginx中,但为了保证该框架的完整性,还是保留了views目录

3.services 业务

  • index.js 的作用为自动扫描注册当前文件夹下的业务类,但不会扫描子文件下的js文件,因此通常业务都直接放在services文件夹下,如有特殊情况,则新建子文件夹并自行处理,如该框架下的fileService目录
  • service都采用了类的写法,因此需node版本支持,并且都继承自lib目录下的baseDAO类,baseDAO中是一些基础方法,由此可避免重复编写find/delete等方法,如有其它需要,则可在service中自行扩展
  • service中导出的类名需与js文件名一致

4.models 模型

  • index.js 文件同services,如有特殊需要,新建子文件夹并自行处理
  • model实质上为mongoose的schema,按照mongoose的方法来定义字段类型,验证规则等

5.controllers 控制器

  • index.js 文件同services,如有特殊需要,新建子文件夹并自行处理
  • controller中为路由对应的方法,由于需操作数据库且koa2采用了async/await,因此该目录下方法都是async方法,编写时需注意异步的问题。
  • controller.js中方法的编写格式为:“'METHOD url': async function()”, 即:“'请求类型 请求地址':处理方法”,method需大写,接口api统一以'/api'开头

6.pm2

  • pm2主要用来守护应用,有兴趣可自行学习
  • pm2并非koa项目必须,但由于在package.json的scripts中使用了pm2命令,因此需先安装,或者自行修改scripts

7.其他

  • 其他目录说明见项目结构章节,不作过多解释
  • 配置文件见config.js

基于Koa2+mongoDB的后端博客框架的更多相关文章

  1. Angular4+Koa2+MongoDB开发个人博客

    **文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号.** ![file](https://img2018.cnblogs.com/blog/830272/201 ...

  2. 基于express+mongodb+pug的博客系统——pug篇

    很久之前就想自己搭一个博客了,最开始用hexo+github,但是换电脑后总是有些麻烦.后来使用WordPress,但是用WordPress总觉得没什么技术含量,前后端都是人家写好的,而且买的垃圾虚拟 ...

  3. 基于express+mongodb+pug的博客系统——后台篇

    上一篇介绍了模板引擎pug.js的用法,这一篇就主要写后台逻辑了. 后台的大部分的功能都有了,只是在已经登录的状态下,前台和后台的逻辑处理还不是很完善. 先上几张图吧,仿旧版的简书,改了下UI,因为没 ...

  4. hexo —— 简单、快速、强大的Node.js静态博客框架

    hexo是一款基于Node.js的静态博客框架.目前在GitHub上已有1375 star 和 219 fork. 特性 风一般的速度 Hexo基于Node.js,支持多进程,几百篇文章也可以秒生成. ...

  5. 【教程向】——基于hexo+github搭建私人博客

    前言 1.github pages服务生成的全是静态文件,访问速度快: 2.免费方便,不用花一分钱就可以搭建一个自由的个人博客,不需要服务器不需要后台: 3.可以随意绑定自己的域名,不仔细看的话根本看 ...

  6. 博客框架 Hexo: 3.9.0 及主题 NexT 6.x.x 基本操作

    文章大纲 1. 不同代码仓库部署 coding 部署方式 项目名称 配置 SSH 公钥访问 git 仓库 github 码云 2. 手动cdn,智能解析 3. 添加评论系统 4. 博客置顶 5. 页脚 ...

  7. Hexo博客框架攻略

    前言 前天无意在b站看到up主CodeSheep上传的博客搭建教程,引起了我这个有需求但苦于没学过什么博客框架的小白的兴趣.于是花了两天时间终于终于把自己的博客搭建好了,踩了无数的坑,走偏了无数的路, ...

  8. 基于 Hexo 从零开始搭建个人博客(二)

    阅读本篇前,请先配置好相应的环境,请仔细阅读教程 基于 Hexo 从零开始搭建个人博客(一). 原文链接:基于 Hexo 从零开始搭建个人博客(二) 前言 博客搭建过程遇到任何问题,优先在本页面搜索, ...

  9. 基于 Hexo 从零开始搭建个人博客(五)

    阅读本篇前,请先阅读前几篇文章: 基于 Hexo 从零开始搭建个人博客(一) 基于 Hexo 从零开始搭建个人博客(二) 基于 Hexo 从零开始搭建个人博客(三) 基于 Hexo 从零开始搭建个人博 ...

随机推荐

  1. 重新开始记录java教程

    最近在工作上学到了很多的知识和经验,以后每天都来记录给博客园上面

  2. B. GameGame 解析(思維、博弈)

    Codeforce 1383 B. GameGame 解析(思維.博弈) 今天我們來看看CF1383B 題目連結 題目 兩個人在玩遊戲,有一個長度為\(n\)的數列\(a\),每次每個人選一個數字和目 ...

  3. ABAP-字符串常用处理方法

    字符串处理 SPLIT dobj AT sep INTO { {result1 result2 ...} | {TABLE result_tab} } 必须指定足够目标字段.否则,用字段dobj的剩余 ...

  4. 【转】Setting up SDL Extension Libraries on Code::Blocks 12.11

    FROM: http://lazyfoo.net/tutorials/SDL/06_extension_libraries_and_loading_other_image_formats/window ...

  5. 云计算之路-出海记:蹭一张 aws 船票

    出海记开篇之后,在 aws 上搭建博客园海外站的出海计划今天开始迈出第一步 -- 注册一个 aws 海外区域账号. aws 现在针对新注册用户提供12个月免费套餐(正在园子里推广并提供了专属注册通道) ...

  6. Spring创建Bean的过程Debug

    目录 Spring流程Debug 1.1 Spring测试环境搭建 1.2 Debug容器创建过程 1.3 AbstractApplicationContext的refresh()包含的13个方法分析 ...

  7. configfs_sample.c 理解

    1. 编译运行 代码从如下链接获得: https://github.com/torvalds/linux/blob/master/samples/configfs/configfs_sample.c ...

  8. 三分钟快速解析GraphQL基本工作思路!

    欢迎阅读 本文会通过实际场景介绍一下 GraphQL,目的是让你快速了解 GraphQL 是什么,以及基本工作思路,不包含实际用法,所以阅读很轻松. 一.GraphQL 是什么? GraphQL 是后 ...

  9. 使用bootstrap fileinput多文件拖拽上传的记录

    今天琢磨文件上传,刚好看到bootstrap 我就搜了一下,刚刚能满足需求,使用上手也很快,使用完还是记录下来. 1.首先我们下载插件包,可以用nuget搜索bootstrap-fileinput 也 ...

  10. 数据采集与融合第四次作业:多线程以及scrapy框架的使用

    数据采集第四次作业:多线程以及scrapy框架的使用 任务一:单多线程的使用 单线程代码: from bs4 import BeautifulSoup from bs4 import UnicodeD ...