百度t7 教程 node 初步1

我少写了一篇学习笔记就是 模块化的源码 和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

浏览器访问

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

在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 

后台信息 是: 

我主要想说的是,读取文件的操作也是异步的操作, 所以, 会先执行 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')
	}

});

运行起来

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

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

猜你喜欢

转载自blog.csdn.net/qq_15009739/article/details/82584513
今日推荐