美文网首页Web前端之路让前端飞前端开发那些事
使用模块化的思维学习简单的NodeJS路由与文件上传

使用模块化的思维学习简单的NodeJS路由与文件上传

作者: coderLfy | 来源:发表于2017-06-24 21:46 被阅读93次
配图与本文无关

原生搭建一个服务,最核心的就是http模块,这个模块也是NodeJS的核心模块,如今都提倡模块化,在这我进行模块化的制作的学习。

路由的制作简略示意图路由的制作简略示意图

index.js 模块

这个模块是一个文件入口模块主要处理引入与路由表

var server = require('./server.js');// 服务模块
var router = require('./router.js');// 路由模块
var requestHandlers = require('./requestHandlers'); // 路由处理处理模块

// 路由表
var handle = {};
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;


// 开启服务
server.start(router.route, handle);

server.js 模块:

这个模块是是用来定义服务规则与开启服务器的
主要在这里面写入了该如何处理开启服务中的响应,并让指向如何响应

var http = require('http'); 
var url = require('url'); 

function start(route, handle){
    http.createServer(function(request, response){
        // url.parse(url) 处理URL
        var pathname = url.parse(request.url).pathname;
        if(pathname === '/favicon.ico'){
        
        }else{
            // 调用路由模块方法
            var content = route(handle, pathname);
            response.writeHeader(200, {'Content-Type': 'text/plain;charset=utf-8'});
            response.write(content);
            response.end();
        }
    }).listen(8080, function(){
        console.log('端口号为8080');
    })
}

exports.start = start;

写入中文乱码:首先查看自己js是否是utf-8,用记事本重新保存,再不行就在写入头的时候下加入charset=tuf-8;response.writeHeader(200, {'Content-Type': 'text/plain;charset=utf-8'});

router.js 模块

这个模块专门处理用户浏览的路由,并让路由响应

function route(handle, pathname){
    // 处理路由
    if (typeof handle[pathname] === "function") {
        return handle[pathname]();
    }else{
        return "404 not found";
    }
}

exports.route = route;

requestHandler.js 模块

这个模块专门处理路由的响应

/**
 * 路由处理,有几个路由就写几个方法
 */
function start(){
    return "start";
}
function upload(){
    return "upload";
}

exports.start = start;
exports.upload = upload;

使用以上路由开始制作图片上传与显示

升级版路由升级版路由

修改内容:

index.js

之前:存在路由表

之后:移除路由表,各司其职。

requestHandler.js

之前:是路由处理与接口的暴露。

之后:把入口文件里的路由表转移到这里,暴露路由的接口。把对应处理路由的方法分成更小更细的模块,这样更方便管理与维护。

server.js

结构上没有太大的改变都是处理路由与开启服务器

router.js

结构上没有太大改变,处理路由让路由响应

代码使用了formidable.js这是一个处理上传文件的js,其中的坑有

  1. 路径不存在的时候需要自己创建
  2. formidable上传图片使用rename报错,错误代码:return binding.rename(pathModule._makeLong(oldPath)

解决方法:创建一个公共的文件夹进行存储form.uploadDir = "public/upload";

具体代码:
代码查看

相关文章

  • 使用模块化的思维学习简单的NodeJS路由与文件上传

    原生搭建一个服务,最核心的就是http模块,这个模块也是NodeJS的核心模块,如今都提倡模块化,在这我进行模块化...

  • input上传图片预览

    前端代码示例 下面是后端nodejs代码示例前端上传文件,后端接收并将图片地址返回给前端 下面是处理文件上传的路由...

  • node.js之koa2知识点总结

    第一个程序 路由 简单路由 复杂路由 get与post 判断 获取参数 静态资源 文件上传 mysql操作 封装m...

  • Vue学习笔记七:Vue-router

    1.路由使用 可将路由js文件模块化使用,根目录下新建router文件夹,新增index.js main.js里 ...

  • ftp 上传模式

    在使用 nodejs 实现 ftp 文件上传的过程中,我发现文本文件可以正常上传,但是图片文件则不行。图片被上传后...

  • 前端干货链接-持续更新

    前端文件上传 拖拽上传、图片预览、文件上传nodejs-process-excel :nodejs解析或导出exc...

  • Koa进阶

    Koa脚手架 路由模块化 更多补充 文件上传 路由鉴权 富文本编辑器 SEO优化 API接口 跨域问题 RESTf...

  • NodeJS总结

    什么是NodeJS Node.js采用模块化结构,按照CommonJS规范定义和使用模块。模块与文件是一一对应关系...

  • Nodejs express-fileupload 上传文件 中

    使用Nodejs express-fileupload 上传文件遇到中文乱码问题。 但是postman调用接口没有...

  • module和events模块

    1.V8引擎采用c++编写,nodejs底层也采用c++编写 1.nodejs里面使用module将文件模块化,这...

网友评论

    本文标题:使用模块化的思维学习简单的NodeJS路由与文件上传

    本文链接:https://www.haomeiwen.com/subject/ohdkcxtx.html