• nodejs 配置服务器


      node 是 js 的运行的后台环境,他自身集成了很多模块,集成的模块直接 require 就行了;

      npm 第三方平台,他也是为 node 服务的,对于 npm 中的模块,先 npm install 然后在使用

      node 就是给 js 提供了一个运行环境,其他任何事情都干不了

      1. 创建一个服务器 http 模块,服务为请求响应,

       listen 用来绑定域名和端口,listen("端口","域名");

       request 客户端向服务端发送的都在这个对象中

       response 响应

       response.end() 用于结束响应,返回给客户端东西

      var http=require("http");  // 创建服务器使用的模块  http

      var fs =require("fs");  // 文件处理模块

      var app=http.createServer(function(req,res){

        响应头:  res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});  200 状态码  mime 类型(重要) text/html  返回的文件类型,向 css 文件,返回的就是 text/css  这样浏览器才能正常的解析,否则,解析不成功,都是字符串; 

        读取文件内容: fs.readFile("./static"+文件名,function(err,data){        // 这种写法 就会把 static 当成 根目录                                  

           if(err){

             throw err   // 抛出错误   

             }

        响应体:   res.end(data)  // data 便是读取文件的数据,    res.end() // 代表向浏览器响应的数据(将读取的文件返回出去)

        })

      })

      app.listen(8000)  //  listen()  8000 代表 端口,如果是测试的话,我们通过 localhost:8000  便可访问我们的服务器

      nodejs 扮演了服务器的角色,服务端的功能,响应浏览器的请求

      为什么在 node 下引入文件不起作用,在 php 下可以呢?

        php 他在使用的时候都集成了服务器的环境,存在根目录这个概念

      不同的请求,根据地址来查看实现

        服务器的响应是根据请求的地址,找到对应的数据

      注意:每个服务器,只有一个响应体,也就是说,我只响应一下,然后就不响应了,并不是说,我可以多次响应

      fs 模块:操作文件的模块

        其中最常用的 便是 读取文件 fs.readFile()  要响应给 浏览器的话,我们需要设置响应头,最重要的是 mime 类型,及中文编码

      url 模块:用来解析网络地址,将 string 类型解析成 object 类型

        通过 url.parse("网络地址",true)  解析 网络地址,第二个参数:true 代表对请求体进行解析

        pathname  路径

        query      参数 

      文本 mime 类型  text/plain  

      如果没有动 服务器的代码,则服务器不需要重启,但要是改了服务器的代码,服务器必须重启

      服务器:

        请求必须响应,响应没处理,就有可能导致链接失败  

      小技巧:通过网络地址栏搜查找的文件的内容,如果没有,那是服务器问题,如果有,就是前端的问题

      前端的学 nodejs 的悲哀:

        除了业务逻辑我们可以做,剩下的只能用 node 自带的,或第三方的模块

      我们想要获取文件路径的拓展名,

      path 模块

        path.extname()  获取文件路径的拓展名

      想让一个目录是根目录,那么根目录在前端的网址上是隐藏的,在后台的上才知道谁是根目录

      完整案例:   

    let http = require("http");
    let fs = require("fs");
    let url = require("url");
    let path = require("path");
    http.createServer(function(req, res) {
    let obj = url.parse(req.url);
    let paths = obj.pathname;
    // console.log(paths);
    fs.readFile("./static" + paths, function(err, data) {
    if (paths != "/favicon.ico") {
    // console.log(paths);
    let extname = path.extname(paths);
    let type = memu(extname);
    if (err) {
    throw err;
    }
    res.writeHead(200, {"Content-Type": type+";charset=utf-8"});
    res.end(data);
    }
    })

    }).listen(3000);
    function memu(exname){
    switch(exname){
    case ".html":
    return "text/html";
    break;
    case ".css":
    return "text/css";
    break;
    case ".jpg":
    return "image/jpg";
    break;
    case ".png":
    return "image/png";
    break;
    case ".js":
    return "text/javascript";
    break;
    case ".json":
    return "text/json";
    break;
    case ".jpeg":
    return "image/jpeg";
    break;
    case ".gif":
    return "image/gif";
    break;
    case ".rtf":
    return "application/rtf ";
    break;
    default:
    return "text/plain";
    }
    }
  • 相关阅读:
    [PHP动态]0001.关于 PHP 7 你必须知道的五件事
    [PHP工具推荐]0001.分析和解析代码的7大工具
    Java数据结构和算法(八)——递归
    Java数据结构和算法(七)——链表
    Java数据结构和算法(六)——前缀、中缀、后缀表达式
    Java数据结构和算法(五)——队列
    Java数据结构和算法(四)——栈
    Java数据结构和算法(三)——冒泡、选择、插入排序算法
    Java数据结构和算法(二)——数组
    Java数据结构和算法(一)——简介
  • 原文地址:https://www.cnblogs.com/shangjun6/p/11202810.html
Copyright © 2020-2023  润新知