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";
}
}

nodejs 配置服务器的更多相关文章

  1. 安装nodeJs静态服务器(NodeJs Express MVC 框架)

    安装 NodeJs Express MVC 框架   新建项目文件夹   打开cmd 执行以下操作:   一.使用Express框架 1)安装express3 $: npm install -g ex ...

  2. Centos 配置服务器

    Centos 配置服务器 (配置服务器 除了Git Bash Here 还可以安装Xshell 网址:https://xshell.en.softonic.com/   Wincp 网址:https: ...

  3. nodejs配置及cmd常用操作

    一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...

  4. 配置服务器有错/usr/libexec/gconf-sanity-check-2的退出状态为256

    问题描述: CentOS启动的时候报如下错误:“配置服务器有错/usr/libexec/gconf-sanity-check-2的退出状态为256” 问题原因: 在装hadoop的时候误删了/tmp文 ...

  5. 在Apache下开启SSI配置支持include shtml html和快速配置服务器

    作为前端开发,使用Apache快速搭建服务器极为方便. 1.找到apach安装目录,找到conf目录下 的httpd.conf 使用SSI(Server Side Include)的html文件扩展名 ...

  6. nginx的配置服务器集群,负载均衡

    在server{}前配置服务器ip和端口号 如: upstream local_tomcat { local_tomcat为访问路径,在下面配置服务器ip及端口号,也可以分配权重(weight==?) ...

  7. Linux配置服务器的一点总结

    一.Linux初始化服务 首先搞清楚四个概念: 进程:正在运行的程序,有自己独立的内存空间. 线程:是进程的下属单位,开销较进程小,没有自己独立的内存空间. 作业:由一系列进程组成,来完成某一项任务. ...

  8. linux配置服务器

    梳理一下这次配置服务器的思路. 1,挂载磁盘 Java和neigx上传到根目录下,tomcat放在data目录下,数据库新建文件夹也在data下, 2,配置环境变量 3,nginx修改域名 4,数据库 ...

  9. nodejs 配置服务自启动

    1安装包 输入以下命令,安装需要的包 npm install node-windows -g 2编写自启动js 在目标server.js目录下新建auto_start_nodejs.js文件,将以下j ...

随机推荐

  1. Swift(二)基础部分

    数据类型 Swift 包含了 C 和 Objective-C 上所有基础数据类型.它还增加了 Objective-C 中没有的高阶数据类型比如元组(Tuple) 1.基础类型 Int整形和UInt无符 ...

  2. 全年DDoS攻击分析|知道创宇云安全2018年度网络安全态势报告

    *本报告由知道创宇云安全出品* 数据来源:知道创宇云防御平台 前言 2018年,网络安全领域暗流涌动,攻击趋势不断攀升,T级DDoS攻击多次爆发.数据泄露事件层出不穷.勒索软件大行其道.此外,随着我国 ...

  3. AngularJs 初级入门 学习笔记

    刚学angular, 做一些笔记方便自己翻看. ng-app: 填写模块的名称 ng-init: 初始化数据(一般通过控制器初始化) ng-model: 填写数据模型 ng-bind: 绑定数据模型, ...

  4. BeanUtils组件的使用

    BeanUtils能够使我们更方便的进行javabean的赋值操作,它的底层是反射的原理 主要方法有 copyProperties(Object object,String name,String v ...

  5. 解压速度更快, Zstandard 1.4.1 发布

    zstd 1.4.1 发布了,zstd 又叫 Zstandard,它是一种快速无损压缩算法,主要应用于 zlib 级别的实时压缩场景,并且具有更好的压缩比.zstd 还可以以压缩速度为代价提供更强的压 ...

  6. mysql导入redis

    将mysql中数据库指定表导入redis 如何将mysql中某个数据库中的表数据快速导入redis? 以下将演示将本地127.0.0.1中数据库test中的表t_abc导入本地redis中.步骤如下: ...

  7. json dumps dump区别

    .json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码( ...

  8. [LeetCode 92] Reverse Linked List II 翻转单链表II

    对于链表的问题,根据以往的经验一般都是要建一个dummy node,连上原链表的头结点,这样的话就算头结点变动了,我们还可以通过dummy->next来获得新链表的头结点.这道题的要求是只通过一 ...

  9. maven在eclipse运行命令和calss文件没有更新的问题

    使用Eclipse Maven插件[Run As]-[Maven build]时并未为其指定goal或phase 解决方法:  1.使用Eclipse Maven插件[Run As]-[Maven b ...

  10. 链接数据库模板 DataBaseLinkTool

    一. 1.Dao层 对数据库的底层操作  增删改查 package Dao; import java.sql.Connection; import java.sql.ResultSet; import ...