模块化的发展史:
对于 node 中的模块化实现,是类似下面这种方式实现的吗?
实现猜测:node 在内存中使用模块路径作为 key ,模块中暴露的数据(module)作为 value 在内存中生成一个 k-v 内存数据库,把所有暴露的模块数据保存在内存中
// a.js
console.log(arguments.callee + "");
// 执行 node a.js 的输出是一个函数字符串,说明模块中代码被 node 包装到一个函数中执行
function (exports, require, module, __filename, __dirname) {
console.log(arguments.callee+'');
}
1
tianzi123 2023-05-29 11:51:35 +08:00
现在一般用 es 模块化吧,这才是主流啊
|
2
jones2000 2023-05-29 12:24:05 +08:00
以前 1 个前端自己写点 js 代码就可以搞定, 现在变成了 N 个前端+一堆第 3 个方插件来搞, 最后编译完了还是 js.
|
3
cangcang 2023-05-29 15:26:45 +08:00
以前一个农民自己拿镰刀就可以完成收获,现在变成了 N 个农民+一堆机器来搞,最后收获完了还是那堆稻子。
|
4
yishibakaien 2023-05-29 15:57:29 +08:00 1
前端不强调模块化,而强调工程化
前端模块化的方案有很多种,主要是 commonjs esmodule ,主要的作用是把各个功能放在一个个文件中隔离开,并对外暴露,给外部使用,同时便于维护管理 模块化的目的是为了工程化 工程化的目的是为了提高应用的可维护性、可迭代性,最终是为了提高效率,降低成本 |
5
insanny 2023-05-29 16:16:55 +08:00
可以看下 require 的简易版本实现,理解透了就知道 module 是怎么回事了
( node 运行时底层的 nativeModule 和 buitin 也有一套 Module 的模块机制,不过这一块涉及到源码,我看不太懂,看了一会就把自己绕晕了...如果不是很有兴趣不建议花太多时间在这) |