Node二、Node.js 模块化、es6 软件包、Express - 框架

一、Node.js 模块化

在Nodejs中,每个文件都被视为一个单独的模块。
支持 2 种模块化标准 CommonJS 标准语法(默认) ECMAScript 标准语法
模块名或路径:
✓ 内置模块:直接写名字(例如:fs,path,http)
✓ 自定义模块:写模块文件路径(例如:./utils.js)

1.CommonJS

1. 导出:module.exports = { }
2. 导入:require('模块名或路径')
模块之间联系:使用特定语法, 导出 和 导入 使用

2.ECMAScript (es6)

注意:Node.js 默认支持 CommonJS ,使用 ECMAScript 标准语法需要在运行模块所在文件夹新建 package.json 文件,并设置 { "type" : "module" }

默认导入导出

1. 导出:export default {}

javascript 复制代码
const baseURL ='http://hmajax.itheima.net'
const getArraysum = arr => arr.reduce((sum, val) => sum += val, 0)
export default{
对外属性名1:baseURL,
对外属性名2:getArraySum
}

2. 导入:import 变量名 from '模块名或路径'

javascript 复制代码
importobjfrom'模块名或路径"
//obj就等于 export default 导出的对象

按需导入和导出

命名导出和导入

1. 导出:export 修饰定义语句

javascript 复制代码
export const baseURL = 'http://hmajax.itheima.net'
export const getArraysum = arr => arr.reduce((sum, val) => sum += val, 0)

2. 导入:import { 同名变量 } from '模块名或路径'

javascript 复制代码
import{ baseURL,getArraySum }from'模块名或路径'
//baseURL 和 getArraySum 是变量,值为模块内命名导出的同名变量的值

二、软件包

包:将 模块,代码,其他资料 聚合成一个文件夹
包分类项目包 :编写项目和业务逻辑 ,软件包: 封装工具和方法 进行使用

package.json记录包的清单信息

根目录中,必须有 package.json 文件记录 软件包的名字 ,作者, 入口 文件等信息

导入一个包文件夹的时候 默认 导入的是index.js 文件 ,或者 main 属性指定的文件

npm - 软件包管理器

npm 是 Node.js 标准的软件包管理器。作用:下载软件包以及管理版本

(重点)使用npm下载软件包

1.初始化清单文件:npm init -y(得到 package.json 文件,有则略过此命令)

2.下载软件包:npm i 软件包名称

3.使用软件包

(下载的包会存放在当前项目下的 node_modules 中,并记录在 package.json 中)

javascript 复制代码
/**
 * 目标:使用 npm 下载 dayjs 软件包来格式化日期时间
 *  1. (可选)初始化项目清单文件,命令:npm init -y
 *  2. 下载软件包到当前项目,命令:npm i 软件包名称
 *  3. 使用软件包
 */

// 模块名 or 路径?
// 自己写的模块就写路径, 其他情况都是模块名(内置的 / 下载的)
const dayjs = require('dayjs')
    //当前的日期
const res = dayjs().format('YYYY-MM-DD')

console.log(res)

npm - 安装所有依赖 npm i

  1. 当项目中只有 package.json 没有 node_modules
    就执行 npm i 安装所有依赖软件包
  2. 为什么 node_modules 不进行传递: 因为用 npm 下载比磁盘传递要快
javascript 复制代码
/**
 * 目标:安装所有依赖软件包
 * 场景:一般拿到别人的项目后,只有 package.json 缺少 node_modules 时需要做
 * 语法:在当前项目终端下,输入命令:npm i
 * 效果:会根据 package.json 记录的所有包和版本开始下载
 */

// 格式化日期
const dayjs = require('dayjs')
const nowDateStr = dayjs().format('YYYY-MM-DD')
console.log(nowDateStr)

// 求数组里最大值
const _ = require('lodash')
console.log(_.max([1, 2, 8, 3, 4, 5]))

npm - 全局软件包 nodemon

常用命令

功能

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

相关推荐
ayqy贾杰7 分钟前
Claude Fable 5 提示词泄漏,抓紧学习下
前端·后端·面试
To_OC8 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic9 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy9 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志9 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble10 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯11 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
名字还没想好☜12 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司12 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
kaiking_g13 小时前
vue项目中,静态导入 vs 动态导入 详解
前端·javascript·vue.js