满世界的钉子

nodejs 是一把很不错的锤子,于是在许多 nodejs 工程师看来,满世界都是钉子。

首先要说的是,nodejs 以及 nodejs 社区最具价值的是什么

我曾经问过 substack

为什么你那么热爱 JavaScript 以及 nodejs?

James 回答

因为 npm。大家可以非常方便的发布和分享。

我豁然明白了。James 代表了对于技术和社区狂热的追求的发烧友。他们所追求的,并不是某一个语言,或者某一个技术,而是这个社区里的氛围,是人。

换句话说,如果 .net 有一个和 npm 可媲美的社区,那么,James 一定也会参与其中。

顺便插一句,我提到了 maven 是一个非常好的 repository 管理的方式,公用的 maven 也很不错。他表示很有兴趣,我说这是 Java 的,他说没关系啊。当然了,如果他真的去看了一眼,肯定会觉得无趣的。(我就是欺负你不写 Java…… 逃

再讲一个故事

看到 cnpm 私有库,grunt 编译部署。maven 笑笑说:“我早就可以私有部署了,windows 一键安装,依赖全自动管理,打包、发布、插件开发、执行外部脚本样样精通。”
最后拍拍 nodejs 的头:“孩子你的路还很长……”

所以我深深觉得

nodejs 最大的价值,是他建立起来的 npm 和他的社区。而不是这个语言本身。


nodejs 来做 Web Server 不过是你一厢情愿的痴想

nodejs 诞生最初目的和设计并不是为了做 web server

我记得故事是这样的

有一天,一个大牛觉得 erlang 太难学以及太难,于是就想:要不再搞一个专为高并发而生的语言吧。哎?那 JavaScript 看着不错啊,基于事件的呐,哟,V8 性能那么好啊,嗯,决定就是你了。

所以至今为止,我听过关于 nodejs 最好最棒的分享,是几位童鞋,用 nodejs 替换了原先 erlang 的程序。

注:他们在准备替换这破事之前,从来没有接触过 JavaScript。

这才是 nodejs 的正确的烹饪方法!

注:我才不和你辩,不服你咬我呀!

其实就目前而言,nodejs 做 web server 还是很不错的,这得归功于 npm,其实一门语言或者一门技术的发展需要一个良性的社区,当然也有特例,比如 Java……

然后顺便推荐一下,fibjs,如果你真的要用 JavaScript 来做网站后端的话,去看看这个。


nodejs 并不是前后端分离的最佳实践

参加了许许多多场 nodejs 相关的分享,有一些很有意思的东西。

举个栗子:我们为什么要选择 nodejs

nodejs 对于前端工程师来说没有重新学习的成本

上面这句有没有很熟悉?第一次我不觉得,想想挺对的。自从听了 nodejs 替换 erlang 的分享之后,我就刻意留意了一下这句话出现的频率:在去年和今年上半年的时候,这概率是相当的高。

以至于后来一旦分享有类似的内容,我就开始鄙视分享者的智商……

这不是一个原因,甚至连借口都不是

从上面那个被我反复炒冷饭的故事来看,语言的障碍真的不是问题。

不就是一门语言么,又没让你精通,让你能用这门语言写业务逻辑而已,你竟然学一下都不愿意,还找来一个原因,说我们会这个语言,所以用这个语言一定更好。

活该不能涨工资,只能仰望别人 X赵 的收入。


言归正传,为什么我认为不是最佳实践。

不觉得现在市面上最多的分离实践就是来自于阿里童鞋的分享么?曾几何时,分享会里面总是会有这样一个主题:

X宝/X猫/支X宝前后端分离的实践/思考。

另外透露一个消息:前后端分离这事情啊,阿里内部应该有两个团队在搞,一个是从前端角度出发,一个是从后端角度出发…… (大阿里真有钱啊)

后端角度不太清楚是怎么个做法。
而且我还没听过 支X宝 的分享,不过从分享者的名字来看…… 应该也逃离不出 nodejs 的世界。

X猫/X宝 我记得差不多做法就是:

起一个 nodejs 的 web server,接收 http 请求,动态模板什么的都扔这里面,和后端交互,就从 nodejs 发 RESTFul web server 去。当中 dto 约定,靠工具和文档。

于是大家开始研究用 jade 好还是用 ejs 好。
并且开始觉得:前端的春天已经来了,前端已经向后端迈出了一大步。

在我看来

这好蛋疼!

咱们用 Java 举例子吧。(我就会 Java 你咬我呀~

要分离的目的好多好多

  • 动态模板不好用
  • 动态模板不好管
  • 呈现逻辑写在 jsp 中好蛋疼
  • jsp 中可以写 java 代码好蛋疼
  • 样式管理好蛋疼
  • 我测个 js 我还得起个 jvm 好蛋疼
  • 后端没做完我都没办法跑代码
  • ... (快来列举种种不好……

但是,如果真的把这些用 nodejs + jade 管理起来就会好了么……
怎么感觉有点

  • 为了 nodejs 而 nodejs
  • 大阿里是这样做的,所以我们这样做绝对是对的

这类感觉……

你看我到现在还没说

  • 为什么不是最佳实践
  • 什么才是最佳实践

就我个人而言,前后实践了三个项目,三个定位完全不同的项目,基本上有一个想法,一套方案,并且在现在这个项目大刀阔斧干了,分离得非常彻底,还加入了很多很简单但是非常实用的功能。

根据我这种专业参加分享会的人的经验,总结来看,大阿里毕竟是大阿里,做很靠谱的。很多想法都是通过大阿里分享以后迸出来的火花。

只是通过 nodejs 来做分离这个,有点扯。不过谁知道呢,说不定哪天这个就是一个起点,有别的什么东西和 nodejs 搞出点啥。或许 nodejs 还缺个另一半,就像 ruby on rails 这对好基友……

说真话,我无法回答最佳实践是什么,但是你要问我是怎么做的,我的回答是:

自己研究去吧~ 谁让你们 D2 不要我来分享呀,有本事你咬我呀~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,259评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,092评论 19 139
  • 1、 记忆会被忘记,但是身体有的时候却记得,你会不由自主地转弯到很久没去的公园,准确地找到那个旧座椅,然后看着上面...
    酸辣笋尖阅读 2,394评论 0 0
  • ——浅析《许三观卖血记》的生存法则 在时代和个人的种种不幸中,我却看到了生活的种种幸福。酸甜苦辣是食物的味...
    壹贰叁肆567阅读 3,321评论 0 0
  • 夜深天高远, 云清月正圆。 相知无远近, 南北两相怜。
    平凡往事阅读 1,828评论 0 0

友情链接更多精彩内容