Hello World
Spiga

标签:Node.js

使用Node.js编写Shell脚本,暨Jscex 0.6.5版本发布

2012-06-19 00:12 by 老赵, 4529 visits
摘要:昨天不得不花时间做了点保护博客阅读体验的事情,但其实这篇才是我真正想写的。上个星期在香港出差,晚上的活动大都是喝酒,回到酒店便借着些许酒劲改进Jscex。如今虽然Jscex的开发工作并没有详细的时间计划,但我正在使用GitHub的Issues页面记录需要制作的任务点,因此每天都是朝着目标逐步前进的。按照计划,Jscex的0.6.5的主要目标是对Jscex的模块机制进行改进,统一辅助方法,并使用Node.js重新编写发布脚本。这些工作的目的都是为接下来的0.7.0版本作准备,它将会是Jscex在项目功能与质量,以及专业性上有重大突破的版本。 阅读全文

Jscex单元测试:喝着咖啡品着茶

2012-06-13 00:47 by 老赵, 7519 visits
摘要:这段时间在香港出差,跟高帅富们一起工作。高帅富的办公室免费供应咖啡,放在壶里随你倒。茶叶也一样,立顿普洱茉莉自取。于是乎我每天也会喝一两杯提提神,尤其是午饭后,感觉还不错。技术人员似乎都挺热衷于这些饮料,也喜欢拿饮料来为项目取名,这方面最让人想到的例子估计就是Java了。这几天我为Jscex整理代码,准备发布其0.6.5版本,并为0.7.0做准备。这方面的主要工作之一便是为Jscex补充尽可能完整的单元测试。写完单元测试之后,我会感到自己是一个非常专业的程序员,突然就有了强烈的码农自豪感和自尊心。 阅读全文

Jscex预编译器及其DocPad插件

2012-06-04 22:34 by 老赵, 1400 visits
摘要:需求本身会是最好的动力。上个周末除了忙于构建Jscex主站以外,我还重新整理了Jscex的预编译器——或者说是AOT编译器。Jscex自带一个JIT编译器,配合eval可以在开发时避免额外的编译过程,这也可以说是Jscex的亮点之一。不过对于线上环境,一般都还是建议进行预编译,也就是将Jscex方法定义直接替换为目标代码。这么做的好处主要是为了降低部署时的脚本体积(摆脱对编译器的依赖所有代码加起来不到4KB),或是让异常情况下的错误定位变得容易(主要面向Node.js生产环境)。此外,为了便于编写文档,我还为DocPad开发了一个插件,用于对Jscex脚本进行预编译。 阅读全文

使用Jscex改进Node Club(4):改写首页

2012-03-10 14:11 by 老赵, 2415 visits
摘要:上次我们分析了Node Club的首页实现,了解了它的功能以及目前的实现方式。这次我们便来使用尝试使用Jscex来改进首页的逻辑。作为一个面向开发人员的工具,Jscex除了隐藏必要的复杂度之外,还要让目标程序“可控”,无论是串行、并发还是逻辑表达——Jscex使用JavaScript语法,保证了程序逻辑的灵活与可控,尽可能地避免出现Leaky Abstraction。EventProxy的确提供了一种“完全并发”的抽象,但是对于需要“可控并发”,或是“串行执行”的逻辑和场景便显得无能为力了。 阅读全文

使用Jscex改进Node Club(3):分析首页实现

2012-02-29 23:44 by 老赵, 1927 visits
摘要:上次我们已经将Jscex成功地引入项目,现在便可以正式开始关注Node Club的实现了。Node Club中存在大量基于回调的JavaScript代码,颇有无从下手的感觉。既然如此,我们便随便挑一个,从首页入手吧!首页的目标其实很简单,加载几部分数据组成一个对象,再交给模板引擎生成HTML代码并输出。Node Club使用EventProxy类库来尝试解决大量异步函数的嵌套问题,但是在我看来,在这里使用EventProxy并没有带来太多的益处,从简化编程的角度来说,效果十分有限。 阅读全文

使用Jscex改进Node Club(2):引入Jscex类库

2012-02-20 21:57 by 老赵, 2051 visits
摘要:之前我们已经将Node Club在本地运行起来了,接着我们便来引入Jscex类库,为常用异步方法扩展出Jscex版本,并试着编写一些最简单的Jscex代码。在编写Jscex方法中,我们无需操作回调函数,只要在异步点上使用$await进行“等待”即可。我们也无需显式地处理错误,因为一旦出现错误便会抛出异常,异常如果没有被某个try…catch捕获到,则会顺着调用路径一路向上传递,直到被我们的代码或是系统捕获为止。Jscex将简单易用的传统编程模式与实践重新带回异步编程中,做到“同步编写,异步执行”的效果。这就是Jscex诞生的意义。 阅读全文

使用Jscex改进Node Club(1):运行Node Club网站

2012-02-20 14:24 by 老赵, 5366 visits
摘要:一直想做个相对完整的项目来演示下Jscex的使用,可惜缺少创意和精力,一直没能实现。前几天看到Node Club将其网站开源了,不禁让我十分欢喜。Node Club网站是个真实案例,复杂度适中,既是Jscex的典型使用场景,又能避开我不擅长的网页样式设计和制作,简直是一个再合适不过的基础样板了。周末我大致看了下代码,也试着将几个部分使用Jscex改进了一下,效果也十分显著,于是打算写作一个系列指引,希望可以对Jscex类库的推广有所帮助。在此第一篇,自然是最基本的环境建设开始说起。 阅读全文

Node.js中相同模块是否会被加载多次?

2011-12-27 23:19 by 老赵, 5197 visits
摘要:JavaScript的包管理一直是个软肋,但既然它流行了,既然人们想要用它做大事了,就要开始为它制定一些模块的约定。Node.js使用了CommonJS模块机制,最近在InfoQ上也有一篇文章讨论了这方面的问题。这篇文章提到Node.js在载入模块时,如果之前该模块已经加载过则不会有重复开销,因为模块加载有缓存机制。这篇文章是我初审的,当时也正好在思考Jscex在Node.js使用时的模块化问题,但研究了它的规则之后,我发现在某些情况下还是可能加载多次。现在我们便来分析这个问题。 阅读全文

Jscex正式发布至npm

2011-12-01 14:23 by 老赵, 3268 visits
摘要:之前一直不敢将Jscex发布至npm上,因为有些问题还没有完全拿定主意,例如“取消”任务的模型。一个异步任务一定是需要取消功能,尽管这个模型不一定需要直接定义在Jscex里。但是我还是为Jscex提供了一个统一的标准化的取消模型,一是易于使用,二是提供模型这个之后,API在设计时可以有更多表现力(例如,现在的task的status可能是canceled了)。上周末我实现这个模型(其实也就十几二十行代码),昨天我又修改了模块的加载方式,使其支持CommonJS规范。在发布到npm之后,现在可以说Jscex已经正式对外公开了! 阅读全文

基于Node.js、Express和Jscex开发的ToDo网站示例

2011-07-15 14:33 by 老赵, 15943 visits
摘要:Jscex的主要使用场景是“JavaScript异步编程”,并不限制是跑在浏览器还是服务器端。最近Node.js很火热,也刚发布了原生的Windows版,不少同学也用它来做一些网站这样的小程序。目前用Node.js开发网站最著名的框架是Express,使用起来也是比较容易的。前段时间看到CNodeJS社区的一篇文章,某同学将一个Python写的ToDo列表网站移植到了Node.js上,我为了推广Jscex,就fork了这个项目,将其修改为基于Jscex的版本,大伙儿可以来比较一下。当然这个网站过于简单,我也正在寻找更合适的项目。 阅读全文

上周末Jscex项目介绍的幻灯片

2011-05-16 13:43 by 老赵, 4488 visits
摘要:上周末,在风景秀丽的浙江大学校园内,举行了NodeParty杭州站的活动。我在活动上结合Node.js项目对Jscex进行了简单介绍,包括其设计目的,设计原则,使用方式,高级模式,组成部分等等。在场的许多朋友也提出了不少问题,我也一一作了解答或是演示。总体感觉还算不错,毕竟是亲手编写的项目,对其各方面还是了然于胸的。在此发布演讲用的幻灯片,希望能给不在现场的同学带来一些帮助。 阅读全文
1
使用Live Messenger联系我