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

devtools/2024/12/27 13:05:40/

一、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 {}
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 '模块名或路径'
importobjfrom‘模块名或路径"
//obj就等于 export default 导出的对象

按需导入和导出

命名导出和导入

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

export const baseURL = 'http://hmajax.itheima.net'
export const getArraysum = arr => arr.reduce((sum, val) => sum += val, 0)
2. 导入:import { 同名变量 } from '模块名或路径‘
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 中)

/*** 目标:使用 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 下载比磁盘传递要快
/*** 目标:安装所有依赖软件包* 场景:一般拿到别人的项目后,只有 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.jsonnpm init  -y
下载本地软件包npm  i  软件包名
下载全局软件包npm i 软件包名 -g
删除软件包npm  uni  软件包名


http://www.ppmy.cn/devtools/145818.html

相关文章

Java线程池面试题

为什么要用线程池 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行方便管理线程:线程是稀缺资源,如果无条件地创建&#xff0…

Redis基础知识分享(含5种数据类型介绍+增删改查操作)

一、redis基本介绍 1.redis的启动 服务端启动 pythonubuntu:~$ redis-server客户端启动 pythonubuntu:~$ redis-cli <127.0.0.1:6379> exit pythonubuntu:~$ redis-cli --raw //(支持中文的启动方式) <127.0.0.1:6379> exit2.redis基本操作 ping发送给服务器…

【hackmyvm】Adroit靶机wp

tags: HMVjava反编译SQL注入 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集3. java反编译4. sql注入5. 解密密码6. 提权 靶机链接 https://hackmyvm.eu/machines/machine.php?vmAdroit 作者 alienum 难度 ⭐️⭐️⭐️⭐️️ 2. 信息收集 ┌──(root㉿kali)-[~] └…

MySQL 数据库备份与恢复

MySQL数据库的备份与恢复是确保数据安全的重要操作&#xff0c;以下是对这一过程的详细阐述&#xff1a; 一、备份方式 MySQL数据库的备份方式主要分为物理备份和逻辑备份两种。 1. 物理备份 定义&#xff1a;直接复制数据库的物理文件&#xff08;如数据文件、日志文件等&…

海康RGBD相机使用C++和Opencv采集图像记录

海康RGBD相机使用C和Opencv采集图像记录 RGBD相机型号&#xff1a;MV-EB435i 配置&#xff1a;1.Vs2019 2.Opencv4.6 一、安装客户端 1.下载链接 HiViewer 2.官方Samples 安装后&#xff0c;在帮助-development中&#xff0c;可以看到一些samples&#xff0c;但是这些样例…

User Script Sandboxing作用 及 在iOS项目中获取GitCommitHash

User Script Sandboxing 设置为 NO 。这个设置控制了 Xcode 脚本的沙盒限制&#xff0c;默认情况下&#xff0c;Xcode 会将脚本放入沙盒环境中&#xff0c;限制其访问文件系统的权限&#xff0c;尤其是对某些目录&#xff08;例如项目文件夹之外的文件&#xff09;进行修改时&a…

linux-22 目录管理(二)rmdir命令,删除目录

那接下来我们来看看我们如何去删除目录&#xff1f;那接下来我们来看看我们如何去删除目录&#xff1f;叫remove&#xff0c;remove表示移除的意思&#xff0c;remove directory叫移除目录。所以简写为rmdir&#xff0c;但需要注意&#xff0c;它只能删除空目录&#xff0c;只能…

CSS(二):美化网页元素

目录 字体样式 文本样式 列表样式 背景图片 字体样式 字体相关的 CSS 属性&#xff1a; font-family&#xff1a;设置字体font-size&#xff1a;设置字体大小font-weight&#xff1a;设置字体的粗细&#xff08;如 normal, bold, lighter 等&#xff09;color&#xff1a;…