阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js 启动往来服务

      node+ 文件夹名可以以 node 的形式运行程序;和在 webstrom 中的运行一样(文件夹名不带后缀也可以运行。

      比如 aaaa.js 或者 aaaa 都可以的)!

      node 的基础知识点;

      • 一是模块化概念,;在模块化之上还有包的概念;
      • 二是包的概念(package);包的大于模块化的;

      模块化的概念:module:// 模块;用的是 require 做模块化;应用如下;

      event=require("event.js");//引用函数的;函数内需要暴露;
      module.exports={proceThis:proceThis,on:on,off:off};//用这个在JS内暴露;
      

      写一个 node 最基本的小框架;

      var http=require("http");
      var fs=require("fs");//IO
      var url=require("url");//解析URL
      var querysting=require("querystring");//解析字符串查询;
      http.createServer(function (req, res) {//请求和应答两个参数;
          //req是request的缩写,从浏览器端过来的请求;
          //res是response缩写,从服务器返回浏览器端的对象;
          res.writeHead(200);
          res.write('<!DOCTYPE html> <html> <head lang="en"><meta charset="UTF-8"> <title>node知识</title> </head> <body>');
          res.write(" <h1>学习nodejs</h1> ");//应答;
          res.write("这是我的第一个nodejs小程序");
          res.end("</body></html>")
      }).listen(8081);
      

      启动程序后,可以在 8081 端口查看;

      改写代码

      var http=require("http");
      var fs=require('fs');
      http.createServer(function(request,response){
          getFile(request.url.slice(1),response);//需要处理路径
          function getFile(filename,response){
              fs.readFile(filename,function(err,data){
                  if(data==null||err){
                      response.end("file is undefind");
                  }else{
                      response.setHeader('Content-Type',getContentType(filename)+';charsrt=UTF-8');
                      response.write(data);
                      response.end();
                  }
              })
          }
          function getContentType(filename){
              if(filename.indexOf('.html')!=-1){
                  return 'text/html'
              }else if(filename.indexOf('.css')!=-1){
                  return 'text/css'
              }else if(filename.indexOf('.js')!=-1){
                  return 'text/javascript'
              }
          }
      }).listen(8080);
      

      请求和响应的常用方法

      请求

      request.url 获取路径
      request.method
      request.headers
      Connection:keep-alive 保持连接;相当于保持连接不中断;
      Content-Length  : 请求的长度;Content-Length:19   name=broszhu&&age=6;请求的长度也会影响采取何种请求方式;
      浏览器只能发get请求,不能发表post请求;?????
      

      响应:

      response.write(‘hello’) 写文件
      response.end() 响应结束
      response.end(new Date(),toUTCString()); ????
      response.statusCode=404 设置响应吗
      response.setHeader(‘Content-Type’,’text/html;charset=”UTF-8”’)
      response.writeHeade(200,{‘Content-Length’: data.length,‘Content-Type’;’text/html;charset=”UTF-8”’})
      
      提示下面报错

      Can’t set headers after they are sent.

      如果 header 已经发给客户端,那么就不能再设置

      转码:
      • encodeURIComponent() 汉字转成编码;它是将中文、韩文等特殊字符转换成 utf-8 格式的 url 编码,所以如果给后台传递参数需要使用 encodeURIComponent 时需要后台解码对 utf-8 支持
      • decodeURIComponent() 编码变转成汉字
      url.parse
      • url.parse(request.url) —>node 提供的 parse 方法;
      • url.parse(request.url,true) —>把查询字符串转成对象;
      FS 的方法:
      fs.readFileSync(‘index2.html’,’UTF-8′) 按照UTF-8读取index2.html
      
      URL 方法:
      url.parse(request.url,true).pathname    //请求路径”/” “/clock”带斜杠的;
      
      目录
      目录