http-server 与 Node.js服务器(学习笔记)

一、 一个简单的 Node.js Server

使用方法:

  1. mkdir http-demo

  2. touch xxx.html

  3. npm install -g http-server

  4. http-server -c-1

就可以访问 http://localhost:8080/xxx.html 来预览你的 html 了。

注意:Windows 上 http-server 的缓存无法消除,如果发现更改了页面,页面却无法更新,那么就这样做:

  1. 打开 Chrome 开发者工具
  2. 点击 Network
  3. 勾选 Disable Cache
    这样缓存就不存在了~

二、Node.js服务器

1. 接收请求

  1. 新建一个安全的目录;
    cd ~/Desktop; mkdir node-demo; cd node-demo
    touch server.js
  2. 编辑 server.js
var http = require('http')
var fs = require('fs')
var url = require('url')
var port = process.argv[2]

if(!port){
  console.log('请指定端口号好不啦?\nnode server.js 8888 这样不会吗?')
  process.exit(1)
}

var server = http.createServer(function(request, response){
  var parsedUrl = url.parse(request.url, true)
  var path = request.url 
  var query = ''
  if(path.indexOf('?') >= 0){ query = path.substring(path.indexOf('?')) }
  var pathNoQuery = parsedUrl.pathname
  var queryObject = parsedUrl.query
  var method = request.method

  /******** 从这里开始看,上面不要看 ************/













  console.log('方方说:得到 HTTP 路径\n' + path)
  console.log('方方说:查询字符串为\n' + query)
  console.log('方方说:不含查询字符串的路径为\n' + pathNoQuery)










  /******** 代码结束,下面不要看 ************/
})

server.listen(port)
console.log('监听 ' + port + ' 成功\n请用在空中转体720度然后用电饭煲打开 http://localhost:' + port)
  1. 运行 node server 或者 node server.js,看到报错;
  2. 根据报错提示调整命令;
  3. 成功之后,这个 server 会保持运行,无法退出
    • 如果想「中断」这个 server,按 Ctrl + C 即可(C 就是 Cancel 的意思);
    • 中断后你才能输入其他命令
    • 建议把这个 server 放在那里别动,新开一个 Bash 窗口,完成下面步骤;
      好了服务器完成。只不过
  1. 这个服务器目前只有一个功能,那就是打印出路径和查询字符串。
  2. 还缺少一个重要的功能,那就是发出 HTTP 响应。

目前先只做一个功能。

  • 接下来要发起一个请求到这个服务器。「向自己发起请求」。
  • 在新的 Bash 窗口运行
curl http://localhost:你的指定的端口/xxx 或者 curl http://127.0.0.1:你指定的端口/xxx

会马上发现 server 打印出了路径。

  1. 这说明我们的 server 收到了我们用 curl 发出的请求
  2. 由于 server 迟迟没有发出响应,所以 curl 就一直等在那里,无法退出(用 Ctrl + C 中断 curl);

2. 发出响应

  1. 编辑 server.js
  2. 在中间我标注的区域添加两行代码
  3. response.write('Hi')
  4. response.end()
  5. 中断之前的 server,重新运行 node server 8888
  6. curl http://127.0.0.1:8888/xxx,结果如下:
Hi% 
  • 这个 % 不是我们的内容,% 表示结尾。可以去掉%,步骤为把 'Hi' 换成 'Hi\n'。
  1. 响应添加成功
  2. 使用 curl -s -v -- "http://localhost:8888/xxx" 可以查看完整的请求和响应。

node-demo代码

var http = require('http')
var fs = require('fs')
var url = require('url')
var port = process.argv[2]

if(!port){
  console.log('请指定端口号好不啦?\nnode server.js 8888 这样不会吗?')
  process.exit(1)
}

var server = http.createServer(function(request, response){
  var parsedUrl = url.parse(request.url, true)
  var path = request.url 
  var query = ''
  if(path.indexOf('?') >= 0){ query = path.substring(path.indexOf('?')) }
  var pathNoQuery = parsedUrl.pathname
  var queryObject = parsedUrl.query
  var method = request.method

  /******** 从这里开始看,上面不要看 ************/

  console.log('HTTP 路径为\n' + path)
  if(path == '/style.js'){
    response.setHeader('Content-Type', 'text/css; charset=utf-8')
    response.write('body{background-color: #ddd;}h1{color: red;}')
    response.end()
  }else if(path == '/script.html'){
    response.setHeader('Content-Type', 'text/javascript; charset=utf-8')
    response.write('alert("这是JS执行的")')
    response.end()
  }else if(path == '/index.css'){
    response.setHeader('Content-Type', 'text/html; charset=utf-8')
    response.write('\n'  + 
      '' +
      ''  +
      '

你好

' + '' + '') response.end() }else{ response.statusCode = 404 response.end() } /******** 代码结束,下面不要看 ************/ }) server.listen(port) console.log('监听 ' + port + ' 成功\n请用在空中转体720度然后用电饭煲打开 http://localhost:' + port)

你可能感兴趣的:(http-server 与 Node.js服务器(学习笔记))