文章包含以下内容:
1.nodejs是什么?
2.什么是模块化?
3.nodejs的三个核心模块
1.nodejs是什么?
概念:Node.js 是一个构建于 谷歌 V8引擎之上的一个Javascript 运行环境
( Node
是
一个运行环境
,作用是让js拥有开发服务端的功能)作用 : 使用js语言开发服务器
查看是否安装了Node.js环境:
(1)win+r打开终端,输入cmd,回车,
(2)在终端,输入 node -v 有版本号,说明安装成功
一旦安装了node,则会自动一并安装
npm
(npm -v)
2.什么是模块化?
模块化:把一个大的文件拆分成很多个小文件,用特定的语法将各个文件(模块)组合到一起
模块化开发:
一个js文件引入到
另一个文件
模块化开发好处:
(1)按需引入,节约资源
(2)避免变量污染
(3)实现业务的分离
3.nodejs的三个核心模块
模块的导入和导出:使用
module.exports={}
导出 ,使用require()
导入
3.1 fs模块
1. readfile读取文件
(1)导入文件模块
语法: const 对象 = require('模块名')
(2)读取文件
语法:对象.readFile(参数1,参数2,参数3)
(
参数1:文件路径
参数2:编码格式 (可选参数,默认为buffer二进制)
参数3:读取回调操作(异步操作)
err:如果读取成功,err为null, 否则读取失败(一般文件路径错误或者找不到文件)
data:读取到的数据
)
// 1.导入
const fs = require('fs')
// 2.使用(文件路径,编码(默认二进制,中文:utf8),参数)
fs.readFile('./data/ccc.txt', 'utf-8', (err, data) => {
if (err) {
console.log(err)
throw err //告诉代码错误的位置
} else {
console.log(data)
}
})
运行如下:
2. writeFile写入文件
(1)导入文件模块
语法: const 对象 = require('模块名')
(2)读取文件
语法:对象.writeFile(参数1,参数2,参数3,参数3)
(
参数1:文件路径参数2:要写入的数据
参数3:编码格式 (可选参数,默认为buffer二进制)
参数4:读取回调操作(异步操作)
err:如果读取成功,err为null, 否则读取失败(一般文件路径错误或者找不到文件)
data:读取到的数据
)
//1.导入模块
const fs = require('fs')
//2.使用模块
fs.writeFile('./data/ddd.txt', '写入模块的代码', 'utf-8', (err) => {
if (err) {
console.log(err);
} else {
console.log('写入成功');
}
})
运行如下:
3.2 path路径模块
(1)导入文件模块
语法: const 对象 = require('模块名')
(2)使用文件
1.获取一个文件的拓展名
不关心此路径文件在不在, 就是处理这个字符串。 获取.后面的部分可以知道这个文件格式 ( 包含 . )
console.log(path.extname('aaa.html'))
console.log(path.extname('aaa.css'))
console.log(path.extname('./data/111.png'))
2.拼接相对路径, 使用join方法
把多个字符串按照路径的方式拼接起来
console.log(path.join('aaa', 'bbb'))
3.拼接绝对路径
默认从磁盘根目录开始拼接出完整的路径
console.log(path.resolve('aaa.html'))
4.获取当前文件所在的绝对路径
console.log(__dirname)
拓展:__dirname和path.join()可以一起应用拼接出完整的路径,相当于path.resolve()
console.log(path.join(__dirname, 'bbb'))
console.log(path.resolve('bbb'))
以上运行结果如下:
3.3 http模块(搭建服务器)
(1)导入文件模块
语法: const 对象 = require('模块名')
(2)创建服务器
语法:let 服务器 = 对象.createServer((req, res) => {
})
参数:回调函数
req: request 客户端请求对象
res:response 服务端响应对象(3)启动服务器
语法:服务器.listen(3000, () => {
console.log('服务器开启成功')
})
(第一个参数:端口号 一般1000-60000之间
第二个参数:ip地址 默认不写 就是本地ip
第三个参数:成功回调)
//导入文件模块
const http = require('http')
// 创建服务器
let app = http.createServer((req, res) => {
console.log(req.url, decodeURI(req.url));
})
// 开启服务器
app.listen(3000, () => {
console.log('服务器开启成功')
})
http(服务器)根据不同请求响应不同数据
需求:
如果请求路径是/index ,响应 index
如果请求路径是/login,响应 登录页
res.writeHead(200, {
'Content-Type': 'text/plain;charset=utf-8'
})设置响应头解决中文乱码问题: 响应头作用:告诉浏览器我返回给你的数据是什么类型
参数1:状态码
参数2:响应头
(代码和运行结果如下)
// 引入http文件模块
const http = require('http')
// 创建服务器
const app = http.createServer((req, res) => {
if (req.url === '/index') {
res.writeHead(200, {
'Content-Type': 'text/plain;charset=utf-8'
})
res.end('index')
} else if (req.url === '/login') {
res.writeHead(200, {
'Content-Type': 'text/plain;charset=utf-8'
})
res.end(JSON.stringify({ name: 'xiao', age: 18 }))
} else {
res.end('not found')
}
})
// 开启服务器
app.listen(3000, () => {
console.log('服务器开启成功');
})
结果:(对于代码中的res.end()里面的内容)
图1:
图2:
图3: