30天精通Nodejs--第二天:模块系统与npm

深入了解Node.js:模块系统与npm

Node.js作为一款强大的服务器端JavaScript运行环境,模块系统和npm(Node Package Manager)是其成功的重要组成部分。为我们平时提供了便捷的工具和资源,使得在Node.js平台上构建应用变得异常高效。
本篇博客将深入探讨Node.js的模块系统和npm的作用,以及如何充分利用它们进行开发。

Node.js模块系统

Node.js的模块系统是基于CommonJS规范的,它允许开发者将程序分割成多个独立的文件(模块),并在需要的时候加载执行。这样做的好处是:

  • 模块化开发:可以将功能拆分成小模块,提高代码的可维护性和可重用性。
  • 避免全局命名空间污染:每个模块都有自己的作用域,不会干扰其他模块。
  • 异步加载:可以异步加载模块,提高程序的性能和响应速度。

在Node.js中,一个文件就是一个模块。可以使用require函数来加载模块,使用module.exports来导出模块。

还是看之前文章中写的例子

// math.js 模块提供了一个有两个参数并返回两个参数相加之后的结果的函数
function add(a, b) {return a + b;
}
// 导出此模块
module.exports = { add };
// app.js 导入上面的模块
const math = require('./math');const result = math.add(2, 3);
console.log(result); // 输出 5

npm(Node Package Manager)

npm是Node.js的包管理工具,拥有数以百万计的开源包。使用npm,我们可以轻松地安装、分享、管理和发布Node.js模块。

常用的npm命令包括:
  • npm install :安装一个Node.js模块。
  • npm init:初始化一个新的Node.js项目,生成package.json文件。
  • npm publish:将自己的模块发布到npm注册表,具体使用方法可以参照之前的博客。
  • npm search :搜索npm中的模块。
  • npm update :更新已安装的模块。
  • npm uninstall :卸载一个模块。
  • npm run
使用npm进行模块管理

通过npm,我们可以轻松地引入和管理各种模块,例如Express.js、React等。以Express.js为例:

初始化一个新的Node.js项目:

npm init -y

安装Express.js:

npm install express

安装之后完整的package.json内容如下

{"name": "demo","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC","dependencies": {"express": "^4.18.2"}
}

在项目中引入Express.js:
新建一个index.js,然后添加下面代码

const express = require('express');
const app = express();

最终项目目录如下图所示:
在这里插入图片描述

这样就可以开始使用Express.js构建Web应用。
具体如何构建Express.js应用,我们会在后续的博客中详细介绍。

总结

Node.js的模块系统和npm是开发Node.js应用的两个非常重要工具,它们提供了强大的模块化和包管理功能,为开发者提供了便利。熟练使用模块系统和npm,可以使得Node.js开发更加高效和灵活。
通过深入了解Node.js的模块系统和npm,我们可以更好地发挥其优势,构建出高质量、可维护的Node.js应用。
大家有任何问题都可以在评论区留言交流,相互学习!

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

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

相关文章

现在java和大数据选什么?

现在java和大数据选什么? 到底是选择大数据还是JAVA?”相信这个问题困惑着许多转行待定人士和高校专业待选的学生。 在普通人眼里可能会觉得这两个专业或者行业没啥区别,都是IT里的,能有啥大不同。这是第一层。最近很多小伙伴找我…

【Linux】MAC帧协议 + ARP协议

文章目录 📖 前言1. 数据链路层2. MAC帧格式3. 再谈局域网4. ARP协议4.1 路由器的转发过程:4.2 ARP协议格式: 5. 如何获得目的MAC地址 📖 前言 在学完网络层IP协议之后,本章我们将继续向下沉一层,进入到数…

深入浅出排序算法之希尔排序

目录 1. 原理 2. 代码实现 3. 性能分析 1. 原理 希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后&#xf…

Flink 维表关联

1、实时查询维表 实时查询维表是指用户在 Flink 算子中直接访问外部数据库,比如用 MySQL 来进行关联,这种方式是同步方式,数据保证是最新的。但是,当我们的流计算数据过大,会对外 部系统带来巨大的访问压力&#xff0…

ui设计要学插画吗?优漫动游

现如今很多UI设计培训班都开设了商业插画的课程,有不少同学表示真的要学吗?商业插画都有什么用处呢?今天我们就来给大家介绍一下商业插画在UI设计中的运用。 ui设计要学插画吗?   商业插画属于实用型插画,是一种…

详解预处理(1)

目录 预定义符号 预处理指令#define #define定义符号 #define定义宏 #define替换规则 #和##(C语言预处理操作符) # ## 带副作用的宏参数 宏和函数的对比 命名约定 在之前我们学习了一个文本文件.c生成一个可执行程序。今天我们详细讲解其中的…

腾讯云国际站服务器端口开放失败怎么办?

腾讯云服务器是腾讯公司推出的一种云服务,用户能够经过这种方式在互联网上进行数据存储和计算。然而,用户在运用腾讯云服务器时或许会遇到各种问题,其间端口敞开失利是一个常见问题。本文将具体介绍如何解决腾讯云服务器端口敞开失利的问题。…

01 # 手写 new 的原理

new 做了什么? 在构造器内部创建一个新的对象这个对象内部的隐式原型指向该构造函数的显式原型让构造器中的 this 指向这个对象执行构造器中的代码如果构造器中没有返回对象,则返回上面的创建出来的对象 手写 new 的过程 new 是一个运算符,只能通过函…

CSS隐藏元素的N种方法,你知道哪一种最适合你?

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一、前…

Camtasia2024永久激活码

真的要被录屏软件给搞疯了,本来公司说要给新人做个培训视频,想着把视频录屏一下,然后简单的剪辑一下就可以了。可谁知道录屏软件坑这么多,弄来弄去头都秃了,不过在头秃了几天之后,终于让我发现了一个值得“…

el-date-picker日期选择器奇怪的问题解决

问题描述&#xff1a;点击日期选择器&#xff0c;出现日历下拉框&#xff0c;选择了日期后绑定的value值不变&#xff1b;绑定 change 事件&#xff0c;监听不到 解决方案&#xff1a;添加input事件&#xff0c;$forceUpdate() <el-date-pickerv-model"value1"ty…

用Python做数据分析之数据处理及数据提取

1、数据预处理 第四部分是数据的预处理&#xff0c;对清洗完的数据进行整理以便后期的统计和分析工作。主要包括数据表的合并&#xff0c;排序&#xff0c;数值分列&#xff0c;数据分组及标记等工作。 1&#xff09;数据表合并 首先是对不同的数据表进行合并&#xff0c;我们…

【Linux】gdb调试

目录 进入调试查看代码运行代码断点打断点查断点删断点从一个断点转跳至下一个断点保留断点但不会运行该断点 退出调试逐过程逐语句监视跳转至指定行运行结束当前函数 进入调试 指令&#xff1a;gdb 【可执行文件】&#xff1a; 查看代码 &#xff1a;l 【第几行】如果输入指…

安全设备

一.防火墙 5层应用层 防火墙 4层 udp tcp 协议 华为 厂商 华为 h3 1.区域划分 Dmz 停火区 Untrust 不安全区域 Trust 安全区域 防火墙 默认禁止所有 二.Waf Web 应用防火墙 放到web前面 产品 雷池 绿盟 软件 安…

递归神经网络 (RNN)

弗朗西斯科佛朗哥 一、说明 循环神经网络非常有趣&#xff0c;因为与前馈网络不同&#xff0c;在前馈网络中&#xff0c;数据只能在一个方向上传播&#xff0c;每个神经元可以与连续层的一个或多个神经元连接&#xff0c;在这种类型的网络中&#xff0c;神经元还可以环回自身或…

MAXScript - tyFlow for 3dsMax

MAXScript - tyFlow for 3dsMax tyFlow 信息 tyFlow_version(): 返回当前安装的tyFlow DLO文件的版本号。tyFlow_found_in_scene(): 返回有关场景中活动tyFlow类&#xff08;对象、修改器等&#xff09;数量的信息。 tyFlow 许可 tyFlow_activate_license(): 尝试激活tyFlo…

安卓端GB28181设备接入模块如何实现实时位置订阅(MobilePosition)

技术背景 实时位置&#xff08;MobilePosition&#xff09;订阅和上报&#xff0c;对GB28281设备接入终端尤其重要&#xff0c;如移动单兵设备、执法记录仪、智能安全帽、车载终端等&#xff0c;Android国标接入设备通过获取到实时经纬度信息&#xff0c;按照一定的间隔上报到…

竞赛选题 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐…

gstreamer插件开发-The event function

event 函数 event函数通知您数据流中发生的特殊事件(如大写、流结束、新段、标记等)。事件可以在上游和下游传播&#xff0c;因此您可以在汇聚节点和源节点上接收它们。 下面是一个非常简单的事件函数&#xff0c;我们将其安装在元素的接收器上。 static gboolean gst_my_fil…