设计

要实现一定项目结构,并不是把项目分几个文件夹就完事了的,项目结构设计的最终目的是降低系统的复杂度,一般设计时,总是把一个系统,分成几个小系统,每个小系统独自完成一个功能,并且要控制各个子系统之间的访问权限,在java中很容易通过包权限来实现。但nodejs只有模块,没有包权限,所以项目开始时要通过约定来实现包权限,约定就是大家编写代码时自觉遵守的规则,自觉很重要。遵守各个子系统之间的访问权限,不要越权。

因为数据具有多样性,而为了保证数据层对外表现的一致一致性,因为每个项目的数据模型都不同,选用的数据库也因此不同,为了保证model层对外的一致性,也为了保护数据,在model层之上加上一个代理层。所有数据的访问需通过代理层。

在mvc中model层对应的是网站的资源模型,模型并不能简单理解成数据库中的表,他是抽象的,它可以是一张图片,一个文件,一张数据库的表,或者是几张表和在一起。

目录结构

  • bin
  • controllers
  • logs
  • middlewares
  • models
  • proxy
  • public
  • services
  • test
  • views
  • app.js
  • config.js
  • router.js
  • package.js

express 请求响应流程

流程解析

上图的箭头代表着请求的流向或者访问的权限。
router:只做请求分发,没有业务逻辑
err是统一的错误处理位置,记录错误,统一err页面。
middlewares:业务中间件,如用户权限控制
model只能由它的proxy访问,而proxy能被controller和service访问。
controller主要逻辑处理
service作为项目的业务组件。如:redis连接服务,缓存组件,日志组件等,他可以减少controller的负担。
app:放一次性脚本

项目代码github

nodejs 项目目录结构设计相关推荐

  1. 如何将nodejs项目程序部署到阿里云服务器上

    将nodejs项目程序部署到阿里云服务器上 一.概述 二.具体步骤 1.拥有自己的服务器 2.下载Xshell 3. oneinstack配置web环境 4. XShell连接远程主机 5.更新系统软 ...

  2. 在Linux部署Nodejs项目,一旦断掉XShell就会导致服务被停掉,真的很郁闷~怎么办?果断用forever

    客户端启动Node.js应用,用node index.js这样可以正常启动应用,但是如果断开客户端连接,应用也就随之停止了.也就是说这样的启动方式没有给应用一个守护线程. 首先需要安装一个叫做fore ...

  3. NODEJS项目实践0.4 [domain,pm2,log4js,md5]

    一.前言 ⋅⋅⋅上节我们基于mongo数据存取的操作,实现了用户注册.登录.退出功能,并应用了初级的权限验证.本节将处理nodejs异常情况.加密.日志及进程守护. git : https://git ...

  4. 用package.json配置NodeJS项目的模块声明

    在NodeJS项目中,用package.json文件来声明项目中使用的模块,这样在新的环境部署时,只要在package.json文件所在的目录执行 npm install 命令即可安装所需要的模块. ...

  5. 部署nodejs项目到服务器的一些总结

    安装nodejs 首先在服务器上安装nodejs并配置环境,这个可以参考官方的文档,就不细说了 拷贝项目到服务器上 这里其实可以通过git直接clone在服务器上.当然正常发版一般是将代码打包上传到服 ...

  6. Angular4.x 安装|创建项目|目录结构|创建组件

    Angular4.x 安装|创建项目|目录结构|创建组件 安装最新版本的 nodejs node.js 官网:https://nodejs.org/zh-cn/ 去官网下载 node.js,下一步下一 ...

  7. 一台新云主机nodejs项目部署过程

    某云服务商的一个全新的云服务器,系统为centos.需要在上面部署一套系统,包括了java.nodejs等等.本文记录一下与nodejs有关的部署过程.有些操作是熟悉.简单的,但也记录出来,权当流水账 ...

  8. docker mysql node_Docker打包nodejs项目和数据库

    看这篇文章,必须知道基础的docker, 本文只提供思路和部分代码, 不负责教 所有的命令必须谨慎操作!三思而后行 命令 停止所有运行的容器 docker stop $(docker ps -a -q ...

  9. 在Centos上启动nodejs项目,并使用pm2管理nodejs应用

    node+koa2+mysql入门可以查看这篇文章https://blog.csdn.net/qq_41231694/article/details/123788781 一.在centos上安装nod ...

  10. markdown写出项目目录结构

    markdown写出项目目录结构: windows下的CMD命令tree可以很方便的得到文件夹目录树 环境:windows 功能:以树状图列出目录的内容 使用配方: tree [drive][path ...

最新文章

  1. Liunx的常用命令
  2. c++ stack 遍历_python实现二叉树的遍历以及其他基本操作
  3. Java 检测文件是否存在
  4. 技术的价值--从实验到企业实施的关键性思想
  5. 设计灵感|想让海报设计更丰富?可以试试重复
  6. TensorFlow tf.keras.layers.Dense
  7. 【报告分享】砥砺前行 智启新章:2019-2020中国银行业发展回顾与展望.pdf(附下载链接)...
  8. Java中提取字符串中的数字
  9. 1、Java多线程基础:进程和线程之由来
  10. net core引用外部dll发布后报错找不到文件
  11. java编程练习题:统计字符出现的次数
  12. Matlab 警告: 名称不存在或不是目录
  13. 游戏开发入门如何点亮技术树?
  14. C++ SLT中的容器学习与函数谓词
  15. 关于适配,我想说。。。
  16. 我用python实现了一个量化选股程序
  17. 荷包app软件测试,智能分贝测试仪app
  18. 财务学python还是vba_各位大佬好,财务分析,要使用BI,VBA,Python,Wind学习那个可以对财务工作更加有益?...
  19. [c语言]倒置字符串 -牛客网
  20. ubuntu安装有道词典命令行查询

热门文章

  1. 微信登陆失败redirect_uri 域名与后台配置不一致 10003(thinkphp)
  2. 【云锁·nginx自编译web防护教程】
  3. U盘启动的WinPe安装winxp(非ghost版)重启后出现NTLDR IS MISSING的问题
  4. 2019年 腾讯校园招聘JAVA
  5. Cloudera Manager API使用(附代码)
  6. 【2016.11.28】纯HTML仿微博注册页面
  7. 报告下集 |《认文识字·中文字信息精准化》报告
  8. Java 超简单实现邮件群发工具类 | 泰山出品
  9. 四色定理java_四色定理中公理的证明
  10. 2022年全球市场羊毛纱总体规模、主要生产商、主要地区、产品和应用细分研究报告