【学习笔记02】node的模块化和内置模块
创始人
2024-03-05 23:27:53
0

一、nodejs的模块化

  •  😂 nodejs 所有的东西都是模块

(一)node模块的分类

1. 自定义模块:自己写的模块

2. 内置模块:nodejs提供的模块

3. 第三方模块

       别人写好的东西, 上传到某一个位置(npm),

       我们去 npm 去下载到我们本地, 然后使用

(二)导出语法

  • node中每一个JS 文件都自带一个module
console.log(module);

Module {id: '.',// 当前文件所在目录path: 'E:\\yizhiyang\\JavaScript2\\date1129:认识node\\code',// 记录了, 当前文件 导出的内容exports: {},// 当前文件完整的文件名filename: 'E:\\yizhiyang\\JavaScript2\\date1129:认识node\\code\\04_nodejs的模块化.js',// 是否被引入loaded: false,// 表明当前文件导入了什么模块children: [],paths: ['E:\\yizhiyang\\JavaScript2\\date1129:认识node\\code\\node_modules','E:\\yizhiyang\\JavaScript2\\date1129:认识node\\node_modules','E:\\yizhiyang\\JavaScript2\\node_modules','E:\\yizhiyang\\node_modules','E:\\node_modules']
}

1、导出语法1

  • module.exports.属性名 = 属性值

//在默认对象内添加属性, 导出的还是一个对象
module.exports.num = 100
module.exports.str = 'QF666'
console.log(module)
/*Module {...exports: { num: 100, str: 'QF666' },...}
*/

2、导出语法2

  • module.exports = 新值
  • node中每一个js文件都自带一个exports这个变量,内部存储指向module.exports 这个对象的地址
// 方式2, 重新给默认对象赋值, 导出的就是新的值
module.exports = [100, 200, 300];
console.log(module);

3、导出语法3

  • exports.属性名 = 属性值
// 在默认对象内添加属性, 导出的还是一个对象
exports.num = 999;
exports.str = 'QF666';
console.log(module);

(二)导入语法

  • node中每一个JS文件都自带一个require
  • 语法: require('地址')
  • 返回值: 返回导入的文件的exports 

out.js

module.exports.num = 100
module.exports.str = 'QF666'
module.exports.str2 = 'QF001'

in.js

// const outObj = require('./out.js')
// node 导入文件时, 如果文件后缀是 .js 可以省略不写
const outObj = require('./out');console.log(outObj);

二、node内置模块fs

  • fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
  • fs.readFile() 方法,用来读取指定文件中的内容  
  • fs.writeFile() 方法,用来向指定的文件中写入内容
const fs = require('fs');
console.log(fs);

1、异步读取文件

fs.readFile('文件路径', '配置项', '回调函数')

        文件路径: 必填

        配置项: 选填(默认值 buffer, 可以手动配置)

        回调函数: 必填

const fs = require('fs');fs.readFile('./index.txt', 'utf-8', function (err, data) {/***  err:  如果读取失败, 会给一个err*  data: 读取成功,文件的内容*/console.log(err);   //nullconsole.log(data);
})

 报错信息:

  • 我们没有创建index1.txt文档,报错时的信息显示
fs.readFile('./index1.txt', 'utf-8', function (err, data) {/***  err:  如果读取失败, 会给一个err*  data: 读取成功,文件的内容*/if (err) return console.log(err);console.log(data);
})

 2、同步读取文件

const fs = require('fs');
console.log('start');let data = fs.readFileSync('./index.txt', 'utf-8')
console.log('data');console.log('end');

 3、异步写入

  • 按照指定第一个参数去书写文件的内容(覆盖)
  • 按照指定的第一个参数没找到, 在指定位置, 新建一个文件出来;新建的值, 就是第二个参数
const fs = require('fs');
fs.writeFile('./index.txt', '你好', function (data) {console.log('写入完成')
})console.log('end')

三、node内置模块path

node给我们提供的操作路径相关的内容

  • 绝对路径:C:/a/b/c/d.html
  • 相对路径:./d.html     ../b/d.html
const path = require("path");console.log(path);

  • path.join([路径片段1, 路径片段2, 路径片段3])
const path = require("path");const res1 = path.join("a", "/b", "/c", "/d.html");
console.log(res1); // a\b\c\d.htmlconst res2 = path.resolve("a", "/b", "/c", "/d.html");
console.log(res2); // C:\d.htmlconst res3 = path.resolve("q/w/e", "y.html");
console.log(res3); 
// C:\Users\41099\Desktop\GY-2203\07周\02天\code\06_node内置模块path\q\w\e\y.htmlconst res4 = path.parse('C:/Users/41099/Desktop/GY-2203/07周/02天/code/06_node内置模块path/q/w/e/y.html'
)
console.log(res4)

    {// 根路径root: 'C:/',// 当前文件所在的文件夹(目录)路径dir: 'C:/Users/41099/Desktop/GY-2203/07周/02天/code/06_node内置模块path/q/w/e',// 完整文件名base: 'y.html',// 文件后缀ext: '.html',// 文件名name: 'y'}

 四、node内置模块url

  •  node给我们提供的帮助我们解析url地址信息
  •  http://localhost:8080/a/b/c/d.html?current=1&pagesize=12
const url = require("url");
console.log(url);

  •  url.parse('url 地址(必填)', '是否深度解析(选填, 默认为 false)')
const url = require("url");const res = url.parse("http://localhost:8080/a/b/c/d.html?current=1&pagesize=12");
console.log(res)

    Url {// 协议protocol: 'http:',slashes: true,auth: null,// 域(域名+端口号)host: 'localhost:8080',// 端口号port: '8080',// 域名hostname: 'localhost',// hash值hash: null,// 携带的参数search: '?current=1&pagesize=12',// 查询字符串query: 'current=1&pagesize=12',// 完整路径名pathname: '/a/b/c/d.html',// 路径(带参数)path: '/a/b/c/d.html?current=1&pagesize=12',// 完整 url 路径href: 'http://localhost:8080/a/b/c/d.html?current=1&pagesize=12'}
  • 带参数时 
const url = require("url");const res = url.parse("http://localhost:8080/a/b/c/d.html?current=1&pagesize=12", true);
console.log(res);
/*Url {...query: [Object: null prototype] { current: '1', pagesize: '12' },...}
*/

五、node内置模块http

  • node给我们提供的开启一个服务器的
  • 服务器: 一个提供服务的机器     服务: 数据或者文件    机器: 就是一台电脑
const http = require("http");console.log(http);

// 0. 导入内置模块
const http = require("http");// 1. 创建一个 服务器
const server = http.createServer(function (req, res) {/***  req: 表明前端的请求报文*  res: 后端返回给前端的响应报文*/console.log(req.url)// console.log('每当有一个前端访问的时候, 我就会被触发一次')if (req.url == '/a') {res.end('hello~~~pageA')}if (req.url == '/b') {res.end('hello~~~pageB')}})// 2. 给服务器配置一个端口号(0~65535)
server.listen(8080, () => {console.log('服务器开启成功, 端口号 8080')
})

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...