node 创建静态服务器并自动打开浏览器

node 作为一门偏向后端的技术,提供了可以让我们js 在服务器上运行的平台,为我们前端工程师实现项目前端工程化,带来了众多便利。同时,它也可以很方便的创建静态服务器,可以直接连接数据库、、、实现多种功能,可以说,对于一个前端工程师如果精通了 node ,那么开发效率可以大大的提高,下面就是一段 利用 node 搭建的一个项目服务器,来启动项目并在默认浏览器里自动打开。

 

var http = require('http'), // 引入需要的模块
    fs = require('fs'),//引入文件读取模块
    cp = require('child_process'),  // 可自动打开浏览器模块
	url  = require("url"),
    path = require("path");
    
    
http.createServer(function (req, res) {
    var pathname=__dirname+url.parse(req.url).pathname;  // 对于文件路径统一处理
    if (path.extname(pathname)=="") {
        pathname+="/html/";  // 欲打开文件的目录
    }
    if (pathname.charAt(pathname.length-1)=="/"){
        pathname+="index.html";  // 默认打开的文件
    }
    fs.exists(pathname,function(exists){
        if(exists){
            switch(path.extname(pathname)){ // 不同文件返回不同类型
                case ".html":
                    res.writeHead(200, {"Content-Type": "text/html"});
                    break;
                case ".js":
                    res.writeHead(200, {"Content-Type": "text/javascript"});
                    break;
                case ".css":
                    res.writeHead(200, {"Content-Type": "text/css"});
                    break;
                case ".gif":
                    res.writeHead(200, {"Content-Type": "image/gif"});
                    break;
                case ".jpg":
                    res.writeHead(200, {"Content-Type": "image/jpeg"});
                    break;
                case ".png":
                    res.writeHead(200, {"Content-Type": "image/png"});
                    break;
                default:
                    res.writeHead(200, {"Content-Type": "application/octet-stream"});
            }
            fs.readFile(pathname,function (err,data){
            	console.log((new Date()).toLocaleString() +" " +pathname);
                res.end(data);
            });
        } else {  // 找不到目录 时的处理
            res.writeHead(404, {"Content-Type": "text/html"});
            res.end("<h1>404 Not Found</h1>");
        }
    });
    
}).listen(8889, "127.0.0.1");  // 监听端口

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

cp.exec('start http://127.0.0.1:8889/');  // 自动打开默认浏览器

  

posted @ 2018-03-16 16:43  cmyoung  阅读(2298)  评论(0编辑  收藏  举报