Node.js学习笔记

Node.js

Node.js

一、什么是Node.js?

Node.js 是一个跨平台 JavaScript 运行环境,使开发者可以搭建服务器端的 JavaScript 应用程序。

1、作用

  • 编写数据接口,提供网页资源浏览功能等等
  • 前端工程化:开发项目直到上线,过程中集成的所有工具和技术

2、Node.js 与浏览器环境的 JS 的最大区别

Node.js 可以主动读取文件,但是 Node.js 环境中没有 BOM 和 DOM

二、Node.js 的使用

运行JS文件

node xxx.js

三、fs 模块 - 读取文件

什么是 fs 模块?

封装了与本机文件系统进行交互的,方法/属性

语法:

  • 加载 fs 对象
const fs = require('fs')
  • 写入文件内容
fs.writeFile('文件路径', '写入内容', err => {
   //写入后的回调
})
  • 读取文件内容
fs.readFile('文件路径', (err, data) => {
   //读取后的回调
   //data 是文件内容的 Buffer 数据流
})

四、path 模块 - 路径处理

__dirname 内置变量(获取当前模块目录-绝对路径

注意: path.join() 会使用特定于平台的分隔符,作为定界符,将所有给定的路径片段连在一起

语法:

  • 加载 path 模块
const path = require('path')
  • 使用 path.join() 方法,拼接路径
path.join('路径1','路径二',...)

path.join() 一般与 __dirname 一起使用

path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。

path.join() 与 path.resolve() 的区别

  • join 只是把各个 path 片段连接在一起
  • resolve 把‘/’当成根目录
  • resolve 在传入非 / 路径时,会自动加上当前目录形成一个绝对路径

五、压缩前端 html

const fs = require('fs')
const path = require('path')

fs.readFile(path.join(__dirname,'test2.html'),(err, data) => {
    if(err) console.log(err)
    else {
        const htmlStr = data.toString()
        const resultStr = htmlStr.replace(/[\r\n]/g,'')
        fs.writeFile(path.join(__dirname,'test2.html'), resultStr, err => {
            if(err) console.log(err);
            else console.log('写入成功');
        })
    }
})

六、http 模块

加载 http 模块,创建 web 服务对象

const http = require('http')
const server = http.createServer()

监听 request 请求事件,设置响应头和响应体

server.on('request', (req, res) => {
   res.setHeader('Content-Type', 'text/plain;charset=utf-8')
   //end 为请求后显示的内容
   res.end('')
})
// 3000 为请求的端口号
server.listen(3000, () => {
   consle.log('')
})

七、Node.js 模块化

1、什么是模块化?

在 Node.js 中,每个文件都被视为一个单独的模块。

好处

  • 提高代码复用性,按需加载,独立作用域

使用

  • 需要标准语法导出和导入进行使用

2、CommonJS 标准

CommonJS 模块是为 Node.js 打包 JavaScript 代码的原始方式

导出:
module.exports = {}
导入:
require('模块名或路径')

3、ECMAScript 标准 - 默认导出和导入

注意

使用 ECMAScript 标准语法,在运行模块所在的文件夹新建 package.json 文件,并设置

{“type” : "module"}
导出:
export default{}
导入:
//变量名自己定义
import 变量名 from '模块名或路径'

4、ECMAScript 标准 - 命名导出和导入

导出:
expert 修饰定义语句
导入:
import { 同名变量 } from '模块名或路径'

如何选择导出和导入的方式:

按需加载,使用命名导出和导入

全部加载,使用默认导出和导入

八、包的概念

:将模块代码,其他资料聚合成一个文件夹

包分类:

  • 软件包(全局包):封装工具和方法进行使用

  • 项目包:主要用于编写项目和业务逻辑(安装在项目的 node_modules 目录的包)

  • 开发依赖包(被记录到 devDependencies 节点中的包,只在开发过程中用到
  • 核心依赖包(被记录到 dependencies 节点的包,在开发和项目上线之后都会用到)

要求:根目录中,必须有 package.json 文件(记录包的清单信息

根目录应该包含三个文件:

index.js

package.json

README.md

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hMqmmxNI-1689042465911)(C:\Users\mzhj\AppData\Roaming\Typora\typora-user-images\image-20230703204858111.png)]

**注意:**导入软件包时,引入的默认是 index.js 模块文件 / main 属性指定的模块文件

发布 npm 包

  • 注册 npm 账号 (httpsL//www.npmjs.com/)
  • 登录 npm 账号,在终端输入 npm login 命令,依次输入用户名、密码、邮箱后,即可登录成功(登录之前将服务器地址切换为 npm 官方地址,否则会登录失败)
  • 将终端切换到包的根目录,运行 npm publish 命令,即可发布包(包名不能雷同)

九、npm - 软件包管理

定义:

npm 是 Node.js 标准的软件包管理器。

使用:

  • 初始化清单文件:
npm init -y //得到 package.json 文件,有则略过此命令
  • 下载软件包:
npm i 软件包名称
  • 安装所有依赖:
npm i

十、npm - 全局软件包 nodemon

软件包区别:

  • 本地软件包当前项目内使用,封装属性方法,存在于 node_modules
  • 全局软件包本机所有项目使用,封装命令工具,存在与系统设置的位置

nodemon 作用

  • 代替 node 命令,检查代码更改,自动重启程序

使用:

  • 安装
npm i nodemon -g ( -g 代表全局安装)
  • 运行
nodemon 目标文件

十一、Node.js 常用命令总结

功能命令
执行 js 文件node xxx
初始化 package.jsonnpm init -y
下载本地软件包npm i 软件包名
下载全局软件包npm i 软件包名 -g
删除软件包npm uni 软件包名

十二、淘宝 npm 镜像服务器

切换 npm 的下包镜像源

  • 查看当前的镜像源
npm config get registry
  • 切换镜像源
npm config set register=https://register.npm.taobao.org/

npm init -y |
| 下载本地软件包 | npm i 软件包名 |
| 下载全局软件包 | npm i 软件包名 -g |
| 删除软件包 | npm uni 软件包名 |

十二、淘宝 npm 镜像服务器

切换 npm 的下包镜像源

  • 查看当前的镜像源
npm config get registry
  • 切换镜像源
npm config set register=https://register.npm.taobao.org/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端mz小詹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值