---恢复内容开始---

1、node初体验

安装完成node,写好相应的js代码后,在cmd中node 文件名即可完成编译执行过程。

2、尝试使用node搭建一个简单服务器

//引入http模块
const http = require('http')
//创建服务器
let server = http.createServer(function (req,res) {//默认有两个参数,请求与相应
res.write('welcome')
res.end()//终止响应
})
//监听及设置端口
server.listen(8080,function(){
console.log('server is running')
})

通过打印上述代码中的req对象,有用的是

.url 请求的资源地址

3、文件读写:

1)使用模块:fs

2)读取操作

const fs = require('fs')

fs.readFile('a.txt',function(err,data){
if(err){
console.log(err)
}else{
//将二进制数据转换为字符串
console.log(data.toString())
}
})

3)写入操作

const fs = require('fs')

fs.readFile('a.txt',function(err,data){
if(err){
console.log(err)
}else{
//将二进制数据转换为字符串
console.log(data.toString())
}
}) //writeFile(fileName,data,callback)
fs.writeFile('b.txt','hello,b!',function(err){
console.log(err)
})

4)结合服务器一同使用

//引入http模块
const http = require('http')
const fs = require('fs')
//创建服务器
let server = http.createServer(function (req,res) {//默认有两个参数,请求与相应
let file=`./www${req.url}`//进行目标文件路径的拼接
fs.readFile(file,function(err,data){
if(err){
res.end('读取失败哦')
}else{
res.end(data)
}
})
})
//监听及设置端口
server.listen(8080,function(){
console.log('server is running')
})

要注意的是,不论前台是按什么方式发起请求,form/ajax/jsonp,

后台的处理方式都是相同的,请求方式才有影响

4、服务器对get的处理

1)使用queryString模块

const qs=require('querystring')
qs.parse('aquerystring')//将查询字符串转为json对象
 
2)使用url模块
将帮助我们解析url地址
.parse(url,true)
将返回一个对象,包含请求参数,端口等各种信息
给了true的话query将被自动解析为json,同时也会解析pathname
const http = require('http')
const qs=require('querystring')
const urlLib=require('url') //创建服务器
let server = http.createServer(function (req,res) {//默认有两个参数,请求与相应
let obj=urlLib.parse(req.url,true)
let url=obj.pathname
let query=JSON.stringify(obj.query)
console.log(`${url}=====${query}`)
res.end('test page')
})
//监听及设置端口
server.listen(8080,function(){
console.log('server is running')
})

5、服务器对post的处理

const http = require('http')
const qs = require('querystring') //创建服务器
let server = http.createServer(function (req, res) {//默认有两个参数,请求与相应
let str = ''//用于存储发送过来的数据,不严谨
//由于通过post发送的数据可能很大,因此根据数据量大小采取分段多
//多次发送的策略
//data,在有一段数据到达后触发,可能触发多次
req.on('data', function (data) {
str += data
})
//end,数据全部到达后触发,仅触发一次
req.on('end', function () {
let postData = qs.parse(str)
console.log(postData)
res.end('请求完成')
})
})
//监听及设置端口
server.listen(8080, function () {
console.log('server is running')
})

6、阶段性总结,写一个比较完整的服务器

const http = require('http')
const qs = require('querystring')
const fs = require('fs')
const urlLib = require('url') //创建服务器
let server = http.createServer(function (req, res) {//默认有两个参数,请求与相应
//get
let obj=urlLib.parse(req.url,true)
let url=obj.pathname
const GET=obj.query //post
let str=''
req.on('data',function (data) {
str+=data
})
req.on('end',function(){
const POST=qs.parse(str)
}) //文件请求
let file='./www'+url
fs.readFile(file,function(err,data){
if(err){
res.end('404')
}else{
res.end(data)
}
}) })
//监听及设置端口
server.listen(8080, function () {
console.log('server is running')
})

node01的更多相关文章

  1. Centos7-搭建hdfs启动时报java.net.BindException: Problem binding to [node01:9000] java.net.BindException异常

    今天用阿里的服务器搭了个伪分布式的HDFS,格式化后启动hdfs,发现只有dataNode启动了,查看启动日志发现异常: 2019-01-22 15:54:50,507 FATAL org.apach ...

  2. 问题:执行[root@node01 hadoop-2.6.0-cdh5.14.0]# sbin/start-dfs.sh 后,namenode未启动

    执行[root@node01 hadoop-2.6.0-cdh5.14.0]# sbin/start-dfs.sh 后,namenode未启动. 解决步骤: 查看/export/servers/had ...

  3. Node初始以及环境搭建(Node01)

    1. 相关概念 •什么是JavaScript? •一种遵守ECMAScript标准的脚本语言 •最初只能运行在浏览器端 •浏览器中的 JavaScript 可以做什么? •操作DOM:表单验证.动画 ...

  4. 集群CLUSTER种类介绍

    一.集群CLUSTER 介绍 计算机集群Cluster,可以把多台计算机 连接在一起使用,平分资源或互为保障.其好处不言而喻,群集中的每个计算机被称为一个节点,节点可添加可减少,在这些节点之上虚拟出一 ...

  5. Putty部署tomcat

    webserver下是tomcatprojects放置项目源代码webapp下放置项目 1. 输入地址栏 登入进去32 192.168.1.32 端口号22 2.进入projects文件夹 cd pr ...

  6. shell常用命令归类整理

    shell 命令整理     bash shell 含有许多功能,因此有许多可用的命令:本文档仅罗列了一些常用命令及其使用频率较高的参数.#本文档仅罗列了一些常用命令及其使用频率较高的参数.#vers ...

  7. Hadoop安装——如何修改端口冲突

    在一个集群中,尽管是多用户,但是端口是公用的,存在冲突的可能.如果另一个用户已经采用默认配置安装了hadoop,那么当前用户再安装hadoop时,必然会产生端口的冲突.在配置自己的hadoop时,可以 ...

  8. Kafka Shell基本命令(包括topic的增删改查)

    转载请注明出处:http://www.cnblogs.com/xiaodf/ 创建kafka topic 查看所有topic列表 查看指定topic信息 控制台向topic生产数据 控制台消费topi ...

  9. 网络爬虫(java)

       陆陆续续做了有一个月,期间因为各种技术问题被多次暂停,最关键的一次主要是因为存储容器使用的普通二叉树,在节点权重相同的情况下导致树高增高,在进行遍历的时候效率大大降低,甚至在使用递归的时候导致栈 ...

随机推荐

  1. (Linux)初探cmake .和make命令

    cmake编译OpenCV工程 首先我们看到文件夹中有一cpp文件,CMakeLists.txt文件和一张图片 首先进行cmake .命令 接着进行make命令 . 然后就得到了可执行文件,也就是说可 ...

  2. python3字符串

    Python3 字符串 Python字符串运算符 + 字符串连接 a + b 输出结果: HelloPython * 重复输出字符串 a*2 输出结果:HelloHello [] 通过索引获取字符串中 ...

  3. Java基础14-缓冲区字节流;File类

    作业解析 阐述BufferedReader和BufferedWriter的工作原理, 是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明? 答: BufferedReader对Rea ...

  4. Linux中普通用户配置sudo权限(带密或免密)

    配置步骤如下: 1.登陆或切换到root用户下: 2.添加sudo文件的写权限,命令是:chmod u+w /etc/sudoers 3.编辑sudoers文件:vi /etc/sudoers 找到这 ...

  5. Js获取客户端用户Ip地址

    利用搜狐查询接口查询Ip地址: <!DOCTYPE html> <html> <head> <meta charset="utf-8" / ...

  6. VUE项目快速构建

    IDE  :VScode 1.新建项目文件夹 ctrl+~   调出命令板,/IDE找到当前文件夹右键 点击‘在命令提示符中打开’ 安装 node:官网(https://nodejs.org/en/d ...

  7. laravel 运行错误

    全局相关 1 2 3 4 5 6 7 8 9 10 11 12 13 14 php artisan:显示详细的命令行帮助信息,同 php artisan list php artisan –help: ...

  8. Java类的继承与方法调用的一个小问题

    public class Father { protected void server(int i){ switch (i){ case 1: methodone(); break; case 2: ...

  9. ubuntu中vi下删除键和上下左右键的异常解决

    解决办法: 卸载旧的vim apt-get remove vim-common     安装新的vim apt-get install vim   tips:可是我发现,无论卸载还是安装都是版本为(2 ...

  10. gitlab使用过程中的需求与解决

    序言 在git使用过程中发现指令实在太多,就算记忆后不长用的话很快也会忘记掉,所以编写本文的初衷是为了记录在使用git指令的过程中所遇到的需求与解决方法,毕竟使用git的需求也就那么一些,范围不大,所 ...