初学node.js

一. 什么是node.js

html, 骨架
css, 样式
js, 交互的行为
浏览器中的javascript由几部分组成
js核心语法
webapi(DOM操作, BOM操作, AJAX操作)

思考: 为什么javascript可以在浏览器中被执行
.因为有解析引擎
思考: 为什么说, javascript可以操作Dom和Bom
待执行的js代码调用webAPI, 交给解析引擎, (每个浏览器都内置了操作DOM和BOM的函数)

什么是js代码的运行环境
浏览器->v8引擎->内置的函数

node.js就是一个基于谷歌浏览器v8引擎的js代码的运行环境

二. 可以用node.js来做什么

注意, node.js不能直接调用浏览器的内置API,

那么node,js有, 可以做做什么呢

三. node.js中javascript的组成部分

有内置模块, 有第三方模块

node -V: 查看node.js的版本
node js文件的路径: 运行文件也就是执行代码

四. node.js中的三个内置模块

4.1 fs模块读写操作文件

fs.readFile()方法; 用来读取指定文件中的内容
fs.writeFile()方法: 用来向指定的文件中写入内容

要先导入这个模块,
const fs = require(‘fs’)

fs从哪里来, 安装node.js时, 安装的内置API, 引入就可以使用

三个参数: path必选, options可选, callback必选
文件的路径字符串
可选参数, 表示什么编码格式
必选, 文件读取完成之后, 通过回调函数拿到读取的结果

const fs = require(‘fs’)
fs.readFile(‘./file/12.txt’, ‘utf8’, function(err, dataStr) {
console.log(err)
console.log(‘--------’)
console.log(dataStr)
})

如果读取成功, err的值为null, dataStr的值就是文件内容
如果读取失败, err的值为错误对象, dataStr的值为undefined

const fs = require('fs')
fs.readFile('./file/testfile.txt','utf8',  function(err, dataStr){
	//console.log(err)
	//console.log('--------')
	//console.log(dataStr)
	if(err){
		console.log("file readed fail")
	}else{
		console.log(dataStr)
		let StrArr = dataStr.split(" ")
		let newStrArr = []
		StrArr.forEach(item=>{
			newStrArr.push(item.replace("=",":"))
		})
		let newStr = newStrArr.join("\r\n")
		fs.writeFile('./file/12.txt',newStr, function(err){
			if(err){
				console.log("file writeed fail")
			}else{
				//console.log("文件写入成功")//是乱码
				console.log("file writed success")
			}
		})
	}
})

注意
这里有一个fs模块的动态拼接问题,
由示例可知,不论是写入文件还是读取文件,都是使用的./获取当前路径, 如果这个当前路径不是当前的node命令执行的路径, 很显然fs对象是不能正常工作的.

解决方法就是提供一个完整路径.
但是移植性非常差

const fs = require('fs')
fs.readFile('C:\\Users\\lyd\\Documents\\lea\\file\\testfile.txt','utf8',  function(err, dataStr){
	//console.log(err)
	//console.log('--------')
	//console.log(dataStr)
	if(err){
		console.log("file readed fail")
	}else{
		console.log(dataStr)
		let StrArr = dataStr.split(" ")
		let newStrArr = []
		StrArr.forEach(item=>{
			newStrArr.push(item.replace("=",":"))
		})
		let newStr = newStrArr.join("\r\n")
		fs.writeFile('C:\\Users\\lyd\\Documents\\lea\\file\\12.txt',newStr, function(err){
			if(err){
				console.log("file writeed fail")
			}else{
				//console.log("文件写入成功")//是乱码
				console.log("file writed success")
			}
		})
	}
})

node提供了一个叫做__dirname
时刻监听node命令的执行文件的所在目录

const fs = require('fs')
fs.readFile(__dirname+'/file/testfile.txt','utf8',  function(err, dataStr){
	//console.log(err)
	//console.log('--------')
	//console.log(dataStr)
	if(err){
		console.log("file readed fail")
	}else{
		console.log(dataStr)
		let StrArr = dataStr.split(" ")
		let newStrArr = []
		StrArr.forEach(item=>{
			newStrArr.push(item.replace("=",":"))
		})
		let newStr = newStrArr.join("\r\n")
		fs.writeFile(__dirname+'/file/12.txt',newStr, function(err){
			if(err){
				console.log("file writeed fail")
			}else{
				//console.log("文件写入成功")//是乱码
				console.log("file writed success")
			}
		})
	}
})

4.2 使用path模块来处理路径

fs -> path
node提供的
有属性和方法
专门用来处理用户对路径的需求

path.join(‘多个’,‘路径’,‘片段’,‘拼接’,‘到’,‘一起’)
其实和拼接字符串一样的道理, 只不过会自动处理./, 所以更推荐这种

path.basename(): 用来从路径字符串中, 将文件名解析出来.

导入
和fs模块类似
const path = require(‘path’)

path.join实例
../会抵消前面的路径
const pathDemo = path.join(‘/a’, ‘/b/c’, ‘…/’, ‘./d’, ‘e’)
\a\b\d\e

const path = require('path')
const pathDemo = path.join('/a', '/b/c', '../', './d', 'e')
console.log(pathDemo)

//获取文件路径
//const filepath = __dirname+'/file/testfile.txt'
const filepath = path.join(__dirname,'./file/testfile.txt')
console.log(filepath)
//获取文件名全名
const fileFullName = path.basename(filepath)
console.log(fileFullName)
//获取文件名没有后缀
const filenamewithou = path.basename(filepath, '.txt')
console.log(filenamewithou)

4.3 使用http模块写一个基本的web服务器

http模块就是官方提供的, 用来创建web服务的模块
http.createServer方法
就能很方便的将一台普通的电脑变成一台服务器

导入

const http = require('http')

创建web服务器实例

const serve = http.createServer()

为服务器实例绑定request事件, 即可监听网络请求

//监听网络请求, 触发request事件, 调用处理函数
serve.on('request', (req, res) => {
	console.log('welcome')
})
调用listen(端口号, cd回调方法)方法来启动web服务器
server.listen(80, () => {
	console.log('serve is running at  http://127.0.0.1')
})

req就是请求对象
req.url就是请求的路径
req.method就是请求的方式
const str = 'your req url is ‘+req.url+’, and your req method is '+req.method
console.log(str)

PS C:\Users\lyd\Documents\lea\webdemo> node .\webtest.js
serve is running at  http://127.0.0.1
welcome
your req url is /, and your req method is GET
welcome
your req url is /, and your req method is POST


在这里插入图片描述
res是响应对象
res.end方法
向客户端发送指定的内容, 并结束这一次请求的处理过程
res.end(‘thank you’)
在这里插入图片描述
//设置响应头, 解决中文乱码的问题
res.setHeader(‘Content-Type’,‘text/html; charset=utf-8’)

于是我们可以根据url做各种判断, 最后返回各种各样的内容

将url请求路径映射为磁盘地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值