前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >commonJS规范及nodejs的模块儿机制

commonJS规范及nodejs的模块儿机制

作者头像
terrence386
发布2022-07-14 21:06:51
3520
发布2022-07-14 21:06:51
举报
文章被收录于专栏:JavaScript高级程序设计

没有苦难的人生没有任何意义,为中华民族的伟大复兴而读书。

前情回顾

上篇文章分享了的一个实现小程序的持续集成的问题,小程序的获取用户信息的接口getUserInfo将在2021-04-13号被getUserProfile替代,所以的需要考虑一下项目中是否需要更新了。

今天要重新回顾一下commonJS规范nodejs的模块儿机制,这篇讲不完的话, 下篇会接着聊这个话题。

规范和模块机制产生的背景

Javascript在很长一段时间内被认为是一种网页脚本web1.0时代大致用来做表单校验或者做网页特效。web2.0时代,慢慢被重视起来,大致经历了工具类库(jquey用来兼容浏览器)-->组件(开发功能模块)-->框架(功能模块儿组织)-->应用(业务模块组织)这么几个过程的变迁。

在这种变迁的过程中,js不断的被抽象、聚合。相对于用script标签组织代码,抽象后的js能够更好的组织业务逻辑,尤其是node出现之后,js的前端应用更加活跃,慢慢的社区为Javascript定制了相应的规范。

Commonjs规范的远景

Commonjs规范 的一个出发点是:希望javascript能够运行在任何地方

在实际工作中,Javascript的工作场景基本仅限于宿主浏览器中API支持程度,虽然web2.0以后,HTML5崭露头角后,浏览器中出现了很多新的,强大的API, 但是相对于其他语言,JavaScript本身的规范还是非常薄弱。

  • 没有模块系统
  • 标准库少
  • 没有标准接口
  • 缺乏包管理系统

Commonjs规范 为JavaScript开发大型应用指明了道路,这些规范包括:模块二进制Buffer,字符集I/O流文件系统套接字...

Commonjs规范的使用

Commonjs规范 的使用非常简单,主要有模块引用模块定义模块标识三个部分。

  • 模块引用。示例代码:
代码语言:javascript
复制
// 采用require方法引入模块API
var fs =  require('fs')

  • 模块定义。在模块中存在一个module对象,代表模块儿本身,同时上下文环境提供了一个exports对象用于导出当前模块的方法或变量,并且是唯一导出的出口。同时,exportsmodule的属性。在Node中一个文件就是一个模块。示例代码:
代码语言:javascript
复制
// saveToken.js
const fs =  require('fs')

module.exports = function (filename,readStream){
    return new Promise(resolve=>{
        const writeStream = fs.createWriteStream(filename);
        writeStream.on('finish',()=>{
            setTimeout(resolve,100);
        })
        readStream.pipe(writeStream)
    })
}

  • 模块标识。模块标识其实就是传递给require()方法的参数,必须是合格小驼峰命名的字符串,或者以.,..开头的相对路径或绝对路径,可以忽略后缀名js

这样一来,每个模块具有独立的空间且互不干扰,整个业务逻辑也显得清晰。

Node模块儿

在Node中,模块儿可以分为两大类,一类是Node提供的模块成为核心模块;另一类是用户编写的模块,成为文件模块

在Node中引入模块,大致会经历这么几个过程:

  • 路径分析
  • 文件定位
  • 编译执行

今天先分享到这里,下篇文章会讲解这几个过程

总结

  • CommonJs规范背景
  • CommonJs规范可以解决什么问题
  • CommonJs规范简单使用

javascript基础知识总结

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaScript高级程序设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前情回顾
  • 规范和模块机制产生的背景
  • Commonjs规范的远景
  • Commonjs规范的使用
  • Node模块儿
  • 总结
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档