美文网首页
2019-05-14 Node.js简单的静态服务器

2019-05-14 Node.js简单的静态服务器

作者: Ztry | 来源:发表于2019-05-14 12:05 被阅读0次

前言

  1. 近期在学习Node.js一些基础知识,想通过一些demo和一些实战性的东西加强一下,顺便加快前端开发效率问题;
  2. 从一个简单的静态服务器开始

简单的静态服务器接口

开始

  1. Node.js的基础模块:http、url、path、fs
  2. MIME的了解
  3. 开撸
  // 参考以上链接的demo,发现一些小错误,通过查找Node.js的文档修改了一下代码
var http = require("http"),
    url = require("url"),
    path = require("path"),
    fs = require("fs");
var server = http
    .createServer(function(req, res) {
        // res.setHeader('Content','keep-alive');
        // res.setHeader('Expires','Mon, 31 Dec 2012 23:59:59 GMT');
        //res.setHeader('Cache-Control', 'max-age=31536000');
        var pathname = path.join(__dirname,url.parse(req.url).pathname); // 获取访问路径url的目录路径部分
        if (path.extname(pathname) == "") { //path.extname() 拿出拓展名
            pathname += "/";
        }
        if (pathname.charAt(pathname.length - 1) == "/") {
            pathname += "index.html";
        }

        // fs.exists(pathname, function(exists) {  //fs.exists已经废弃, 改用fs.access(path[,mode],callback), 但是后边有读写操作不推荐用fs.access, 改用fs.readFile
        // console.log(pathname)
        fs.readFile(pathname,function(err,data){
            if(err){
                console.error(err)
                res.writeHead(404, { "Content-Type": "text/html" });
                res.end("<h1>404 Not Found</h1>");
            }else{
                var type = {
                    ".html": "text/html",
                    ".htm": "text/html",
                    ".js": "application/javascript",
                    ".css": "text/css",
                    ".ico": "image/x-icon",
                    ".jpeg": "image/jpeg",
                    ".jpg": "image/jpeg",
                    ".png": "image/png",
                    ".gif": "image/gif",
                    ".xml": "text/xml",
                    ".json": "application/json",
                    ".txt": "text/plain",
                    ".pdf": "application/pdf",
                    ".swf": "application/x-shockwave-flash",
                    ".woff": "application/font-woff",
                    ".ttf": "application/octet-stream",
                };
                if(type[path.extname(pathname)]){
                    res.writeHead(200, {
                        "Content-Type": type[path.extname(pathname)]
                    });
                }
                res.end(data);
            }
        });
    })
    .listen(3001);

console.log("Server is running at http://127.0.0.1:3001/");

Node.js 中文网 v10.15.3 - fs.exists

过程(遇到的问题)

  1. 开篇的CNode里面的简单的静态服务器接口有一处错误,path没有exist这方法,另外很多fs的接口已经废弃了,我只好重新阅读文档修改;
  2. 我搭建这个主要是用来测试ElementUI一些demo学习使用的,发现跑了一个ElementDemo(直接引入),在加载woff和tff文件时存在问题,后来在目录里面放了woff和tff文件,并且加上对应的MIME,然后发现对tff的ContentType有很多不同的表述,就对type[path.extname(pathname)]进行个判断,如果文件存在但是找不到对应的ContentType,不影响文件的读取,只是响应头没有ContentType

总结

  1. 对Node.js的API还不过熟悉,要加强,同时在对ElementUI的一些demo进行学习的时候,把Node.js一些文件读写上传的学习一下。

相关文章

  • java Socket 实现多线程静态文件服务器

    关于静态文件服务器,我觉得博文共赏:Node.js静态文件服务器实战写的不错,简单易懂,思路清晰,不过使用Node...

  • 2019-05-14 Node.js简单的静态服务器

    前言 近期在学习Node.js一些基础知识,想通过一些demo和一些实战性的东西加强一下,顺便加快前端开发效率问题...

  • XDL_NO.5 Node.js 中的I/O交互

    回顾下上节课的知识点 搭建一个简单的 Node.js 服务器 利用Node.js 搭建一个静态网站 今天的主题是:...

  • 当前文集 node.js 写一个静态资源服务器记录,是为了给自己学习用 node.js 写静态资源服务器做一个记录...

  • 初学NODE 学习笔记(二)-常用内置模块

    (二)用node.js内置模块,模拟搭建简单服务器(静态资源文件请求的处理); 明确:NODE是用来开发后台,服务...

  • node.js静态页面服务器

    node.js静态页面服务器 const http = require('http'); const url re...

  • HEXO 搭建博客

    Hexo搭建Github静态博客 hexo —— 简单、快速、强大的Node.js静态博客框架 主题:https:...

  • 工程优化方案:动静分离

    《深入浅出 Node.js》阅读随笔 将静态资源,比如图片、音频、视频、样式文件等,存放在专门的静态资源服务器上,...

  • Node.js搭建静态服务器

    写在开头,本文是node.js最最初级的搭建静态服务器,比较适合新手入门,大神请绕道哦~ Node.js 是一个基...

  • 使用Node.js搭建简单静态文件服务器

    这半个多月一直在学Node.js,还是在入门阶段,不过已经对Node很感兴趣了。这里介绍一个简单的静态文件服务器,...

网友评论

      本文标题:2019-05-14 Node.js简单的静态服务器

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