引言:
每个平台都有它自己的哲学:
大众普遍接收的一套原理和准则,影响平台演化的一种做事思维,以及应用程序如何开发与设计。这些原则都不是被强加的,它们总是遵循常识的。不管怎样,当我们在设计程序的过程中需要灵感来源的时候,它们被证明是非常有用的
小核心
Node.js自身核心库建立在几个原则的基础上。其中之一是具有功能最小的集合,其余的留给所谓的用户品台
。当你在Node环境下完成你的任务时,你多半会使用到如npm
这样的工具,允许你扩展任意第三方包。
模块的生态系统存在与核心库之外。这一原则对Node.js文化有巨大的影响,因为它给社区提供了自由。从另一个方面来说,保持核心功能的最小集合,不仅利于可维护性,而且对于整个生态系统的进化也有积极的文化影响
小模块
Node.js使用模块的概念作为共建程序代码结构的基本方式。它是一个构建块,用于创建应用程序和复用库,复用库又叫做包。在Node.js中,一个最重要的原则是设计小模块,这不仅指代码的大小,更是指范围的大小
这一原则来自与Unix
- 小即是美
- 让一个程序做好一件事
除了在可复用性方面的优势,小模块也可以被认为
- 容易理解和使用
- 测试和维护简单
把更小和更集中的模块,甚至最小的代码块,授权给所有人来分享或复用,这是把Dont't Repeat Yourselt(DRY)
原则发挥到了一个新的水平
小接触面
小模块一般指的是体积和范围小,但除此之外,Node.js模块通常也具有只暴露出最小的一组功能的特性。这样做的主要有点是增加了API的可用性,意味着API的使用变得更清晰,较少暴露出错误的使用
在Node.js中,定义模块的一个非常普遍的现象是只输出一个功能,比如一个方法或者一个构造函数,而让拓展部分或次要特性成为输出方法或者构造函数的属性
许多Node.js模块都有这样一个特点,即创建它们是为了直接使用而不是拓展,这听起来可能很不灵活,但却具有减少用例,简化实现,维护简单和提高可用性的优势
简单和使用
你是否听说过Keep It Simple,Stupid(KISS)
或者一下名言
Simplicity is he ulimate sophistcation(简单是复杂的最高境界)
---达芬奇
在Node.js中,强大的JavaScript也支持该原则。事实上该原则并不罕见,我们可以看到简单的函数,闭包和对象正在取代复杂的类层次结构
let obj = (function() {
let name = "lihua"
let age = 32
return {
getName: () => {
return name
},
getAge: () => {
return age
}
}
})()
console.log(obj.name) //=> undefined
console.log(obj.getName()) //=> "lihua"
纯面向对象的设计往往视图使用计算机系统的数学术语复制现实世界,不考虑缺陷和现实世界本身的复杂性。
然而事实是,软件总是和显示相似,我们先努力去做一些带有合理复杂性但能很快起作用的工作,这样可能会忽的更多的成功;而不是想着创造近乎完美的软件,付出巨大的努力和使用大量的代码去维护
___ ___ ___ ___ ___ ___
/\__\ /\ \ /\ \ /\ \ /\ \ /\ \
/::| | /::\ \ /::\ \ /::\ \ \:\ \ /::\ \
/:|:| | /:/\:\ \ /:/\:\ \ /:/\:\ \ ___ /::\__\ /:/\ \ \
/:/|:| |__ /:/ \:\ \ /:/ \:\__\ /::\~\:\ \ /\ /:/\/__/ _\:\~\ \ \
/:/ |:| /\__\ /:/__/ \:\__\ /:/__/ \:|__| /:/\:\ \:\__\ \:\/:/ / /\ \:\ \ \__\
\/__|:|/:/ / \:\ \ /:/ / \:\ \ /:/ / \:\~\:\ \/__/ \::/ / \:\ \:\ \/__/
|:/:/ / \:\ /:/ / \:\ /:/ / \:\ \:\__\ \/__/ \:\ \:\__\
|::/ / \:\/:/ / \:\/:/ / \:\ \/__/ \:\/:/ /
/:/ / \::/ / \::/__/ \:\__\ \::/ /
\/__/ \/__/ ~~ \/__/ \/__/ @VGtime