javascript 的崛起
闲话    无    2014-11-14 23:35:14    823    0    0

最近用 js 纷纷杂杂的做了一些东西,一方面觉得觉得自己掌握的不够熟练,用的少;另一方面觉得“乱”,大家都在包模块,但是不统一,互相不能用,还是重复的工作。

但是 js 这门语言无疑是非常有想象空间的。虽然 js 的语法先天不足,而且现在好像越加越乱了。其实一门编程语言没必要搞的什么都有,太多的语法糖让人觉得纷乱复杂,其实只要能把东西做出来,用最简单的语法足够了,太过“魔幻”的方法我是不打算用的。就把 js 当作简单的表示逻辑的东西来用就好了。

接口统一化

node 的兴起让 js 瞬间燃烧到后台部分。很多人说 js 做就是个玩具,我不这么认为。

js 做后台不是包揽后台一切

js 不擅长做计算的,这是共识。但是目前计算机所做的工作,大部分并不是计算,我们都只是在用计算机做业务做流程。当然真正的计算也是有的,而且一般都是业务核心,像图像处理什么的。js 总体还是比较擅长做流程的,特别是可能会变动的流程。所以我们应该把后台的业务部分和对前台的接口用 js 来做。计算部分用别的去语言实现。

不要把东西搞的太复杂

有时候一个网站就简单到没有什么真正要算的东西。虽然很多人黑 PHP,但是还是不得不承认,对于小型的网站,PHP 确实是最合适的,HTML 里面插上一些逻辑,就完成了。部署又很方便,何乐而不为呢,何苦自己和自己过不去呢。

目前正好有一个机遇,让nodejs 在这一方面也有和 PHP 一争的潜力,这就是现在流行的:前后端完全分离,用ajax 通信,完全由前台来渲染模版。PHP 其实就相当于一款后台的模版。随着浏览器性能的提高,现在模版放在前端更灵活更有优势,后台就变成了一个提供 json 的接口。这方面 PHP 就没有优势了。

这么看来,用 js 来统一前后台接口,实现部分业务逻辑,调用业务核心部分。大家都是分离的模块,模块化是软件开发的第一真理。

前台组件化

前台代码越来越多,越来越难管理。很多框架都会提供包装好的组件,这是适应工业化的软件的发展需求的。但是组件怎么包,是一件很麻烦的事,因为牵扯到 html ,js ,css 三部分的事。有的框架的组件那就真是私有组件:全部打包在一起了,使用很方便,但是不好定制,拿出来单独用那就更别想了。有的组件虽然叫组件,还是要自己写好多代码,用起来好麻烦。怎么搞好像都有问题。

以前的组件主要还是以 html 为骨架,添加 js 和 css,但是现在我感觉 js 和 css 越来越重要,html 从大骨架变模版,有些 html 完全靠 js生成,所以我更觉得 html 就是组件的配置文件而已。常用的配置文件就是 xml 格式,html 也算是 xml 了。如果已 js 为主,html 为配置文件,感觉还好。CSS 模块化也是很有问题的,写的松了组件不够独立,写死了容易搞的页面风格不统一。现在还没有想法怎么做,我只是想每个组件最终能都封装成 js+html+css+其他资源的独立的包,就像 jar 包那样,可以方便的组装,又可以定制。

业务事件化

很多人觉得 js 写业务逻辑,即使最简单的顺序逻辑都能写成回调黑洞来。其实回调只是异步逻辑实现的一种方案,回调嵌套不多的时候方便。多层回调还可以写成基于消息事件模型。 消息事件模型广泛的应用在当前应用程序的编程中。windows 中,鼠标每移动一下,都会产生一个事件,鼠标不动也会有鼠标没动事件产生,关心这个事件的程序自去处理。消息事件机制如果按照 blankbone 的格式来写,也是能很好的处理很复杂的逻辑的,比靠函数调用来表示逻辑更有优势。缺点是容易迷失在细节中没有大局观,所以要现有清晰的逻辑再写程序,或者用流程图辅助。

事件化的另一个好处是很好的结合不同的编程语言,之前不是说核心部分和流程部分分开用不同的语言么,分开怎么通信呢?node 是异步的,异步是会传染的,互相直接调用很麻烦,正好,一条消息事件总线就可以将不同的部分全部贯通,毫无违和感。

文档导航