美文网首页
Node.js初探(二)

Node.js初探(二)

作者: 喑宝儿 | 来源:发表于2021-06-12 14:02 被阅读0次
1、模块化

(1)遵守固定的规则,把一个大文件拆成独立并相互依赖的多个小模块

(2)好处:复用性、可维护性、可实现按需加载

2、Node.js中模块的分类

(1)内置模块(官方提供:http、fs、path)

(2)自定义模块(用户自己创建的js文件)

(3)第三方模块(由第三方开发的模块,使用前需要先下载)

3、操作模块

(1)加载模块:使用require()方法,在使用require方法其它模块时,会执行被加载模块中的代码

// m1.js文件
console.log('加载了自定义模块m1');

// 加载m1.js文件
const m1 = require('./06.用户自定义模块1.js') // js后缀名可以被省略
console.log(m1);

// 打印:
// 加载了自定义模块m1
// {}

(2)自定义模块中定义的变量、方法等成员,只能在模块内部被访问,可防止全局变量污染

(3)module对象:存储和当前模块有关的信息,每个自定义模块都有这个属性

Module {
  id: '.',
  path: '……',
  exports: {},
  parent: null,
  filename: '……,
  loaded: false,
  children: [],
  paths: [……]
}

(4)向外共享模块作用域中的成员

  • 在导入某个自定义模块时,实际上导入的是module对象中的exports对象,默认为空

  • 经过module.exports暴露的数据才能被访问到

    // export.js文件(不经过module.exports暴露则访问不到)
    module.exports = {
      name: '星星'
    }
    module.exports.age = 18
    
    // test.js文件
    const m = require('./exports.js')
    console.log(m)   // {name: '星星', age: 18}
    
  • 共享成员时需要注意

    导入成员时,导入的结果,永远以module.exports指向的对象为准

    // export.js文件(不经过module.exports暴露则访问不到)
    module.exports.age = 18
    // 此时module.exports指向一个全新的对象
    module.exports = {
      name: '星星'
    }
    
    // test.js文件
    const m = require('./exports.js')
    console.log(m)   // {name: '星星'}
    

(5)exports对象

向外暴露数据时也可以使用exports,exports和module.exports指向同一个对象(修改值也是同步的),最终共享的结果,还是以module.exports指向的对象为准

(6)exports和module.exports的使用误区

require()导入模块时,得到的永远是module.exports所指向的对象

防止混乱,不要在同一个模块中同时使用exports和module.exports

4、Node.js中的模块化规范

(1)CommonJS规范:规定模块的特性和各模块之间如何相互依赖

(2)CommonJS规定:

  • 每个模块内部,module变量代表当前模块

  • module变量是一个对象,它的exports属性(module.exports)是对外的接口

  • 加载某个模块,其实是加载该模块的module.exports属性。require()方法用于加载模块

相关文章

  • Node.js初探(二)

    1、模块化 (1)遵守固定的规则,把一个大文件拆成独立并相互依赖的多个小模块 (2)好处:复用性、可维护性、可实现...

  • webpack4 模块打包工具1

    第一章 webpack初探 环境安装 node.js[https://nodejs.org/en/]image.p...

  • node.js初探

    创建第一个node.js应用 node server.js接下来,打开浏览器访问 http://127.0.0.1...

  • react-native初探

    react-native初探 一 、必备软安装   两个基本软件 :node.js和python2  中文网上使用...

  • React Native初探(三)- Mac

    在React Native初探(一) - Mac和React Native初探(二)- Mac中,很简陋但是能用的...

  • Node.js初探(四)

    1、初识express: 与http模块类似,对http进一步封装,专门用来创建web服务器 服务器:web网站服...

  • Node.js初探(三)

    1、包 第三方模块,第三方免费提供下载,包是基于内置模块封装出来的 2、包的操作 https://www.npmj...

  • Nacos进阶(一)-- 集群模式部署Nacos

    关于Nacos已经展开了四篇入门文章: 初探Nacos(一)-- 单机模式启动 初探Nacos(二)-- Spri...

  • Kotlin初探(二)数据加载

    内容 Part 1:Kotlin初探(一)基础构建 Part2:Kotlin初探(二)数据加载 UI界面就是一个简...

  • Android程序员初探Vue(二):项目结构

    系列文章Android程序员初探Vue(一):环境搭建(Vue2.0)Android程序员初探Vue(二):项目结...

网友评论

      本文标题:Node.js初探(二)

      本文链接:https://www.haomeiwen.com/subject/dzpveltx.html