Nodejs 有没有讨厌isaacs这个贡献者的...

Nodejs 有没有讨厌isaacs这个贡献者的…

CHANGE LOG 里早就看见这个名字不顺眼了…

这次又把require.extensions搞掉,让NODE在系统锁定模块里留下一坨Stability: 0 Deprecated的奇葩物…

32 回复

Node.js 有没有讨厌 isaacs 这个贡献者的…

背景

在 Node.js 的社区中,有很多贡献者为这个开源项目做出了巨大的贡献。其中,Isaacs(也被称为 isaacs)是一个非常重要的人物。他不仅创建了 npm(Node.js 的包管理器),还对 Node.js 核心库做了很多改进。然而,他的某些决定或行为有时也会引起一些开发者的不满。

具体问题

在这篇帖子中,有人提到了他们不喜欢 isaacs 的原因。具体来说,他们提到 CHANGELOG 中的名字让他们感到不爽,特别是最近的一次改动——移除了 require.extensions,这导致了一些稳定性问题。

示例代码

让我们来看一下 require.extensions 是什么以及为什么它的移除会带来问题。

// 假设我们有一个简单的文件 'example.js'
console.log('This is an example file.');

// 通过 require.extensions 修改文件解析逻辑
require.extensions['.js'] = function(module, filename) {
    module._compile('console.log("Modified content");', filename);
};

const example = require('./example.js');

在这个例子中,我们通过 require.extensions 来修改 .js 文件的加载方式。这种方式允许我们在加载文件之前对文件内容进行修改。

影响

移除 require.extensions 后,开发者无法再通过这种方式来修改文件加载逻辑。这对于一些依赖于这种机制的库或工具来说,可能会导致兼容性问题。这也可能是引起某些开发者不满的原因之一。

结论

尽管 isaacs 在 Node.js 社区中的贡献不容忽视,但他的某些决定也可能引发争议。对于 require.extensions 的移除,虽然可能会影响某些特定场景下的开发者,但它也是为了推动 Node.js 向更稳定、更规范的方向发展。因此,理解这些变化背后的意图,对于使用 Node.js 的开发者来说是非常重要的。


希望这篇帖子能够帮助你更好地理解 isaacs 在 Node.js 社区的角色及其带来的影响。


重点是看理由嘛,他为什么要把 require.extensions搞掉?

NPM 作者… Node 自从 Ryan 退下之后继任的那位… 我还在 Twitter 上 fo 了的诶

isaasc把require.extensions设为deprecated而已,又不是不让你用。buffer的binary编码格式早就被deprecated,还不是大把人buf.toString(‘binary’)用的不亦乐乎。他只是想说:够了,你们这些人别再往npm上传用coffeescript写的模块,老子不喜欢coffeescript。

此人贡献颇多,既然精力旺盛,为何不去维护而是让这个可能有BUG的东西永久留在NODE里

哈哈,我也不喜欢coffeescript

我也不喜欢 coffeescript

我也不喜欢 coffeescript

我也不喜欢 coffeescript

我也不喜欢 coffeescript

ToT 我以后只能投奔 Ruby 社区了么 Github 都选择了 CoffeeScript 为什么 JS 社区里反而这么不讨好

不是都说了 有更好的方式

运行前先编译成js再require

啥时候变成反对CoffeeScript了?

我也不喜欢 coffeescript

我也不喜欢 coffeescript

主题稍微偏了吧?怎么一下全部变成反对coffeescript了。

0,0 这么多人讨厌coffeescript啊, 其实我也一样

其实我是完全不明白,为什么扯coffeecscript…

coffee 躺枪

哎呀 我就特别喜欢coffeescript 现在随便绑定个单击事件都要->->->->->,然后等着一起实习的童鞋来问我

我也不喜欢 coffeescript

还是不甘心, 糟糕楼上说讨厌的同学和大哥都没说理由… 如果说不喜欢, 主观上的不喜欢当然每个人不一样, 但大多场合总能有些理由 我承认我的情况特殊, … 不好意思我整个罗嗦一遍好了… 我是非计算机专业的学生, 高中受到些刺激开始努力学电脑, 大学就更花时间在上边了 有一些先入为主的观念是我学计算机就是为了掌握强大的能力创造新的东西 在学 JS 前我尝试过 C, Python, 最后直到学 CSS3 才是我先学会能写东西的 大学我长期是自学, 靠 Google, 因为 Web 是创建界面最方便的方案, 我逐渐熟悉着 JS

中间很长时间我没进步, 觉得语言太复杂, 不明白学语言应该学什么 但首先我注意到用编辑器(我是 Linux, 没有多接触 Windows IDE 各种) 编辑器上括号多的代码结构复杂,语义不明确, 思路也不清晰 我之前也就看看书, 看看网页的人, 喜欢漂亮的设计. 对这样混乱的语法很反感 Ruby, Python, Lua 等等当时也看过教程, 以及对比其他. 但我都没有深入 原因简化了说是我看多了界面, 认准了能快速写界面是学习编程必须的, 于是只有 JS

当时也没有学会 HTTP, 但是不知怎么接触了 Node, 特别是 Socket.IO 然后我就用 Socket.IO 写出了当时我很想造的一个模仿 Google Wave 的聊天 此后我就认准了 Node, 记不清楚, 当时我已经在用 coffee 了 https://github.com/jiyinyiyong/zhongli/commit/6a61f022fd1ac3cbdfe07d476cba3e06e05d1ccf 对于新手来说, coffee 远比 JS 清晰和简洁, 不仅是短, 重要的是可读性更好 更重要的是 coffee 里函数概念很清晰, 感觉不到多少困惑, 于是路开始很顺

我向来讨厌括号, 就跟很多人想来讨厌缩进一样, 我有我的理由 一个人为什么不能专心编程, 要去注意结尾有没有分号, 甚至可选 为什么不能让编程更简洁清晰, 让我有更多的时间专心在问题重要的地方 明明减少字符数量人们能更快地编程, 好比更快地思考, 却人们愿意慢下来打括号 好了括号存在的时候我要长长地找括号的匹配, 一定要去关闭一次 而且相对编译器的难度, 简洁的缩进语法不算难题时, 大家依然不用缩进 甚至在 JSON 里改了一行还要看到另一行内容出现在 diff 里边的时候

我非常觉得很多的都是在被人们习惯, 就像 JS 自身就导致 ES6 进展缓慢 我算年轻, 也幸运, 学编程时就有 V8, 进阶时有 Haskell 在国内开始变热 我进阶的时候还有大量的 Altjs 语言雨后春笋一样让我觉得 CoffeeScirpt 自然而然 我不喜欢 JS 我还在学校我尽可能避免着 JS 的包袱, 即便最后无可避免

对我来说 coffee 是我首先学会的语言, 因为简洁和清晰… 喜欢和信仰的被那么多人不喜欢压力很大, 很伤心有没有啊… 我也对强迫别人喜欢东西深恶痛绝, 不过, 解释一下为什么不喜欢可以的吧?

糟糕, <p>margin 不够,

$('#main p').css('margin', '26px 0px')

喜欢就用吧,毕竟这个东西的出发点也是在某些方面降低JS的门槛,最终还是要面对原生JS的,若连原生JS都嫌麻烦真是懒得可以呀… 你让java情何以堪…

另外Coffee在前端没有支持,在后端拖累性能,用则两方不讨好。对自己学习也没好处,熟练掌握JS是要花很长时间滴。 NODE对开发者的要求不低,因为语言本身很灵活所以设计思想很重要不同的人写出来的东西差别明显

coffee 不止是降低门槛, 简化是为了代码更清晰, 更不容易出错 说我懒没问题, 而且我的确没学会 Java, 总之已经这样选择了

你说的前端支持是不是指调试工具? 现在的 SourceMap 正在让这变好 后端如果发布模块, 都可以是预编译执行, 不太明白性能说哪? 熟练掌握 JS 的确要很长, 说实话我都有点觉得这个坑太大了 为了学 Node 都想去搞懂 Scheme 的 Continuation 了… 难度真心高啊

不需要纠结,coffee很好。 但我不会使用。为什么?因为我是从c#和java程序员,这里大多估计也不仅仅是使用node.js.虽然javascript不等于java,但在语法上还是很象,也就是以前经常写c#和java的现在用javascript的原生语法来写更习惯一些而以。

我也不喜欢 coffeescript

我是简单学习过 coffeescript 过,算是稍微接触过,后来感觉写出来的代码,拿出来讨论,有部分人没学过语法,就很难看懂。

缩进在写一些小玩意儿的时候看起来很清晰,但当你的项目上了规模,代码庞大以后,再去重构的时候,你发现你的进度比不用缩进慢得不是一点半点,除非我一直写一些上不起台面的小demo,小片段,或者从时光随道中提前把以后的需求都想好,在web开发这种快速迭代的形势下,缩进除了显示一堵不必要的语法错误以外,真没有什么用处

关键是要统一吧。一个项目组的人最好都是用同样的,要么都是原生,要么都是coffeescript/livescript等。只要统一了,至少对于server端来说维护重构都不是太大问题。

但有时调用第三方的库如果要修改第三方的一些原生js代码来适应项目的时候就挺疼的。。。

这和我的经验相反, 可能我调试的代码不够长… 我遇到的是 JS 经常遇到结尾的分号逗号没加, 或者花括号对错 楼上说的缩进带来语法错误, 我 coffee 写下来很少碰到呀 能不能再说具体一些?

没什么好纠结的,看老赵对wind.js放弃就知道JS社区的小白有多难搞。

我也不喜欢 coffeescript

关于你的问题,我理解你对某些Node.js核心贡献者(例如isaacs)所做的某些决定感到不满。具体来说,你提到的是require.extensions被移除,这确实给一些开发者带来了困扰。

require.extensions 的背景

require.extensions 是一个曾经存在于 Node.js 中的机制,它允许开发者自定义如何处理不同文件扩展名的模块加载。比如,你可以定义如何处理 .foo 扩展名的模块。这种灵活性对于某些场景是有帮助的,但同时也引入了一些复杂性和潜在的性能问题。

为什么被移除?

require.extensions 被移除的主要原因是它带来了一些维护上的挑战。例如,它增加了核心代码的复杂性,并且在某些情况下可能导致性能问题。此外,这种灵活性可能会导致一些难以追踪的问题,因为开发者可能会无意中修改了核心的模块加载逻辑。

示例:处理不同的文件扩展名

尽管 require.extensions 已经被移除,但你可以通过其他方式实现类似的功能。例如,你可以使用像 esm 这样的库来支持 .mjs 文件,或者通过 Babel 等工具来转换你的代码。

// 使用 esm 库处理 .mjs 文件
import { createRequire } from 'module';
const require = createRequire(import.meta.url);

const myModule = require('./my-module.mjs');

总结

虽然 require.extensions 被移除可能让你感到不便,但这是为了更好地维护 Node.js 的长期稳定性和性能。你可以通过其他工具或库来实现类似的功能,以满足你的需求。

希望这能帮助你理解背后的逻辑,并找到合适的替代方案。

回到顶部