目录
1、os(操作系统信息),path(操作文件路径),url(解析URL)模块
一、了解
1、是什么
以前:JS 代码写好,要通过 HTML 引入浏览器解析运行。
现在:JS 代码写好,直接通过 Node 软件解析运行。
Node.js 是 JavaScript 运行环境,可以解析 JS 代码。
2、作用
让 JavaScript 成为与 PHP、Python 等平起平坐的语言。
不支持 Dom,Bom。
主要用于服务器端开发,可以使用 JavaScript 编写服务器端的应用程序。
提供了丰富的 HTTP 模块和其他网络模块,可以方便地创建 Web 应用。
3、概括
前端脱离后端,直接通过 JS 写项目、接口、爬虫、桌面应用、聊天系统。
二、初体验(REPL)
- R read 读取
- E eval 执行
- P print 打印
- L loop 循环
两下(Ctrl+C) 退出
REPL 是一个交互式的 Node.js 环境,可以在命令行中输入 JavaScript 代码并立即执行它们。
REPL 允许在不编写完整脚本的情况下快速测试 JavaScript 代码的行为和功能。
启动 REPL:在终端键入 node ,然后按 Enter(会看到“>”
)
示例:打开小黑窗
C:\Users\17378>node
Welcome to Node.js v20.11.1.
Type ".help" for more information.
> console.log('hello')
hello
undefined
>
(To exit, press Ctrl+C again or Ctrl+D or type .exit)
>
C:\Users\17378>
vscode 示例:新建 Nodejs 文件夹 > test.js > 写入测试语句 console.log('hello')
ctrl+`(Tab上面的键)在 vscode 里打开终端 > 输入node test.js
三、模块
使用 node.js 编写应用程序主要使用 ECMAscript 和模块。
- ECMAscript:js 语言的标准,规定了 js 的编程语法和基础核心知识(如规定 js 如何声明遍历、判断、循环等)。
- 模块:官方内置模块(os/url/fs/http)、第三方模块(moment/mysql)、自定义模块。
模块规范 CommonJS
- 一个文件就是一个模块(模块就是文件)。
- 通过 exports 和 module.exports 来导出模块中的成员(声明模块中那些功能可以使用)。
- 通过 require 来加载模块。
有哪些模块
1、自定义模块
// 导出成员
exports.属性名 = 值 (注:exports 和 module.exports 互为别名)
// 引入模块
var 变量名 = require ('./模块文件‘)
2、第三方模块
可以通过 npm(Node 包管理器)安装:
1. Express:最流行的 Node.js Web 应用程序框架,简化了构建 Web 服务器和 API 的过程。
2. Socket.io:用于实时 Web 应用程序的实时双向通信库,支持 WebSocket 和轮询等机制。
3. Mongoose:MongoDB 的对象模型工具,简化了与 MongoDB 数据库的交互。
4. Async:提供了一套功能丰富的异步工具,用于处理异步操作,如串行和并行执行、控制流程、异常处理等。
5. Request:用于发送 HTTP 请求的简单而强大的库,支持多种 HTTP 功能,如 URL 和查询参数解析、Cookie 管理、代理等。
6. Lodash:提供了一套实用的 JavaScript 实用工具库,包括数组、集合、函数、对象操作等。
7. Axios:基于 Promise 的 HTTP 客户端,可以用于浏览器和 Node.js。
8. Joi:强大的对象模型验证库,用于验证和转换 JavaScript 对象。
9. Moment:用于解析、验证、操作和格式化日期和时间的库。
10. jsonwebtoken:用于生成和验证 JSON Web Tokens(JWT)的库,用于实现身份验证和授权。
11. Passport:用于身份验证的中间件,支持多种身份验证策略,如本地验证、OAuth、OpenID 等。
12. Socket.io-client**:Socket.io 的客户端库,用于在浏览器和 Node.js 中与 Socket.io 服务器通信。
13. Nodemailer:用于发送电子邮件的库,支持 SMTP、发送附件等功能。
14. Nodemon:监视 Node.js 应用程序文件的更改,并自动重启服务器,用于开发时的热重载。
15. Cheerio:用于在服务器上使用类似 jQuery 的语法来解析和操作 HTML 的库。
3、内置 Node.js 模块
引入官方模块 --> 调用成员模块
1、os(操作系统信息),path(操作文件路径),url(解析 URL)模块
2、fs模块,读取静态页面内容
1、写入文件
// 1.引入官方的fs模块
var fs=require('fs')
// 2.调用成员writeFile创建文件
fs.writeFile('./a.txt','hello',function(err){
// err 有数据 则写入失败
// err 没数据 则写入成功
if(err){
console.log(err);
return;
}
console.log('没问题,写入成功');
})
2、读取文件
// 1.引入官方的fs模块
var fs = require('fs')
// 2.调用fs模块的成员 readFile 来读取 a.txt
// fs.readFile('./a.txt',function(err,data){ 没有指定编码
fs.readFile('./a.txt', 'utf8', function (err, data) {
// err 为真 则读取失败(如文件不存在)
if (err) {
console.log(err);
return;
}
console.log(data);// data就是a.txt中的数据
})
3、http 模块,用户可以通过浏览器访问 js 代码
根据网址的不同,响应不同的页面
响应中文需设置请求头,否则乱码
// 1.引入http模块
var http = require('http');
// 2.创建web服务器对象(请求和响应)
var server = http.createServer();
// 3.监听请求 -> 响应内容
server.on('request', function (request, response) {
// console.log(request.url);// 获取用户请求路径
// console.log('接收到了用户请求');
// response是一个对象;end方法用来响应用户数据
// response.end('hello,Donna');
// 根据网址的不同响应不同的页面
// 登录页响应this is login;首页响应this is index
// if (request.url == '/') {
// response.end('this is index');
// } else if (request.url == '/login') {
// response.end('this is login');
// } else {
// response.end('404');
// }
response.setHeader('content-type','text/html;charset=utf-8');//此行可解决乱码
response.end("<a href='http://nn.com'>点击进入我的世界</a>");
})
// 4.启动服务
server.listen(8080, function () {
console.log('服务器启动成功,通过:http://localhost:8080')
})
// 注意:
// 1.有请求一定要有响应
// 2.每次修改后记得重启服务(ctrl+c退出)