nodejs手写一个静态服务器

首先你要知道:

  • 工具:
  1. nodejs。
  2. nodemon。(方便进行调试)
  • Nodejs的API
  • path.resolve()。
  • http.createServer
  • process.cwd()。
  • fs.readFfile()。
  • Promise
  • 箭头函数。
  • commonJs规范。
  • npm的知识。
  • class语法规范。
  • nodejs路径查找

先上一张我的文件夹图片:

nodejs手写一个静态服务器_第1张图片
server.png
  • 首先进入一个空文件夹打开终端:
npm init //用于初始化,会生成一个package.json
npm install nodemon --save-dev //用于使用nodemon
  • 在package.json的script标签中修改如下
    Paste_Image.png

    意思是:用nodemon使用chrome的调试状态来运行当前公共文件夹的index.js

前戏准备足了,开始敲代码了

  • 在全局下面创建一个index.js,写入:
let http = require('http');//nodejs的核心文件http
let PORT = 7000;//监听端口号
let APP = require('./app/index')//进行一个中间层的抽离
let server = new APP();
http.createServer(server.initSever()).listen(PORT,()=>{
    console.log('sever run~~~')
})//创建一个服务器,端口号为7000
  • 进入全局建立APP文件夹,并在下面创建一个index.js。进入全局,创建public文件夹,并在下面写一个index.html,我们要做的就是启动服务器让index.html能够跑起来
class APP{
   initSever(){
     return (request,response)=>{
        let {url} = request;//ES6的字符串结构
        let urlHeader = './public'
        let getPath = (url)=>{
              return path.resolve( process.cwd(),urlHeader+url)
        } //使用path.resolve使它的路径转成绝对路径。
       if(url=='/') url = '/index.html';//因为开启服务器,它默认的url为'/'
       //我们想让它的url锁定public下面的index.html,所以我们需要对url进行一些处理。
       url = getPath(url)//这时候打开端口首页就是public/.index.html    
       //接下里我们就可以读取文件了
        fs.readFile(url,'utf8',(error,data)=>{
              response.end(data);
        })
    }
  }
}
module.exports = APP

写好之后我们可以开启服务器了:我先在html写

hello world

,
在终端里面写npm run start

现在我可以在浏览器开启:http://localhost:7000

nodejs手写一个静态服务器_第2张图片
Paste_Image.png

我们的文件夹:


nodejs手写一个静态服务器_第3张图片
文件夹

最后,有点不足的是我们如果想一些资源返回,甚至想使用ajax,以上代码就会报错。

你可能感兴趣的:(nodejs手写一个静态服务器)