• Node.js—基本知识


    一、第一个Node代码

    1. 运行Node.js

      通过node E:Node代码hello.js运行代码;Node.js是服务器的程序,写的js语句都将运行在服务器上。返回给客户的,都是已经处理好的纯HTML

    // require表示引包,引包就是引用自己的一个特殊功能
    var http = require("http")
    // 创建服务器,参数是一个回调函数,表示有请求进来,要做什么
    var server = http.createServer(function(req,res){
      // req表示请求,request;res表示响应,response
      // 设置HTTP头部,状态码是200,文件类型是html,字符集UTF8
      res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"});
      res.end("Hello World")
    });
    
    // 运行服务器
    server.listen(8088,"127.0.0.1");
    

    2. Node.js执行HTML

      Node.js没有根目录的概念,因为它根本没有任何的web容器!所有静态资源都需要写入路由。URL和真实物理文件是没有关系的,URL是通过Node的顶层路由设计,呈递某一个静态文件。

    // require表示引包,引包就是引用自己的一个特殊功能
    var http = require("http");
    // fs读取文件的
    var fs = require("fs");
    
    var server = http.createServer(function(req, res) {
      if(req.url == "/fang"){
        fs.readFile("./test.html", function(err, data) {
          res.writeHead(200, {"Content-type": "text/html;charset=UTF-8"});
          res.end(data);
        });
      }else if (req.url == "/yuan") {
        fs.readFile("./test2.html", function(err, data) {
          res.writeHead(200, {"Content-type": "text/html;charset=UTF-8"});
          res.end(data);
        });
      }else if(req.url == "/img"){
        fs.readFile("./img.jpg", function(err, data) {
          res.writeHead(200,  {'Content-Type':'image/jpg'});  
          res.end(data);
        });
      }else{
        res.writeHead(404, {"Content-type": "text/html;charset=UTF-8"});
        res.end("么有");
      }
      
    });
    // 运行服务器
    server.listen(8088, "127.0.0.1");
    

    二、HTTP模块

      我们知道传统的HTTP服务器是由Aphche、Nginx、IIS之类的软件来搭建的,但是Nodejs并不需要,Nodejs提供了http模块,自身就可以用来构建服务器。

    //require引用模块
    var http = require("http");
    
    //创建一个服务器,回调函数表示接收到请求之后做的事情
    var server = http.createServer(function(req,res){
        res.writeHead(200,{"content-type":"text/html"});
    	//req参数表示请求,res表示响应;必须有一个res.end()
    	console.log("服务器接收到了请求" + req.url);
            res.write("<h1>主标题1<h1>");
    	res.end("<h1>主标题2<h1>");
    });
    
    //监听端口
    server.listen(3000,"127.0.0.1");
    

      http模块中封装了一个HTTP服务器和一个简易的HTTP客户端:http.Server()用于创建是一个基于事件的HTTP服务器,而http.request()和http.get()可以作为客户端向HTTP服务器发起请求。在这里使用的createServer()方法返回了一个http.Server对象,text/plain的意思是将文件设置为纯文本格式,浏览器在获取到这种文件时并不会对其进行处理,如果将content-type设置为text/html,浏览器在获取到这种文件时会自动调用HTML的解析器对文件进行相应的处理。另外,也可以用new http.Server()构造函数的方法创建http.Server对象。

      http.Server的事件,http.Server最常用的事件是"request",当接收到http请求时触发。在"request"事件中,传入回调函数的参数req和res分别是http.IncomingMessage和http.ServerResponse的实例:http.IncomingMessage类包含了从客户端发来的http请求信息,它可以用来访问响应状态、消息头、以及数据等;http.ServerResponse类是返回给客户端的信息,它有三个重要的方法,用于返回响应头、响应内容以及结束请求。

      writeHead(statusCode[, statusMessage][,headers]):向请求的客户端发送响应头,该函数在一个请求中最多调用一次,如果不调用,则会自动生成一个响应头

      write(chunk[,encoding][,callback]):向请求的客户端发送响应内容,chunk是一个buffer或者字符串,如果chunk是字符串,则需要指定编码方式,默认为utf-8,在end()方法调用之前可以多次调用

      end([data][,encoding][,callback]):结束响应,告知客户端所有发送已经结束,如果不调用这个函数,客户端将一直处于等待状态

  • 相关阅读:
    Sprint第二个冲刺(第八天)
    Sprint第二个冲刺(第七天)
    Sprint第二个冲刺(第六天)
    Sprint第二个冲刺(第五天)
    Sprint第二个冲刺(第四天)
    Sprint第二个冲刺(第三天)
    Sprint第二个冲刺(第二天)
    Sprint第二个冲刺(第一天)
    新冲刺Sprint3(第三天)
    新冲刺Sprint3(第二天)
  • 原文地址:https://www.cnblogs.com/hq82/p/10834670.html
Copyright © 2020-2023  润新知