Node.js学习笔记

目录

一、了解

1、是什么

2、作用

3、概括

二、初体验(REPL)

三、模块

有哪些模块

1、自定义模块

2、第三方模块

3、内置Node.js模块 

1、os(操作系统信息),path(操作文件路径),url(解析URL)模块

2、fs模块,读取静态页面内容

3、http 模块,用户可以通过浏览器访问 js 代码


一、了解

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退出)
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值