当前位置: 首页 > article >正文

Node.js模块系统

        大家好呀,今天我们来认识以下Node.js的模块系统。 

模块系统

目录

模块系统

node项目

 创建一个完整的node项目

 模块之间的引用

 模块的导入

 模块的分类

核心模块的引用 

 获取模块的导出对象

 小结


node项目

         一个node项目,单有JS文件是不行的,它还需要第三方包来方便编写者使用(总不可能手搓吧)。因此我们就需要下载一个 node_modules 的文件夹。但是,这个包很大,所有在传输的时候一般不带这个包,传输完成后再重新下载即可。那么,到底哪些包需要下载呢?我们需要用到一个文件 package.json

 创建一个完整的node项目

         接下来我们就来创建一个完整的node项目:

  1. 我们创建一个文件夹,在集成终端打开,npm init -y 进行初始化。(注意不要以中文命名,否则报错)
  2. 这时所创建的文件夹就会出现名为:package.json 的文件,里面是一些信息。

        

     3. 接下来就是引入包,这里我们引入axios包,使用命令:npm install axios 。下载完成后就会出现名为 node_modules 的文件夹了,里面便是我们的包。

        

     4. 这时我们打开 package.json 文件,就会发现我们下载的包已经有记录了。

        

     5. 我们写完在删掉 node_modules 文件之后进行传输,传输完成之后使用命令:npm i 。快速重新下载。

 模块之间的引用

         什么是模块之间的引用呢,其实就是文件之间的互相引用,我们把分散的一个一个文件叫做模块。下次我们已经对导入导出进行简要的介绍,那么这里就来详细的进行说明:

 模块的导入
  1.  我们首先创建名为 index.js 的文件,node会直接进入名为 index.js 的文件,若是没有这个文件直接使用 node [文件夹] 的命令,报错。再随意创建 01-test.js02-test.js 两个JS文件。
  2. 这里我们先使用require引入文件,之后对require进行解释。
require('./01-test.js')
     3. 我们在两个 JS文件中用 log 随意打印一段话,之后使用 node index 命令查看是否引入成功。
 模块的分类

        在说明模块的导出之前,我们先来学习模块的分类。  

        模块分为两类,一类是核心模块,他是node自带的模块,其包含http,url,fs等二进制执行文件。

        一类是文件模块,文件模块又分为两类,自己写的和第三方模块例如 node_modules

核心模块的引用 

        核心模块的引入和第三方模块的引入一致,这里我们先在index中引入axios第三方模块。  

require('axios')

        核心模块的引用方式与第三方模块一致。

require('http')

        自己写的模块就与 01-test.js 文件的引入一致,需要绝对路径和相对路径。

 获取模块的导出对象

        那么我们应该如何获取模块导出的数据呢?我们可以先进行尝试,我们直接用一个对象obj去接受它,进行打印,查看它返回的是什么。

const obj = require('./01-test.js')

​console.log(obj);

         

        很明显,它返回了一个对象,那么,我们应该如何导出数据呢?这时就需要用到:module

        我们在 01-test.js 中定义一个变量,并把变量放进 module.exports 即可。

let a = '数据'
//导出
module.exports = {
    a
}

        我们使用 node index 命令:

        上述的导出行为使用exports也可以,但是小编推荐就使用module.exports,以免混淆,这里小编不过多介绍。

 小结

         说实话,node的学习挺无聊的,它只是在与vue框架搭建的时候会有那么一点有趣,大家只需要下载好node.js。学会操作终端,在前端进行搭建的时候会使用就可以了。好了,我们下次核心模块见。


http://www.kler.cn/a/291509.html

相关文章:

  • TLDR:终端命令的简洁百科全书
  • Python——day09
  • 如何在 Ubuntu 22.04 上安装以及使用 MongoDB
  • 绩效考核试题
  • 第十五章 C++ 数组
  • 京东零售数据可视化平台产品实践与思考
  • C#转java工具
  • 鸿蒙轻内核M核源码分析系列二一 02 文件系统LittleFS
  • 【C++设计模式】(三)创建型模式:单例模式
  • 前端框架对比
  • 学习netty 从哪里开始
  • 【Java毕业设计】基于SpringBoot+Vue+uniapp的农产品商城系统
  • 【PyTorch常用库函数】torch.add():张量的加法操作
  • 算法训练营——day4螺旋矩阵
  • 数据结构---双向链表---循环链表---栈
  • 如何用pytorch进行图像分类
  • 测试基础|记一次CPU冲高的排查过程!
  • Lua 代码编码规范
  • mybatisplus使用OptimisticLockerInnerInterceptor实现版本号乐观锁
  • 七月刚入职字节跳动的测试开发面试题,附答案
  • SpringCloud Alibaba】(十三)学习 RocketMQ 消息队列
  • Linux内核编程(十五)网络设备驱动
  • Transforms的常见用法
  • ARM的寄存器组织
  • 深度学习--机器学习相关(1)
  • 游戏:科技强国的璀璨星芒与经济增长新动力