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";
}
}
nodejs 配置服务器的更多相关文章
- 安装nodeJs静态服务器(NodeJs Express MVC 框架)
安装 NodeJs Express MVC 框架 新建项目文件夹 打开cmd 执行以下操作: 一.使用Express框架 1)安装express3 $: npm install -g ex ...
- Centos 配置服务器
Centos 配置服务器 (配置服务器 除了Git Bash Here 还可以安装Xshell 网址:https://xshell.en.softonic.com/ Wincp 网址:https: ...
- nodejs配置及cmd常用操作
一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...
- 配置服务器有错/usr/libexec/gconf-sanity-check-2的退出状态为256
问题描述: CentOS启动的时候报如下错误:“配置服务器有错/usr/libexec/gconf-sanity-check-2的退出状态为256” 问题原因: 在装hadoop的时候误删了/tmp文 ...
- 在Apache下开启SSI配置支持include shtml html和快速配置服务器
作为前端开发,使用Apache快速搭建服务器极为方便. 1.找到apach安装目录,找到conf目录下 的httpd.conf 使用SSI(Server Side Include)的html文件扩展名 ...
- nginx的配置服务器集群,负载均衡
在server{}前配置服务器ip和端口号 如: upstream local_tomcat { local_tomcat为访问路径,在下面配置服务器ip及端口号,也可以分配权重(weight==?) ...
- Linux配置服务器的一点总结
一.Linux初始化服务 首先搞清楚四个概念: 进程:正在运行的程序,有自己独立的内存空间. 线程:是进程的下属单位,开销较进程小,没有自己独立的内存空间. 作业:由一系列进程组成,来完成某一项任务. ...
- linux配置服务器
梳理一下这次配置服务器的思路. 1,挂载磁盘 Java和neigx上传到根目录下,tomcat放在data目录下,数据库新建文件夹也在data下, 2,配置环境变量 3,nginx修改域名 4,数据库 ...
- nodejs 配置服务自启动
1安装包 输入以下命令,安装需要的包 npm install node-windows -g 2编写自启动js 在目标server.js目录下新建auto_start_nodejs.js文件,将以下j ...
随机推荐
- 08 Python之内存管理
python中的内存管理,从浅层次来说,可以分为3个方面来讲: 1,引用计数: python中引用计数,为了跟踪内存的对象 当创建对象的时候即被引用了,当对象不再被使用时,即某个对象的引用计数为0,它 ...
- yarn的安装步骤
yarn依赖npm,是npm中的一个包 https://www.npmjs.com/package/yarn 1.安装 npm i -g -yarn 2.测试是否安装成功 yarn --vresion ...
- python 出现OSError: [Errno 8] Exec format error的原因
访问 .py文件的网页的时候会出现 Exec format error的问题, 一般情况下是由于基于Unix(Linux,Mac OS)系统下的问题,办法如下 1 .chmod +x filenam ...
- linux进程调度的算法
linux进程的调度算法 这节我们来学习一下linux进程的优先级 linux进程的优先级 进程提供了两种优先级,一种是普通的进程优先级,第二个是实时优先级,前者使用SCHEED_NORMAL调度策略 ...
- 斐波那契数列 Java 不同的实现方法所需要的时间比较
# 首先我们直接看一个demo以及他的结果 public class QQ { public static void main(String[] args) throws ParseException ...
- 求二叉搜索树的第k小的节点
题目描述: /** * 给定一棵二叉搜索树,请找出其中的第k小的结点. * 例如, (5,3,7,2,4,6,8)中, * 按结点数值大小顺序第三小结点的值为4. * 这是层序遍历: * 5 * 3 ...
- flutter 学习路上碰到的错误问题。
决定还是把碰到的问题进行简单记录吧 19.8.14 错误日志: type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subty ...
- VCL界面开发必备装备!DevExpress VCL v19.1.5你值得拥有
DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包.所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速 ...
- Tomcat部署多个Springboot项目报错 InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat
在一个tomcat服务器下部署了多个采用阿里druid作为数据连接池,结果启动报错.原因是不能在一个tomcat服务器下不能直接部署多个druid作为数据连接池的项目,需要配置. 解决办法: 在spr ...
- 【leetcode】801. Minimum Swaps To Make Sequences Increasing
题目如下: We have two integer sequences A and B of the same non-zero length. We are allowed to swap elem ...