• Node.js学习笔记_No.03


    模块化

    概念:把一个大文件拆成独立并互相依赖的多个小模块
    把代码进行模块化拆分的好处:
    ①提高代码地复用性、可维护性;
    ②可以按需加载;


    分类

    内置模块:Node.js官方提供(eg:fs、path、http)

    const fs = require('fs')
    
    • 1
    • 自定义模块:用户创建的每个.js文件都是自定义模块
    const custom = require('./custom.js')//引用路径(后缀名.js可省)
    
    • 1
    • 第三方模块(包):第三方开发,使用时需要先下载
    const moment = require('moment')
    
    • 1

    模块作用域

    好处:防止全局成员(变量、函数)污染问题;

    向外共享模块作用域

    module对象:每个.js自定义模块中都有一个module对象,储存和当前模块有关的信息(可打印查看)
    module.exports对象:将模块内的成员共享出去,供外界使用;
    exports默认和module.exports指向同一个(空)对象(二者不能完全划等号,只是在开始指向相同)
    require()方法导入自定义模块时,实际上导入的是module.exports所指的对象;
    导入的结果永远以module.exports最后指向的新对象为准

    //在一个自定义模块中,默认情况下
    module.exports = {}//为空
    
    • 1
    • 2
    //可挂载属性和方法,向外共享成员
    const age = 10
    exports.age = age//用该方法暴露可以让外界访问到
    exports.username = 'zs'
    exports.sayHello = fuction() {
    	console.log('Lulaoye')
    }
    
    2. //让module.exports 指向一个全新的对象
    module.exports = {
    	nickname: '凯亚',
    	sayHi {
    		console.log('Hi!')
    	}
    }
    /*
    module.exports ={...}与module.exports = ...  代表意义不一样
    第一个新建了新对象,第二个是在原本指向的对象里面挂载属性
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 建议不要在同一个模块中同时使用exportsmodule.exports

    CommonJS模块化规范

    • 规定了模块的特性和各模块之间如何相互依赖
    规定

    ①每个模块内部,module变量代表当前模块;
    ②module变量是一个对象,它的exports属性(即module.exports)是对外的接口
    ③加载某个模块,其实是加载该模块的module.exports属性。require()方法用于加载模块


    npm与包

    • Node.js中的第三方模块又叫包
    • 包是基于内置模块封装出来的,提供了更高级的、更方便的API,极大的提高了开发效率
    • 下载包的地方:
      npm, Inc:国外一IT公司,旗下网站:https://www.npmjs.com/搜索所需包
      http://reqistry.npmjs.org/下载所需包
    • 如何下载包:
      还是上述公司,提供的包管理工具:Node Package Manager(npm包管理工具),该工具随Node.js的安装包一起安装到了用户电脑上
  • 相关阅读:
    MySQL的字符集设置
    边缘计算 | 在移动设备上部署深度学习模型的思路与注意点
    看看阿里文娱怎么建设开放平台,这就是专业~
    基于 nodejs+vue网上考勤系统
    网络基础-RIP协议
    【Vant Weapp】van-uploader 文件上传
    linux 安装rar工具
    【Flutter】解决报错 Cannot not find minSdk from android/app/build.gradle or android/local.propertiesSpecif
    Idea:阿里巴巴Java编码插件
    Mysql 与ES(Elastic Search)对比
  • 原文地址:https://blog.csdn.net/m0_55825393/article/details/125783484