09月25, 2017

node web项目之前置知识

最近需要做一个平台性的项目,因为java人员暂时没有资源,所以就准备用node来充当后台。。我来实现所有的后台功能,另外一个同事实现前台的页面。

为此,也需要准备一些东西,例如:

  • 使用什么框架
  • get/post接收数据,form-data的数据接收处理
  • 数据库的选择,用mongodb or mysql
  • 如何debug

框架选型

这个我纠结了很久,目前我所知道的比较可以的,譬如有:

  • eggjs
  • thinkjs

但我依旧选择了最底层的koa2来进行开发,理由是:我对这二者并不是那么地熟,如果真要深入,恐怕还是得要花一周左右的时间的。

开发模式:前后分离,resful api。。

koa2的数据处理

像koa-body,是没法支持form-data这种格式的接收的。

查了一些资料,最终选用了koa-better-body

它会将数据保存在ctx.request.files中,随后只要遍历处理即可,譬如:

// 一般来说,肯定知道某个字段,比如说c是图片,所以去取c下面的files数组
var files=ctx.request.fields.c;
if(files.length>0){
    for(var item in files){
        var item = 0;
        var tmpath= files[item]['path'];
        var tmparr =files[item]['name'].split('.');
        var ext ='.'+tmparr[tmparr.length-1];
        var newpath =path.join('uploadFile', parseInt(Math.random()*100) + Date.parse(new Date()).toString() + ext);
        console.log(tmpath);
        console.log(newpath);
        var stream = fs.createWriteStream(newpath);//创建一个可写流
        fs.createReadStream(tmpath).pipe(stream);//可读流通过管道写入可写流
    }
}

数据库选型

我选择了mysql,但其实mongodb也是一个不错的选择(最近刚好在学mongodb,发现写这个超爽)。

debug

通过--inspect来开启debug模式。

n use 8.4.0 --inspect

随后打开chrome://inspect/#devices,就可以看到:

alt

点击进去,我们就可以对具体的代码打断点了:

alt

结语

当然上面说的东西还是比较基础。

在实际中,我遇到了譬如node没办法设置全局baseUrl,这个一般可能在静态资源上会有一些问题。

比如说上传图片之后,图片放在服务端,给前端生成一个URL地址,光用koa-static是不够的,因为它并没有提供URL前缀(虚拟目录)的功能。

当然问题的解决,也需要一个变量文件,来统一管理所有的URL前缀路径。

还有比如说koa2怎么写swagger,这个暂时还没学。我先准备提供给同事postman文件,等会了swagger了,再来填坑。

于我来讲,目前的这些功能块,压力还不是太大,但明年如果要做登录(对接我司的账号系统)、权限功能这些,还是会有一些挑战的。

不过既然选择了,只能咬牙扛到底了。

本文链接:www.my-fe.pub/post/node-web-project-pre-knowledge.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。