以禅悟禅,体验AngularJs的优雅哲学

“武功百诀,以意为先,那才是武功的精骨神髓;招式身法,都不过是皮毛而已。若无精骨,皮毛何在?但若得了武道神髓。再学皮毛便是易如反掌了。”   ……

万子良道:“方少侠方才所施展的那两手,与天下各门各派之招式俱不相同,却不知有何来处?”   铁娃道:“这道理又与写文章一样,武功本天成,妙手自得之。李白倚马千言,信笔俱是文章;我大哥上通武道,举手投足间便都是绝妙的招式。无论文武,若是拘泥于一定的规格程式中,便落了下乘了。”

万子良慨然长叹道:“果然高明……果然高明……”“武功百诀,以意为先,那才是武功的精骨神髓;招式身法,都不过是皮毛而已。若无精骨,皮毛何在?但若得了武道神髓。再学皮毛便是易如反掌了。”

他用衣袖擦了擦嘴,接着又道:“别人学武,都是自易至难,但我大哥天赋与人不同,学武自也与人不同,他学武乃是自难而易,先已渗透了万物自然变化之理,得通武道精髓之意,那招式身法便不学也会了。这道理正如画画一样,若是不解画意,画得纵是逼真,但不能传神,最多也不过是个画匠而已;若是妙参画意,信笔挥来,便都是绝妙丹青了。”

众人虽都是武林高手、名门子弟,但听了这番武学中至深至奥的道理,也不觉人人为之心动神驰。

————浣花洗剑录

题目有点玄之又玄,其实禅是什么我也不知道,只是偶然觉得这和我要表达的某种思想有点类似,就和浣花洗剑录这段说的一样,我并不是想告诉多少人写angularjs或者写程序应该怎样怎样,这样的功法招式太多了,网上随便一搜就有几十个教程,而且讲的比我更深邃易懂。然而令我担心的是如果只是这样无尽的学下去,真的就能领悟或者说直白的说学会它吗?

如果有使用过或看别人使用过AngularJs的同学就会发现,AngularJs并没有带来多少所谓的功法招式,它不像JQ一样教你该如何走位如何闪躲腾挪,而是企图用一种完全的思维方式冲击前端开发者固有的思想,这类似于架构或设计思想,它负责解放你,然后你仍旧去做自己该做的事,只不过做起来更简单更有意思而已。

在阐述架构思想的迷人之处之前,我想先说说AngularJs的实用性(因为很多人都在怀疑这点)。Misko(AngularJs创始人)用业余时间开发出Angular时便用它重写了17000行的业务代码,完成它们时只用了3周,而代码量被削减到惊人的1500行,听起来好像还不够惊人,但要知道的是这17000行的前端代码曾经花费了一个团队6个月的时间。我从书里看到这段话时和很多人一样,感觉这个框架牛逼快吹上天了,直到有一天我也碰见了一个复杂的WEB页面,而且我也用Angular完全重写了一遍,结果只用了短短的130行!而这个页面的原作者大约写了2400行,当然还要抛去他引用的那些乱七八糟的库不算。另外值得一提的是我的编程习惯是一个”}”会占用一行。

当然我的意思并不是越少的业务代码就越能体现框架的实力,但至少这让我看到了Angular的真正迷人之处——它尽可能的用少量的代码和解耦式的思想为你构建项目,尽管这并不适合所有人。在我越来越深入了解Angular时才能慢慢感觉到,虽然它已经足够的好,但也无法改变你的队友/同事对它的看法,很多前端开发者在习惯命令式的编程之后几乎无法理解这样一个重量级框架的设计思想,也对代码的维护无从下手,这时候你想要三言两语告诉他们“库”并不能完成所有的事是一件很难的事。

“以禅悟禅”意欲传达这样一种意思。

你通过一段的时间学习掌握了javascript的基础,然后背下了很多的JQ式类库的API,沉浸在日复一日的业务逻辑开发中,直到几年过去才会发现和曾经的自己并没有什么区别,除了掌握一些奇淫巧技以外只剩下每天的抱怨,甚至认为javascript也不过如此。

这时候你开始注意到java,oc等等其他的技术,但是学起来发现javascript语言带来的积累并没有想象中的多,使用其他语言编写代码时也不知如何下手,当然如果你足够努力也可以用它们去编写一些业务代码,但时间长久之后依旧让你感到厌烦——在日复一日的修炼中很多人只顾着写“禅”而忘记去悟“禅”——没有思索开发模式和设计思想是真正的问题所在。

在对javascript所有了解之后,AngularJs能够快速的赋予你完全的不同的设计理念,我并不想一条条例举它与你天天用着的JQ有什么不同之处,因为Angular也不能解决所有的问题,而且还会带来很多流行框架拥护者的反感。我的意思是当你真正的想要了解一门语言的优雅之处时,不妨试试各种不同思维模式的框架而不仅仅局限于用它,了解它的设计思想,阅读源码,学习别人的设计模式等等。时间久了自然会扔掉手中的剑,趋于无剑胜有剑。

5278ae3f33aef-e1439571203713

我也认识几个非常反感框架和库之类的朋友,他们和我说只有学习原生的语言才有可能真正的理解它,到时候就能自己写框架了,何必去花时间学这些更新迭代的框架。听起来好像没错(学习原生真的很重要),但到今天为止我还没有见他们掏出什么框架出来,而且我也不相信他们可以写出优良的框架或是封装工具库之类的东西。有时候就是这样,你花时间勤奋苦学十几年年师门剑法,结果下山遇到令狐冲被一剑刺伤,你一边想为什么一边爬起来的时候就听见他说:“我也没学什么剑法啊,怎么这么厉害….”。

我的本意就是这样,我并不想安利AngularJs,也不想告诉别人思维模式啊设计思想啊有多重要,因为很多人都在忙着背剑谱,根本没空搭理我。我也不能用一篇文章就改变他们的思想,只是想借这个机会为真正的剑客介绍一套剑法,你要问我这套剑法是什么,我也不知道。它很厉害,很优雅,很禅,但没有剑招。

1 收藏 1 评论

关于作者:WittBulter

简介还没来得及写 :) 个人主页 · 我的文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部