node01
---恢复内容开始---
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 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的更多相关文章
- 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 ...
- 问题:执行[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 ...
- Node初始以及环境搭建(Node01)
1. 相关概念 •什么是JavaScript? •一种遵守ECMAScript标准的脚本语言 •最初只能运行在浏览器端 •浏览器中的 JavaScript 可以做什么? •操作DOM:表单验证.动画 ...
- 集群CLUSTER种类介绍
一.集群CLUSTER 介绍 计算机集群Cluster,可以把多台计算机 连接在一起使用,平分资源或互为保障.其好处不言而喻,群集中的每个计算机被称为一个节点,节点可添加可减少,在这些节点之上虚拟出一 ...
- Putty部署tomcat
webserver下是tomcatprojects放置项目源代码webapp下放置项目 1. 输入地址栏 登入进去32 192.168.1.32 端口号22 2.进入projects文件夹 cd pr ...
- shell常用命令归类整理
shell 命令整理 bash shell 含有许多功能,因此有许多可用的命令:本文档仅罗列了一些常用命令及其使用频率较高的参数.#本文档仅罗列了一些常用命令及其使用频率较高的参数.#vers ...
- Hadoop安装——如何修改端口冲突
在一个集群中,尽管是多用户,但是端口是公用的,存在冲突的可能.如果另一个用户已经采用默认配置安装了hadoop,那么当前用户再安装hadoop时,必然会产生端口的冲突.在配置自己的hadoop时,可以 ...
- Kafka Shell基本命令(包括topic的增删改查)
转载请注明出处:http://www.cnblogs.com/xiaodf/ 创建kafka topic 查看所有topic列表 查看指定topic信息 控制台向topic生产数据 控制台消费topi ...
- 网络爬虫(java)
陆陆续续做了有一个月,期间因为各种技术问题被多次暂停,最关键的一次主要是因为存储容器使用的普通二叉树,在节点权重相同的情况下导致树高增高,在进行遍历的时候效率大大降低,甚至在使用递归的时候导致栈 ...
随机推荐
- (Linux)初探cmake .和make命令
cmake编译OpenCV工程 首先我们看到文件夹中有一cpp文件,CMakeLists.txt文件和一张图片 首先进行cmake .命令 接着进行make命令 . 然后就得到了可执行文件,也就是说可 ...
- python3字符串
Python3 字符串 Python字符串运算符 + 字符串连接 a + b 输出结果: HelloPython * 重复输出字符串 a*2 输出结果:HelloHello [] 通过索引获取字符串中 ...
- Java基础14-缓冲区字节流;File类
作业解析 阐述BufferedReader和BufferedWriter的工作原理, 是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明? 答: BufferedReader对Rea ...
- Linux中普通用户配置sudo权限(带密或免密)
配置步骤如下: 1.登陆或切换到root用户下: 2.添加sudo文件的写权限,命令是:chmod u+w /etc/sudoers 3.编辑sudoers文件:vi /etc/sudoers 找到这 ...
- Js获取客户端用户Ip地址
利用搜狐查询接口查询Ip地址: <!DOCTYPE html> <html> <head> <meta charset="utf-8" / ...
- VUE项目快速构建
IDE :VScode 1.新建项目文件夹 ctrl+~ 调出命令板,/IDE找到当前文件夹右键 点击‘在命令提示符中打开’ 安装 node:官网(https://nodejs.org/en/d ...
- laravel 运行错误
全局相关 1 2 3 4 5 6 7 8 9 10 11 12 13 14 php artisan:显示详细的命令行帮助信息,同 php artisan list php artisan –help: ...
- Java类的继承与方法调用的一个小问题
public class Father { protected void server(int i){ switch (i){ case 1: methodone(); break; case 2: ...
- ubuntu中vi下删除键和上下左右键的异常解决
解决办法: 卸载旧的vim apt-get remove vim-common 安装新的vim apt-get install vim tips:可是我发现,无论卸载还是安装都是版本为(2 ...
- gitlab使用过程中的需求与解决
序言 在git使用过程中发现指令实在太多,就算记忆后不长用的话很快也会忘记掉,所以编写本文的初衷是为了记录在使用git指令的过程中所遇到的需求与解决方法,毕竟使用git的需求也就那么一些,范围不大,所 ...