广告
返回顶部
首页 > 资讯 > 精选 >Node.js模块与npm包管理器如何使用
  • 195
分享到

Node.js模块与npm包管理器如何使用

2023-06-29 14:06:23 195人浏览 独家记忆
摘要

本篇内容主要讲解“node.js模块与npm包管理器如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“node.js模块与npm包管理器如何使用”吧!require函数作用:在当前模块中加载

本篇内容主要讲解“node.js模块与npm包管理器如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习node.js模块与npm包管理器如何使用”吧!

require函数

作用:在当前模块中加载另外一个模块

语法:require("模块名称")

模块分类

在Node.js中,模块可以分为三大类,如下所示:

自定义模块:在项目中编写的具有特定功能的模块就是自定义模块。

  • 当子模块没有暴露数据时,返回空对象,而不是undefined。

  • 引用自定义模块,必须在路径前加./【如:require("./01.js")】,因为Node.js默认不是当前目录,而是node_modules。

第三方模块:第三方程序员或公司开发的模块,需要先安装再使用,可以通过NPM包管理器进行安装。

系统模块:Node.js自带的系统模块,不需要安装下载,直接引用即可【如:fs,Http,url等】。

第三方模块

如果要使用第三方模块,必须要先进行安装,以Jquery为例,如下所示:

1. 安装第三方模块

安装之前,如下所示:

Node.js模块与npm包管理器如何使用

通过安装命令【npm install jquery】进行安装,如下所示:

Node.js模块与npm包管理器如何使用

安装成功后,会自动在程序目录创建node_modules文件夹,如下所示:

Node.js模块与npm包管理器如何使用

2. 引入第三方模块

当安装成功后,在程序中直接引用即可,如下所示:

 var jquery = require("jquery"); console.log(jquery.toString());

3. 示例测试

在命令行进行测试引用第三方模块,如下所示:

Node.js模块与npm包管理器如何使用

注意:示例之所以报错,是因为jQuery是浏览器端的模块库,所以不支持服务器端调用,本次只是作为调用示例演示。

系统模块

系统模块是Node.js自带的具有特定功能的模块,不需要安装,直接使用即可。以文件模块为例,如下所示:

首先创建一个测试文件test.txt,文件内容如下:

Node.js模块与npm包管理器如何使用

 然后通过Node.js自带的fs模块进行调用,如下所示:

 var fs =require("fs"); fs.readFile("test.txt",function(err,data){     console.log(data.toString()); });

测试示例如下所示:

Node.js模块与npm包管理器如何使用

require注意事项

  • 当引入的模块存在错误时,会报错;

  • 当引入的模块路径不存在时,也会报错;

  • 当模块被重复引用是,只会加载一次【因为第一次加载时,会存入缓存区,第二次加载时,会先判断缓存区是否存在,如果存在,则直接赋值】。

关于require加载模块示意图,可参考下图:

Node.js模块与npm包管理器如何使用

exports导出对象

作用:将模块中需要共享给其他模块的数据暴露或导出到引用处。

语法:exports.属性或函数。

1. exports示例

如下示例:公开了一个用户名和sayHi方法到引用处。

 var username="小六公子"; function sayHi(){     console.log("hi,小六子"); } exports.username=username; exports.sayHi=sayHi;

2. exports注意事项

在使用exports时,注意事项如下:

exports等同于module.exports ,是module.exports的引用,内存地址一致;可通过以下方式进行判断:

Node.js模块与npm包管理器如何使用

exports是一个对象,可以添加属性和方法,但不可以修改exports指向的内容。如下所示:

 exports.sayHi=sayHi; exports=sayHi;//此语法是错误的,不能修改指向

module模块对象

在module中最重要的就是exports对象,如下所示:

  • module.exports,是真正的暴露对象,exports只是对它的引用。

  • module.exports.属性=值;

  • module.exports.方法=函数;

  • module.exports=对象或函数;//直接导出对象

module对象的其他属性:

  • module.id 模块的ID,即对象的唯一路径。

  • module.parent 模块的父对象。

  • module.filename,模块的文件名和路径。

  • module.children 子模块,是一个数组类型。

  • module.paths 数组类型。当前模块查找对象的路径列表。

关于module对象具体详细信息如下所示:

Node.js模块与npm包管理器如何使用

package.JSON包描述文件

NPM【Node Package Manager】是基于Node.js的包管理工具。在Node.js项目中,JS的基本单位是单个文件,但是复杂的模块往往由多个子模块组成。为了便于管理和使用,我们可以把由多个模块组成的大模块称为包,并把所有子模块放在同一个目录中。组成一个包的所有子模块中,需要有一个入口,入口模块的导出对象被称为包的导出对象。默认包中的入口模块为index.js,也可以在包中新建一个package.json包描述文件,设置main属性为模块的入口。

1. 什么是package.json ?

package.json是node.js项目的包描述文件,以json格式的形式描述项目。以之前安装的jQuery为例,可以查看对应的package.json文件,如下所示:

{  "_from": "jquery",  "_id": "jquery@3.6.0",  "_inBundle": false,  "_integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPCSSdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==",  "_location": "/jquery",  "_phantomChildren": {},  "_requested": {    "type": "tag",    "reGIStry": true,    "raw": "jquery",    "name": "jquery",    "escapedName": "jquery",    "rawSpec": "",    "saveSpec": null,    "fetchSpec": "latest"  },  "_requiredBy": [    "#USER",    "/"  ],  "_resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",  "_shasum": "c72a09f15c1bdce142f49dbf1170bdf8adac2470",  "_spec": "jquery",  "_where": "D:\\MyProject\\Demonodejs",  "author": {    "name": "OpenJS Foundation and other contributors",    "url": "https://GitHub.com/jquery/jquery/blob/3.6.0/AUTHORS.txt"  },  "bugs": {    "url": "https://github.com/jquery/jquery/issues"  },  "bundleDependencies": false,  "commitplease": {    "nohook": true,    "components": [      "Docs",      "Tests",      "Build",      "Support",      "Release",      "Core",      "ajax",      "Attributes",      "Callbacks",      "CSS",      "Data",      "Deferred",      "Deprecated",      "Dimensions",      "Effects",      "Event",      "Manipulation",      "Offset",      "Queue",      "Selector",      "Serialize",      "Traversing",      "Wrap"    ],    "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)",    "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])"  },  "deprecated": false,  "description": "javascript library for DOM operations",  "devDependencies": {    "@babel/core": "7.3.3",    "@babel/plugin-transfORM-for-of": "7.2.0",    "commitplease": "3.2.0",    "core-js": "2.6.5",    "eslint-config-jquery": "3.0.0",    "grunt": "1.3.0",    "grunt-babel": "8.0.0",    "grunt-cli": "1.3.2",    "grunt-compare-size": "0.4.2",    "grunt-contrib-uglify": "3.4.0",    "grunt-contrib-watch": "1.1.0",    "grunt-eslint": "22.0.0",    "grunt-git-authors": "3.2.0",    "grunt-jsonlint": "1.1.0",    "grunt-karma": "4.0.0",    "grunt-newer": "1.3.0",    "grunt-npmcopy": "0.2.0",    "gzip-js": "0.3.2",    "husky": "1.3.1",    "insight": "0.10.1",    "jsdom": "13.2.0",    "karma": "5.2.3",    "karma-browserstack-launcher": "1.4.0",    "karma-chrome-launcher": "2.2.0",    "karma-firefox-launcher": "1.1.0",    "karma-ie-launcher": "1.0.0",    "karma-jsdom-launcher": "8.0.2",    "karma-qunit": "3.0.0",    "load-grunt-tasks": "5.1.0",    "native-promise-only": "0.8.1",    "promises-aplus-tests": "2.1.2",    "q": "1.5.1",    "qunit": "2.9.2",    "raw-body": "2.3.3",    "requirejs": "2.3.6",    "sinon": "2.3.7",    "sizzle": "2.3.6",    "strip-json-comments": "2.0.1",    "testswarm": "1.1.2",    "uglify-js": "3.4.7"  },  "homepage": "https://jquery.com",  "husky": {    "hooks": {      "commit-msg": "commitplease .git/COMMIT_EDITMSG",      "pre-commit": "grunt lint:newer qunit_fixture"    }  },  "keyWords": [    "jquery",    "javascript",    "browser",    "library"  ],  "license": "MIT",  "main": "dist/jquery.js",  "name": "jquery",  "repository": {    "type": "git",    "url": "git+https://github.com/jquery/jquery.git"  },  "scripts": {    "build": "npm install && grunt",    "jenkins": "npm run test:browserless",    "start": "grunt watch",    "test": "npm run test:slim && npm run test:no-deprecated && npm run test:no-sizzle && grunt && grunt test:slow && grunt karma:main && grunt karma:amd",    "test:amd": "grunt && grunt karma:amd",    "test:browser": "grunt && grunt karma:main",    "test:browserless": "grunt && grunt test:slow",    "test:no-deprecated": "grunt test:prepare && grunt custom:-deprecated && grunt karma:main",    "test:no-sizzle": "grunt test:prepare && grunt custom:-sizzle && grunt karma:main",    "test:slim": "grunt test:prepare && grunt custom:slim && grunt karma:main"  },  "title": "jQuery",  "version": "3.6.0"}

2. 如何创建package.json文件?

在node.js中,可以根据向导进行创建。在命令行,切换目录到程序所在目录,然后输入命令【npm init】即可开启包文件创建向导。如下所示:

Node.js模块与npm包管理器如何使用

根据向导安装步骤依次填写对应信息,经过以上7步,即可创建包文件,创建成功后在程序目录下,如下所示:

{  "name": "demonode",  "version": "1.0.0",  "description": "node示例",  "main": "index.js",  "dependencies": {    "jquery": "^3.6.0"  },  "devDependencies": {},  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1"  },  "author": "小六公子",  "license": "MIT"}

注意:如果创建默认package.json文件,可以采用【npm init -y】命令,一键生成。

NPM基础

1. 常用npm命令

常用的npm命令,如下所示:

  1. 安装命令:通过安装包命令【 npm install 包名称】进行安装指定的第三方包。

  2. 缩写安装命令:通过命令【npm i 包名称】安装指定的第三方包。

  3. 指定版本安装:通过命令【npm i 包名称@verson】安装指定版本的第三方包。默认安装最新版本。

  4. 全局安装:通过命令【npm i 包名称 -g】进行全局安装第三方包,即可应用于所有的项目。默认全局安装目录【C:\Users\登录账号\AppData\Roaming\npm\node_modules】

  5. 安装同时写入依赖列表:通过命令【npm i 包名称 --save】在安装的同时写入包描述文件中的依赖列表中。

  6. 安装同时写入开发时依赖列表:通过命令【npm i 包名称 --save-dev】在安装的同时写入包描述文件中的开发依赖列表中。

  7. 查找包:通过命令【npm serach 包名称】进行查找。

  8. 预览包:通过命令【npm view 包名称】进行预览包的内容。

  9. 卸载包:通过命令【npm uninstall 包名称】进行卸载已安装的包。

  10. 更新包:通过命令【npm update 包名称】更新包。

2. npm 示例

以npm的安装和查找为例,如下所示:

Node.js模块与npm包管理器如何使用

cnpm基础

1. 什么是cnpm ?

npm命令是需要从国外的服务器进行下载和安装,速度会比较慢,所有为了满足国内的应用需要,cnpm应运而生。cnpm是淘宝提供的与npm服务器保持同步更新的软件包镜像。

目前cnpm的网址为【https://npmmirror.com/package/cnpm】,关于cnpm简介,如下所示:

Node.js模块与npm包管理器如何使用

2. 使用cnpm

如果要使用cnpm,可以通过命令进行注册,如下所示:

 npm install -g cnpm --registry=https://registry.npmmirror.com

Node.js模块与npm包管理器如何使用

cnpm命令使用和npm一致,加上c前缀即可。示例如下所示:

Node.js模块与npm包管理器如何使用

控制台输出

1. 控制台常见输出

在Node.js做为服务器端运行时环境,所以控制台输出也是比较常见,如下所示:

  • 在Node.js中,控制台输出有以下几种:

  • console.log(),与浏览器中的用法一致。

  • console.dir() ,输出目录信息。

  • console.error(),错误信息输出。

  • console.time(标识符) 与console.timeEnd(标识符)一起使用,可以计算某段程序的执行时间。

  • console.assert(条件表达式,输出内容);当条件表达式为假时,输出内容。

2. 控制台输出示例

控制台输出的常用语法示例,如下所示:

console.log("我是小六子");console.dir("我是小六子呀");console.error("小六子出错了");console.time("t1");for(var i=0;i<99999;i++){    //}console.timeEnd("t1");

示例运行截图,如下所示:

Node.js模块与npm包管理器如何使用

Node.js作用域

1. 什么是作用域?

作用域:规定了一个变量和函数可以使用的范围,作用域分为两种:全局作用域,局部作用域【函数作用域】。在Node.js中,一个文件就表示一个模块,模块中使用var定义的变量为局部变量,只能在模块中使用。因为模块在使用时会被Node.js编译为一个函数。

2. 全局变量

如果将数据共享给其他模块,可以通过两种方法:

  • exports.属性或函数 的方式导出。

  • 声明为全局变量。

全局变量,通过【global.属性或函数=值】的方式使用。如下所示:

 var username="小六公子"; function sayHi(){     console.log("hi,小六子"); } global.username=username; global.sayHi=sayHi;

调用全部变量,如下所示:

 var obj =require("./demo01-1.js"); console.log(username); sayHi();

注意:global关键字在调用时可以省略。使用方式几乎和exports一致。

到此,相信大家对“Node.js模块与npm包管理器如何使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Node.js模块与npm包管理器如何使用

本文链接: https://www.lsjlt.com/news/325309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node.js模块与npm包管理器如何使用
    本篇内容主要讲解“Node.js模块与npm包管理器如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js模块与npm包管理器如何使用”吧!require函数作用:在当前模块中加载...
    99+
    2023-06-29
  • Node.js基础入门之模块与npm包管理器使用详解
    目录require函数模块分类第三方模块1. 安装第三方模块2. 引入第三方模块3. 示例测试系统模块require注意事项exports导出对象1. exports示例2. exp...
    99+
    2022-11-13
  • Node.js中的模块化,npm包管理器详解
    目录模块化的基本概念什么是模块化模块化拆分的好处Node.js中的模块化Node.js中模块的分类加载模块模块作用域向外共享模块作用域中的成员module对象exports对象npm...
    99+
    2022-11-12
  • Node.js包管理器npm的具体使用
    目录目的npm init 与 package.json文件模块安装与管理安装模块查看已安装模块更新模块删除模块npx模块编译版本控制换源使用 nrm 工具换源使用 cnpm 代替 n...
    99+
    2022-11-12
  • Node.js包管理器npm怎么用
    这篇文章主要介绍Node.js包管理器npm怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!目的目前的Node.js安装包中都带有一个重要的工具 包管理器npm 。npm主要有两方面功能:下载管理第三方模块;构建...
    99+
    2023-06-21
  • 详解Node.js包的工程目录与NPM包管理器的使用
    工程目录 了解了以上知识后,现在我们可以来完整地规划一个工程目录了。以编写一个命令行程序为例,一般我们会同时提供命令行模式和 API 模式两种使用方式,并且我们会借助三方包来编写代码。除了代码外,一个完整的...
    99+
    2022-06-04
    管理器 详解 目录
  • node.js的NPM包管理工具如何使用
    这篇文章主要介绍“node.js的NPM包管理工具如何使用”,在日常操作中,相信很多人在node.js的NPM包管理工具如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-12-05
    node.js npm
  • Node.js的npm包管理器基础使用教程
    配置 npm set npm set init-author-name 'Your name' npm set init-author-email 'Your email' npm set init...
    99+
    2022-06-04
    管理器 基础 教程
  • Node.js的包管理器NPM是什么,以及如何使用它?
    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它使得使用JavaScript在服务器端开发变得简单和高效。Node.js自带一个包管理器,叫做NPM(Node Package Manager),它允许开发者...
    99+
    2023-06-21
    并发 ide npm
  • Node.js安装教程和NPM包管理器使用详解
    2009年的JSCOnf大会上,一个叫Ryan Dahl的年轻程序员向人们展示了一个他正在做的项目,一个基于Google V8引擎的JavaScript运行平台,它提供了一套事件循环和低IO的应用程序编程接...
    99+
    2022-06-04
    管理器 详解 教程
  • Node.js中的包管理工具npm怎么使用
    本篇内容介绍了“Node.js中的包管理工具npm怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一...
    99+
    2022-10-19
  • Node.js 中如何使用fs与Path模块
    Node.js 中如何使用fs与Path模块,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。概述:文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。可以...
    99+
    2023-06-20
  • 如何使用yarn代替npm管理前端项目模块依赖
    这篇文章将为大家详细讲解有关如何使用yarn代替npm管理前端项目模块依赖,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是 yarn简单来说,yarn 是一个与 np...
    99+
    2022-10-19
  • 如何判断当前使用哪种npm包管理器
    这篇文章主要介绍了如何判断当前使用哪种npm包管理器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何判断当前使用哪种npm包管理器文章都会有所收获,下面我们一起来看看吧。实现方式Vue 仓库 目前强制开发者使...
    99+
    2023-07-05
  • Node包管理器npm和yarn怎么使用
    这篇文章主要介绍“Node包管理器npm和yarn怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node包管理器npm和yarn怎么使用”文章能帮助大家解决...
    99+
    2022-10-19
  • 如何在 Java 中使用 npm 模块?
    随着现代 Web 开发的发展,前端技术在不断迭代更新,而 Node.js 和 npm 作为前端技术的重要工具,已经成为了 Web 开发中必不可少的一部分。但是,对于 Java 开发者来说,如何在 Java 中使用 npm 模块却是一个比较...
    99+
    2023-07-08
    容器 npm 框架
  • ASP和NumPy的学习笔记:如何使用NPM进行模块化管理?
    随着Web应用程序的不断发展,越来越多的开发人员倾向于使用ASP.NET,这是一个开发Web应用程序的框架。而在数据科学领域,NumPy是一种流行的Python库,它提供了用于高效处理数组和矩阵的工具。无论你是从事Web开发还是数据科学,...
    99+
    2023-09-23
    numy 学习笔记 npm
  • 如何在Linux环境下使用npm管理ASP编程所需的模块?
    在ASP编程中,我们经常需要使用各种不同的模块来完成我们的任务。例如,我们可能需要使用Express来创建Web应用程序,使用MongoDB来存储数据,使用Passport来进行身份验证等等。在这种情况下,npm是一个非常有用的工具,它可...
    99+
    2023-06-04
    编程算法 npm linux
  • npm是什么?如何使用它来管理JavaScript包?
    随着JavaScript应用程序的复杂性不断增加,我们需要使用各种库和框架来帮助我们管理代码。 npm是一个非常流行的包管理器,它允许我们轻松地安装、更新和删除JavaScript包。在本文中,我们将探讨npm的一些基础知识以及如何使用它...
    99+
    2023-09-11
    开发技术 numpy npm
  • 如何在Java中使用NPM安装和管理包?
    在Java开发中,我们经常会用到一些第三方的库或工具,这些库和工具的安装和管理是非常重要的。在前端开发中,NPM是一个非常流行的包管理器,它可以帮助我们方便地安装和管理前端相关的库和工具。在本文中,我们将探讨如何在Java中使用NPM安装...
    99+
    2023-08-18
    http npm spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作