全栈开发的几个调试方法

2017-01-13  本文已影响0人  写代码的杰克叔叔

2017技术博文第一弹,先分享一下一些周边。这里所谓的周边,包括很多议题,比如 IDE, 开发环境,系统,测试环境,调试环境等。。。叔叔打算分几个章节来分享,谈谈本叔叔在开发中所用到的一些小技巧,当然可能有更好的方案,可以通过Email 联系到叔叔, ecstorm(AT)gmail.com。

本文打算讲讲调试部分,叔叔目前的技术栈是 Java , Vuejs。操作系统 Mac OS Sierra。Web 服务器使用 Nginx 。 JVM 容器使用 Jetty。

问题

先讲讲问题,目前互联网的 Web 应用,很多都倾向于使用前端框架,例如单页面的应用,后台应用等场景,当然,手机Web网站也可以使用,做成多个入口,既多个单页应用。对于后端的数据,完全使用 Ajax 来加载数据,甚至使用 WebSocket。

那么以此种方式开发,技术上,必然分成前端和后端不同的两组或者多组人,或者说对于全栈开发来说,必然要估计前端后端两方面,开发和调试就比较麻烦了。

方案

面对以上的问题,加之叔叔有个重要的属性:懒。因此,折腾了下用了几个方案。

单兵作战

作为一个全栈,首先要有台 Mac,首先,准备工作做好

server {
    listen 80;
    server_name     www.mydomain.dev mydomain.dev; //这里是在host里面新加的调试域名

    // 下面的 location 用来监听前端起的服务,并代理到 80 端口
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://localhost:4000;
    }
    // 下面的 location 用来监听后端起的服务,并代理到 80 端口
    location /app-name {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://localhost:8080/app-name;
    }

}

然后讲后端, 后端必然有个 Web 服务,如下:

Web 服务器 技术语言 容器/应用 端口
Nginx Java Tomcat/Jetty 8080
Nginx PHP PHP-Fpm 9000
Nginx Python gunicorn 5000
Nginx Ruby Rails 3000
Nginx NodeJs ExpressJS 6000

是的,以上列出,本叔叔都尝试过,思路上大致是一样的。

前端目前主要使用 VueJS, 叔叔虽然不大写了,看还是能看懂的,基本上的原理也明了,因此,这里有点概念上的东西要理理清楚,因为此处所用的事实上也是依托 ExpressJS 来启动了一个应用,

事实上,Gulp 和 Webpack 都可以启动个 HTTP 服务,来查看前端页面,当然外置个 ExpressJS 事实上也一样。

一切的准备完成,npm 把前端代码 run 起来,后端服务开起来,Nginx 开起来,然后域名就能访问了。这里 Nginx 无需重启,如果要修改后端,那么重启后端,要修改前端,那么重启前端,十分方便。

多人协作

多人的思路大致也一样,只是有相当的演进,花了不少时间,按照问题来说

多人协作其实和单名开发者非常相似,主要是一定要协商好,域名各自用什么,IP尽量用网关配,或者自己配静态IP。

讲讲以前的演进,以前叔叔没有用 Mac 的时候,开发人员公用一台强劲的服务器,各自协商,共用服务,主要是以服务器共享磁盘,或者客户机共享磁盘的方式,这里的坑有个 Nginx 的 sendfile,对网络磁盘挂载的目录有点问题。还有一种方式是用虚拟机,叔叔比较喜欢 FreeBSD,因此用的是上面的虚拟化工具 jail, 挺好用的。

工具

总结一下工具,以上其实已经说的很清楚了,Nginx,Tomcat/Jetty, Nodejs等。

最主要的有几点

上一篇下一篇

猜你喜欢

热点阅读