欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

百度t7 教程 node 初步1

程序员文章站 2022-06-30 19:54:59
...

我少写了一篇学习笔记就是 模块化的源码 和Promise源码 和generator 生成器的源码

老师讲的是不错,可是我先放一放那个,因为那个似乎很难的样子, (逃避)

 

好了,这篇是node 最基础的部分,因为石川大神说, 后期会细致 讲 Node, 反正也就是 10 天后,我也不着急

学习的方式,一种是迭代式,一种是,一次性搞定, 我个人觉得还是迭代式好,不扯了,开始:

服务器端代码

index.js

//1 拿到http 网络模块
let http  = require('http')

// 2得到一个服务器
let server = http.createServer(function(request,response){
	// 4 , request response 感觉和 java 中 servlet 差不多!
	// 其实就一样!
	//当请求来临时,回调该方法, 
	// Node 搭建小型服务器,很轻松 
	console.log('connect success')
	//向前台打印, hello node ,aciton is power!!
	let msg = ' hello node ,aciton is power!!'
	response.write(`我这里是测试es6 的模板字符串哈哈${msg}`)
	response.end()
})

	
// 3监听 3000 端口
server.listen(3000)

在当前目录下,打开cmd , 运行 node  index.js

百度t7 教程 node 初步1

浏览器访问

百度t7 教程 node 初步1

 

大家可以清晰的看到,从访问的请求,到内容的获取都走通过了!

在index.js 中,总共三步, 1, 加载网络模块 http 模块  2, 创建个小型服务器 3, 让服务器监听3000 端口(这里可随意

一般超过1024 )

端口的概念概念都懂吧,你连接一台电脑, 肯定要走特定的端口,想mysql 占据 3306, tomcat 8080 , localhost 80

啥ftp 21 还是22 ,我不知道,没用过,所以不清楚,反正不是21 就22

一旦有连接进来,index.js 中 就会走 对应的回调方法,将request 和 response 对象传递进去

在回调方法中,可以用

response.write('xxxx')
response.end();

来像浏览器输出内容信息, 我是说内容信息!

行吧,我们继续,现在我想 每当你访问时,我就根据你的访问去获取对应的文件,取出里面的内容给浏览器咋写呢?试试看!

let http  = require('http')
let fs = require('fs')

// 2得到一个服务器
let server = http.createServer(function(request,response){	
	let url = 	request.url;	
	//console.log(url)
	// url 显示是/xxxx
	if(url==='/a'){
		response.write('a')
	}else if(url=='/b'){
		response.write('b')
	}
	response.end();
})

// 3监听 3000 端口
server.listen(3000,function(){
	console.log('监听端口成功.....')
})

当浏览器地址为 localhost:3000/a 时, 内容区会显示 a 

 当浏览器地址为localhost:3000/b 时,内容区会显示b 

好,下面我们就继续改进了,在改进之前先去测试下,我们的fs 模块

现在修改如下:

let http  = require('http')
let fs = require('fs')

// 2得到一个服务器
let server = http.createServer(function(request,response){	
	let url = 	request.url;	
	//console.log(url)
	// url 显示是/xxxx
	if(url==='/a'){
		response.write('a')
		//  在这里读取文件 1.txt
		fs.readFile('file/1.txt',function(err,data){
			if(err){
				// 如果,有错误,则,发送一个 错误码!
				response.writeHeader(404)
				response.write('服务器端有错误')
				response.end();

			}else{
				console.log(data)
				let result = data.toString();
				response.write(result)
				response.end()
			}

		})


	}else if(url=='/b'){
		response.write('b')
	}
	response.end();
})

	
// 3监听 3000 端口
server.listen(3000,function(){
	console.log('监听端口成功.....')
})

浏览器访问地址为: http://localhost:3000/a

结果只会显示 a 

后台信息 是: 

百度t7 教程 node 初步1

 

我主要想说的是,读取文件的操作也是异步的操作, 所以, 会先执行 response.end();

这点要明确! 读取文件非常简单,就是用 文件模块 fs 

以上代码稍微改下就正常了:

let server = http.createServer(function(request,response){	
	let url = 	request.url;	
	//console.log(url)
	// url 显示是/xxxx
	if(url==='/a'){
		response.write('a')
		//  在这里读取文件 1.txt
		fs.readFile('file/1.txt',function(err,data){
			if(err){
				// 如果,有错误,则,发送一个 错误码!
				response.writeHeader(404)
				response.write('服务器端有错误')
				response.end();

			}else{
				console.log(data)
				let result = data.toString();
				response.write(result)
				response.end()
			}

		})


	}else if(url=='/b'){
		response.write('b')
		response.end()
	}

})

response.end() 写在回到函数的里面, 行吧,读取文件

fs.readFile('file/1.txt',function(err,data){
			if(err){
				// 如果,有错误,则,发送一个 错误码!
				response.writeHeader(404)
				response.write('服务器端有错误')
				response.end();

			}else{
				console.log(data)
				let result = data.toString();
				response.write(result)
				response.end()
			}

		})

读取文件,fs.read(路径,回调函数)

其中回调函数,会 有两个参数, 一个err ,一个是data (二进制数据)

若读取正确,则err ==null data 不为空

data 是二进制数据,因为,有音频,视频, 流的操作都是二进制,这点和java 中的流概念一样,可见

语言之间都是相同的,只是语法不用罢了!

 

好下面就是测试 写入文件的操作了!

writeFile.js

let fs = require('fs')

fs.writeFile('file/2s.txt','这是我写入的数据,真的很牛叉',function(err){
	if(err){
		console.log('写入失败')
	}else{
		console.log('write Success')
	}

});

运行起来

百度t7 教程 node 初步1

 

它会在对应的路径下,新建文件,并且把内容写进去!

也就是说 file/2s.txt ,你也可以写成 file/xxx.txt ,那么它就会新建 xxx.txt 文件

 

相关标签: node