【读书】《Node.js Design Patterns》1.1——Node.js哲学

Node.js的哲学

书中先讲述了一下Node.js的哲学。我认为这也是很有必要的,每个语言或者平台都要它自己的思想,由于不同的思想,让它们使用于不同的场景,并朝着自己追求的方向发展,最终更好的为程序员服务。

因为Node.js是一个新兴的平台,所以他的哲学中有很多东西是继承来的。作者主要提到到了三个方面:

第一,是创始人Ryan Dahl个人的想法。他是Node.js项目的发起者和创始人,所以他的思想直接影响着Node.js的发展。

第二,是javascript的文化。Node.js虽然基于C语言开发,但最终面向程序员的,还是javascript,熟悉javascript的人清楚,这门语言有很多其他主流语言没有的“怪癖”,所以Node.js很大程度也继承了这些。

第三,是Unix哲学。初步操作过Node.js的人都会感觉到这一点,包括命令行模式下的操作,模块开发的KISS原则(Keep It Simple, Stupid)等等,都深受Uinx哲学的影响。

在书中,作者一共提到了四点哲学:微核心、微模块、微表层、简洁与使用。下面一一介绍。

微核心

微核心,就是指Node.js追求的是内核极小化,这深深影响了Node.js的文化。Node.js的内核只包含了最基础且必须的功能,而把更多的可扩展功能都放到了内核之外,内核之外的这部分叫做userland(或者userspace,这应该也是借用了*nix系统“用户空间”的概念)。这使得Node.js可以借助社区力量快速发展,凭借社区开发者们的众人之力,可以快速更新和迭代userland中的模块,而不是被动的等待内核缓慢的更新。

微模块

微模块,就是指为Node.js开发模块需要尽量微小和简洁。前面提到,Node.js的思想受到了Unix哲学的很大影响,所以它在模块开发上也与Unix系的东西保持着相同的哲学。

  • Small is beautiful.
  • Make each program do one thing well.

基于上面两条原则,Node.js更鼓励开发者去开发小巧精悍的模块,而不鼓励开发“全能王”似的模块。借助于强大的npm包管理器,这些微小的模块也可以被很好的管理。这样做是有原因的,因为在历史的经验看来,会带来一些好处:

  • 易于理解和使用
  • 更加便于测试与维护
  • 完美共享于浏览器(最后这条没太看懂)

我上篇笔记也开玩笑的说过,玩Node.js很像小时候拼积木,原因就在于它的微模块哲学。

微表层

微表层,就是指在Node.js中,不仅提出模块本身要微小简洁,连每个模块所暴露的接口也提倡简洁。作者在书中提到,开发一个模块,最好做到最终暴露给使用者的API尽量简洁,尽量降低API的数量。因为在模块功能单一的前提下,即使暴露大量的API,所常用的也只有那一两个,所以更提倡把次要的功能,作为主要API的一个参数传递,这样会使一个模块看起来更加简洁,实用。不要把那些晦涩的东西暴露给模块的使用者。

简洁与实用

简洁的思想来自于Uinx。作者提到了KISS原则。并引用了一位计算机科学家的话:

设计必须简单,不管是实现还是接口。实现的简单比接口的简单更加重要。简单是设计中最需要注意的问题。

实用的思想来自于JavaScript,众所周知,JavaScript不像Java,它在出现时就不是什么精心设计过的东西,后来左缝右补,加上浏览器间的竞争与变革,现在才逐渐出人头地。而它出现的目的只有一点,就是被使用,解决需求,javascript是在一次次被使用中成长的,包括Node.js的出现是它又一次成长。所以,实用是javascript的最大特点。

总结

如果你和我一样,喜欢Uinx范儿,又对javascript这种务实的语言感兴趣的话。Node.js是个很好的选择。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值