IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 2021-08-05 丢失的笔记 Node.js模块化开发理念讲解 + 系统模块path路径拼接 -> 正文阅读

[JavaScript知识库]2021-08-05 丢失的笔记 Node.js模块化开发理念讲解 + 系统模块path路径拼接

2021/8/5
之前丢了一小部分笔记,给他补上

一、JavaScript开发弊端

javascript在使用的时候存在两大问题,文件依赖和命名冲突

    1. 文件依赖:如果你在开发过程中,引用了网上一个轮播图的a.js文件,但是它没有运行起来,经过一系列的分析和排查之后,发现a.js要引用b.js,引入之后发现b.js要引入c.js,最后在a.js中引入了b.js和c.js才能让这个轮播图实现,虽然我们能够实现了,但是这个过程是非常痛苦和烦锁的。 node.js中的模块化开发可以解决这个问题,模块化开发中直接写明了当前js文件需要引用哪些另外的文件
    1. 命令冲突: 在javascrip中文件与文件之间是开放的,在学习过程中,会发现有大量的变量重合过程,对于javascript来说,会出现变量覆盖这种情况,那么前面声明的变量就没有用了,所以可能导致一些小的功能不能实现。 在模块化开发中,实现了文件半封闭,我想让哪些代码在后续的程序中使用到,就把这些代码开放出去,其他代码都是封闭的,不允后面使用



二、Node.js模块化开发

1. 软件中的模块化开发

一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行

请添加图片描述

2. Node.js中模块化开发规范

  • Node.js规定一个javascript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到
  • 模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块
    请添加图片描述
//a.js
const a = 10, b = 15;
const add = a + b;
exports.add = add;  //第一个add是exports属性,第二个add是变量
//b.js
const a = require('./a.js');
console.log(a.add);    // 25

3. 模块成员导出的另一种方式

module.exports.version = version;
module.exports.sayHi = sayHi;

exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准


三、系统模块

1. 什么是系统模块

Node运行环境提供的API。 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块
请添加图片描述

2. 系统模块fs操作

f:file 文件 ,s:system 系统,文件操作系统。

2.1 读取文件操作

  • fs.readFile是对硬盘的操作,对文件进行读取,需要耗时,那么我们需要使用回调函数的方式来获取文件读取结果
  • 回调函数包含两个参数
const fs = require('fs');
fs.reaFile('文件路径/文件名称'[,'文件编码'], callback);
// 1. 通过模块的名字fs对模块进行引用 
const fs = require('fs');
// 2. 通过模块内部的readFile方法 读取文件内容
fs.readFile('./01.helloworld.js', 'utf8', (err, result) => {
	// 如果文件读取出错 err 是一个对象,包含错误信息,如果读取正确err为null
	// 如果文件读取正确 result 中存放的就是读取文件结果
	console.log(err);
	console.log(result);
})

2.2 写入文件内容

常用场景: 在网站运行的过程中,要记录网站运行情况,比如是否有报错的情况,但是程序媛是不可以一起盯着电脑屏幕的,所以我们希望当程序报错时,可以将程序写入一个错误日志中(也就是一个文件当中),最后只需要查看错误日志就可以知道哪里出了问题

fs.writeFile('文件路径/文件名称', '即将要写入的内容', callback);
 const content = '<h3>正在使用fs.writeFile写入文件内容</h3>';
 // 当目标文件不存在时,当前API会自动创建文件
 fs.writeFile('../index.html', content, err => {
   if (err != null) { 
       console.log(err);
       return;
   }
   console.log('文件写入成功');
 });

四、系统模块path路径操作

为什么要进行路径拼接

  • 不同操作系统的路径分隔符不统一
  • /public/uploads/averar
  • Windows 上是 / \
  • Linux 上是 /

4.1 路径拼接语法

path.join('路径', '路径', ...)
  // 导入path模块
 const path = require('path');
  // 路径拼接
 let finialPath = path.join('itcast', 'a', 'b', 'c.css');
  // 输出结果 itcast\a\b\c.css
 console.log(finialPath);

4.2 相对路径 VS 绝对路径

  • 大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录
  • 在读取文件或者设置文件路径时都会选择绝对路径
  • 使用__dirname或者 __filename获取当前文件所在的绝对路径
  • __dirname: 获取当前文件的父级绝对路径
  • __filename: 获取当前文件的绝对路径
const path = require('path');
console.log(__dirname);
// 输出结果: F:\传智黑马39期教学\001学习过程记录\Node
console.log(__filename);
// 输出结果: F:\传智黑马39期教学\001学习过程记录\Node\06_path.join.js 
const finalPath = path.join(__dirname, '/demo.txt');
// 输出结果: F:\传智黑马39期教学\001学习过程记录\Node\demo.txt  
console.log(finalPath);

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:31:55  更:2021-08-06 09:33:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 -2025/5/10 4:30:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码