美文网首页
关于JS模块化方案

关于JS模块化方案

作者: Gaarahan | 来源:发表于2020-04-11 17:27 被阅读0次

解答并整理一下自己对于模块化一直以来不够清楚的地方


梳理一下概念

  • 模块化是一种将复杂程序拆分为可按需导入的单独模块的机制,它广泛存在于各种程序设计语言中
  • 我们所使用的JS的模块化方案,就是对模块化机制的实现。早期的JS程序只负责处理简单的页面交互,并不庞大,因此没有设计好的模块化方案。但随着JS程序越发庞大,需求推动之下,一些JS库或个人设计了自己的模块化方案,就有了现在的CommonJS,AMD,CMD
  • ES-Module是后来者,它的目标是为JS提供一个官方标准的Module实现
  • 上面提到的都是解决方案,是一种设计,具体谁(某个框架或库)使用哪个解决方案,还是看框架设计者的选择。如经常提到CommonJS,总是和NodeJS联系在一起,好像两者密不可分,但实际上,CommonJS并不是NodeJS设计的,而且如今的NodeJS也提供了对于ES-Module的支持

区分module.exports 与 exports

NodeJS文档里做了详细的说明
简单来说:exports是一个独立的变量,只是引用了module.exports,用以简化写法。

  • 了解两者本质之后,就能理解两者的差异了。在不重新赋值的情况下,module.exports 与 exports 指向的是同一个对象,因此表现一致。如module.exports.a = 1可以简写为exports.a = 1
  • 当赋值时,两者便有了差异:
// a.js
exports = 1;

//b.js
module.exports = 1;

// c.js
const a = require('./a');
const b = require('./b');
console.log(a);      // => {}
console.log(b);      // => 1

这样的结果是因为require()只会返回module.exports的值,而对于a.js来说它只是改变了exports这个变量的指向,并不能影响到module.exports,因此返回的仍然是空对象

相关文章

  • 关于JS模块化方案

    解答并整理一下自己对于模块化一直以来不够清楚的地方 梳理一下概念 模块化是一种将复杂程序拆分为可按需导入的单独模块...

  • 模块化开发

    什么是模块化? 模块化就是讲js文件按照功能分离,根据需求引入不同的文件中。源于服务器端。 js模块化方案有AMD...

  • Webpack原理-从前端模块化开始

    当前主流 JS 模块化方案 CommonJS 规范,nodejs 实现的规范 AMD 规范,requirejs 实...

  • 前端javascript模块化

    JavaScript js 模块化 关于js模块化的理解写法一 写法二 写法三 写发四(不推荐) 写发五 (错误写...

  • (多人合作)怎么避免多人开发时函数重名的问题?

    解决方案1 基于单例模式实现模块化开发, 基于闭包实现模块化开发, 基于cmd, amd, common.js规范...

  • 关于JS模块化时循环加载的那些事儿

    关于JS模块化时循环加载的那些事儿 关于JS模块化的相关知识有很多,一些基本的知识平时都会有注意到,但是在实践中发...

  • 聊聊前端模块化

    从JSP到React,前端模块化到底经历了哪些。 模块化方案 在ajax出现之前,js不需要实现复杂的业务需求,模...

  • 关于前端模块化开发

    关于前端模块化开发 1 前端中有哪些模块化开发的规范以及实现方案 2 模块化的开发的好处 3 CommonJS

  • 好程序员web前端教程分享js中的模块化一

    好程序员web前端教程分享js中的模块化一:我们知道最常见的模块化方案有CommonJS、AMD、CMD、ES6,...

  • 前端开发体系建设

    前端集成解决方案要求: 模块化开发。最好能像写nodejs一样写js,很舒服。css最好也能来个模块化管理! 性能...

网友评论

      本文标题:关于JS模块化方案

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