项目作者: xudeming208

项目描述 :
用nodejs开发的一套基于URI的MVC框架,适用于前后端分离项目。
高级语言: JavaScript
项目地址: git://github.com/xudeming208/mid.git
创建时间: 2016-11-14T12:53:13Z
项目社区:https://github.com/xudeming208/mid

开源协议:MIT License

关键词:
mid mid-cli mvc nginx pm2 ssr

下载



mid




Travis Status
Contributors
License

介绍

  1. - nodejs开发的一套基于URI MVC 框架,适用于前后端分离项目。
  2. - 后端渲染;运用nodejs + es6(7) + component + less
  3. - 采用集群cluster模式(基于PM2

MVC示意图

mvc示意图

mid流程图

mid流程图

压力测试及内存泄漏测试

详细查看TEST.md

mid-cli

  1. - mid-climid框架脚手架
  2. - 默认打开的是H5页。也可以通过以下方式访问:
  3. 1. 设置host
  4. 127.0.0.1 pc.fedevot.test.com
  5. 127.0.0.1 h5.fedevot.test.com
  6. 2. h5.fedevot.test.com => H5页;pc.fedevot.test.com => PC
  1. sudo npm i -g pm2
  2. sudo npm i -g mid-cli —verbose
  3. mid-cli init
    • mid-cli -h
    • mid-cli -v

Usage

详细查看DOC.md

Nginx(转自thinkjs)

虽然 Node.js 自身可以直接创建 HTTP(S) 服务,但生产环境不建议直接把 Node 服务可以对外直接访问,而是在前面用 WebServer(如:nginx) 来挡一层,这样有多个好处:

  • 可以更好做负载均衡,比如:同一个项目,启动多个端口的服务,用 nginx 做负载
  • 静态资源使用 nginx 直接提供服务性能更高(实际中用CDN更好)
  • HTTPS(HTTP2) 服务用 nginx 提供性能更高
  • Gzip压缩等(注意:图片不要Gzip,因为图片Gzip会变大)
  • 反向代理端口与域名
  • Nginx更好的日志记录分析
  • Nginx缓存

使用Nginx的大致配置:

  • 绑定host host => sudo vi /etc/hosts,如下:
  1. 127.0.0.1 h5.fedevot.test.com pc.fedevot.test.com
  • 安装 nginx 然后配置如下:
  1. server {
  2. listen 80;
  3. server_name *.fedevot.test.com;
  4. location / {
  5. proxy_set_header Host $http_host;
  6. proxy_set_header X-Real-IP $remote_addr;
  7. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8. proxy_pass http://127.0.0.1:8083;
  9. }
  10. }

ps:
当然你也可以以80端口启动node服务,然后用sudo启动(1024以下端口需要sudo),但是不推荐这样。

HTTPS(转自thinkjs)

现代网站强制建议使用 HTTPS 访问,这样可以提供网站内容的安全性,避免内容被劫持、监听、篡改等问题。如果不愿意支付证书的费用,可以使用 Let’s Encrypt 提供的免费 SSL/TLS 证书,可以参见文章 Let’s Encrypt免费好用的 HTTPS 证书

HTTP2

  1. - 暂时不推荐使用于生产环境

http2 nginx配置实例:

  1. #rewrite https/http2
  2. server {
  3. listen 80;
  4. server_name h5.fedevot.test.com;
  5. rewrite ^(.*) https://h5.fedevot.test.com$1 permanent;
  6. }
  7. #http2
  8. server {
  9. listen 443 ssl http2 fastopen=3 reuseport;
  10. server_name h5.fedevot.test.com;
  11. ssl_certificate /usr/local/etc/nginx/key/certificate.pem;
  12. ssl_certificate_key /usr/local/etc/nginx/key/privatekey.pem;
  13. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  14. ssl_prefer_server_ciphers on;
  15. ssl_ciphers AES128+EECDH:AES128+EDH:!aNULL;
  16. ssl_session_cache shared:SSL:10m;
  17. location / {
  18. proxy_pass http://127.0.0.1:8083;
  19. }
  20. }

Config

  • defaultMod:
    • 表示默认查找controller的JS文件
  • server:
    • 表示的是response headers中的server字段
  • apiTimeOut:
    • 表示访问接口的超时时间
  • merge(未完成):
    • 表示是否合并CSS和JS;
  • debug:
    • 此字段为true时:HTML、CSS和JS不压缩,静态资源不缓存;
  • 生产环境:
    • 生产环境下,应先将less编译、JS压缩传至cdn or Nginx,如果更改HTML的引入路径即可;这时不需要此静态文件服务器了

FAQ