node.js学习笔记——内部模块、自定义模块的导入和使用方式

文章目录

  • 前文提要
  • 内部模块
    • fs模块
      • 导入方式
      • fs.readFile
      • fs.writeFile
    • path模块
      • 导入方式
      • __dirname
      • path.join
    • http模块
      • 导入方式
      • 创建服务器实例
      • 绑定request事件
      • 启动服务器
  • 自定义模块和第三方模块
    • 导入方式
      • 模块作用域
    • 共享方式


前文提要

本人仅做个人学习记录,如有错误,请多包涵

主要学习链接:黑马程序员Node.js全套入门教程,nodejs新教程含es6模块化+npm+express+webpack


内部模块

使用require可以导入node.js中的内部模块,例如:fs、path、http等模块,例如这样

const fs=require('fs')

fs模块

导入方式

const fs=require('fs')

使用fs模块操作文件的读写。

fs.readFile

读文件:

fs.readFile("文件路径","utf-8", function(err,dataStr){
//函数体
})

文件中的内容以字符串的方式存储在dataStr中

fs.writeFile

写文件:

fs.writeFile("文件路径","写入内容", function(err){
//函数体
})

path模块

导入方式

const path=require('path')

__dirname

使用相对路径会出现文件路径动态拼接时的错误,绝对路径可以避免这个问题,但是绝对路径的可移植性很差。
所以可以采用另一种方式:‘__dirname’,其表示当前文件存储在哪个目录下(绝对路径表示)

path.join

如果使用加号直接拼接文件路径,容易出现错误

例如这样:

const path=__dirname+'./clock/1.html'

加号不能自己去除相对路径中的点号,所以有时候会出错,它只是单纯地拼接在了一起,但是如果使用path.join,写成这样:

const path=path.join(__dirname+'./clock/1.html')

则不会出现上述的错误,path.join中可以写很多参数

http模块

导入方式

const http=require('http')

创建服务器实例

const server=http.creatServer()

绑定request事件

const server.on('request',function(req,res){
//函数体
//req是请求
//res是响应,通过res.end('内容'),可以向客户端发送响应
})

启动服务器

const server.lesten(8080,function(){
//函数体
//服务器会在'http://127.0.0.1:8080'处启动
//8080是端口号,如果写的是80则可以忽略
})

自定义模块和第三方模块

第三方模块是指外部下载下来的模块,例如使用npm下载的模块,可以通过和内部模块一样的方式调用。
自定义模块是指,用户自己写的js文件,需要通过指定文件路径来进行导入,例如:

导入方式

const test=require('./test.js')

模块作用域

这里设计到模块作用域的概念,如果直接导入其他的js文件且js文件不做处理,是没有办法访问js文件中的内容的。模块作用域限制本js文件中的变量和方法只能在这个文件(模块)中使用,这样有利于避免全局污染。

共享方式

但是可以通过’module.exports’向外共享模块内的变量和方法,共享到的东西以’module.exports’指向的对象为主。

也可以通过’exports’当’module.exports’使用,这两个指针指向同一对象,如果修改了exports指向,'module.exports’不变,则文件共享的内容不变,因为以’module.exports’为主;如果module.exports指向的对象变了,则文件共享的内容改变。

添加样例:

module.exports.name="zs"

name是变量名称,自定义的。

module.exports.sayhello=function(){}

导入函数,则可以通过**导入模块名.sayhello()**调用函数


至此,结束。

如果你觉得这篇文章写的不错,多多点赞~收藏吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/195851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitlab-ci.yml 同步https 仓库地址

1. 先在要部署的机器上,执行如下命令, 输入一次密码后,保存该密码git config --global credential.helper store2. 然后执行 git pull 命令, 然后会提示输入密码, 输入密码即可.3. 编写 gitlab-ci.yml 文件stages:- deploy# 部署master服务 deployMaster…

ubuntu 创建conda 环境失败 HTTP 000 CONNECTION FAILED

如有帮助点赞收藏关注! 如需转载,请注明出处! 现在内存分配好了,创建一个专门的conda环境处理文件,报错了,创建不成功! 什么情况,之前明明可以的。 百度吧。 参照一些博客修改了文档…

Linux进程切换

引入 Question&#xff1a; 为什么函数的返回值能在函数的外部被拿到呢&#xff1f;局部变量不是出了作用域就要被销毁嘛&#xff1f; #include<stdio.h>int Add(int a, int b) {int ret a b;return ret; } int main() {int a 10, b 20;int ret Add(a, b);return …

JS实现桶排序

桶排序&#xff08;Bucket Sort&#xff09;作为一种分布式排序算法&#xff0c;具有简单、直观且高效的特点。本文将深入研究桶排序的原理、实现方式等。 什么是桶排序 公众号&#xff1a;Code程序人生&#xff0c;个人网站&#xff1a;https://creatorblog.cn 桶排序是一种分…

深入解析Linux内核网络-拥塞控制系列(一)

谈起网络拥塞控制&#xff0c;大家可能很熟悉八股文中的"加法增大“、”乘法减小“、”慢开始“、“拥塞避免”、“快重传”、“快恢复”等概念。没错&#xff0c;这是一种经典网络拥塞控制算法的基础理论&#xff0c;但在实际的实现时不同的拥塞控制算法&#xff0c;有很…

Redis事务管理

概述 事务的本质是一组命令的集合。一个事务中的所有命令都会按照命令的顺序去执行&#xff0c;而中间不会被其他命令加塞。 执行过程 UNWATCH&#xff1a;解除监控(退出事务的指令也会解除监控) 事务中异常的处理 命令语法错误&#xff1a; 针对语法错误&#xff0c;会导致整…

9、Qt使用随机验证码

一、新建项目 创建一个"Qt Widget Application"项目&#xff0c;基类选择“QMainWindow” 二、自定义CaptchaLabel类 右击项目名&#xff0c;选择"Add New...” C -> CClass&#xff0c;点击“Choose” 更改类名CaptchaLabel&#xff0c;添加基类QLabel&a…

【代码随想录算法训练营-第三天】【链表】203,707,206

203.移除链表元素 一遍AC 没什么难度&#xff0c;记住如何定义、使用链表&#xff0c;链表中的节点&#xff1b;记住链表移除的操作代码&#xff1b;了解虚拟头节点的用法&#xff1b; class Solution {public ListNode removeElements(ListNode head, int val) {if(head n…

HT7183 高功率异步升压转换器 中文资料

HT7183是一款高功率异步升压转换器&#xff0c;集成120mΩ功率开关管&#xff0c;为便携式系统提供G效的小尺寸处理方案。HT7183具有2.6V至5.5V输入电压范围&#xff0c;可为各类不同供电的应用提供支持。HT7183具备3A开关电流能力&#xff0c;并且能够提供高达16V的输出电压。…

C#/.NET/.NET Core优秀项目和框架2023年11月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架&#xff08;公众号每周至少推荐两个优秀的项目和框架当然节假日除外&#xff09;&#xff0c;公众号推文有项目和框架的介绍、功能特点以及部分截图等&#xff08;打不开或者打开GitHub很慢的同学可以优先查看…

Python搭建代理IP池实现接口设置与整体调度

目录 前言 1. 搭建免费代理IP爬虫 2. 将获取到的代理IP存储到数据库中 3. 构建一个代理IP池 4. 实现调度器来调度代理IP池 5. 实现带有代理IP池的爬虫 总结 前言 在网络爬虫中&#xff0c;代理IP池是一个非常重要的组件。由于许多网站对单个IP的请求有限制&#xff0c;…

客户满意的黄金法则:10个让您一击即中的服务技巧!

在当今日益竞争激烈的商业世界中&#xff0c;提供出色的客户服务是保持企业成功的关键。无论您是一家大型公司、一家小型创业企业&#xff0c;还是个人品牌&#xff0c;客户服务都是建立持久关系、增加忠诚度和获取推荐的必备条件。 那么&#xff0c;如何做好客户服务呢&#x…

练习11-简单卷积器的设计

简单卷积器的设计 1&#xff0c;任务目的&#xff1a;2&#xff0c;明确设计任务2.1,目前这部分代码两个文件没找到&#xff0c;见第5、6节&#xff0c;待解决中。 &#xff0c;卷积器的设计&#xff0c;RTL&#xff1a;con1.v4&#xff0c;前仿真和后仿真&#xff0c;测试信号…

mapbox Marker添加自定义html

思路就是先渲染出空div使用getElementsByClassName找到点&#xff0c;之后使用insertAdjacentHTML(‘beforeend’, div) 加自定义内容。 const el document.createElement(div);// 添加一个标记el.className j_icon;const itemIcon new MapboxGl.Marker({element: el,}).set…

JVM垃圾回收机制GC

一句话介绍GC&#xff1a; 自动释放不再使用的内存 一、判断对象是否能回收 思路一&#xff1a;引用计数 给这个对象里安排一个计数器&#xff0c; 每次有引用指向它&#xff0c; 就把计数器1&#xff0c; 每次引用被销毁&#xff0c;计数器-1&#xff0c;当计数器为0的时候…

文献速递 | CAR-T细胞助力增强前列腺癌肿瘤细胞抗肿瘤能力

前列腺癌是男性泌尿生殖系统最常见的恶性肿瘤&#xff0c;在全球&#xff0c;前列腺癌的发病率在男性所有恶性肿瘤中高居第2位&#xff0c;仅次于肺癌。免疫检查点分子转化生长因子受体II&#xff08;TGFβRII&#xff09;、T细胞免疫球蛋白和粘蛋白结构域3&#xff08;TIM3&am…

QT中如何使用自定义控件

在 Qt 中&#xff0c;要使用自定义控件&#xff0c;需要遵循以下步骤&#xff1a; 创建自定义控件&#xff1a; 首先&#xff0c;需要创建一个自定义控件类&#xff0c;该类继承自 QWidget 或 QGraphicsItem 等基本控件类&#xff0c;并实现其相关函数和槽函数等。 在头文件中…

python--namedtuple

namedtuple(具名元组) namedtuple是tuple的升级,目的是解决元组内部的数据进行命名的问题,为了说明namedtuple的优点,我们先看一下tuple的例子,如下代码,声明了课程的元祖,但是元组中两项内容没有说明,如果其他人看到代码不知道意思是什么 course = ("Python教程…

【带讲解】同校不同命,差个代号差好多!

今天分享的是23年哈尔滨工程大学815的信号与系统试题及解析。同样是哈尔滨工程大学&#xff0c;信号部分810着实比815难了很多&#xff01;但是815还有一门电路&#xff0c;压力也不小&#xff0c;两个代号各有利弊&#xff01; 小马哥Tips&#xff1a; 本套试卷难度分析&…

通过流量分析,明确医院重要主机中毒详情

故障现象 医院系统内部发现有一台重要主机持续产生了大量的连接失败数&#xff0c;主机IP为192.xxx.xxx.37&#xff0c;持续时间从2023年11月23日20&#xff1a;00持续到2023年11月24日10&#xff1a;00&#xff0c;十点后管理人员发现并封禁了该IP地址。 分析目的 针对医院…