美文网首页
满世界的钉子

满世界的钉子

作者: liyinkan | 来源:发表于2014-10-16 23:01 被阅读119次

    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 不要我来分享呀,有本事你咬我呀~~

    相关文章

      网友评论

          本文标题:满世界的钉子

          本文链接:https://www.haomeiwen.com/subject/diyptttx.html