Node.js V0.12新特性之给子进程的同步API

尽管发明Node.js的初衷主要是为了编写Web服务器,但开发人员又发现了其他适用(和不适用!)Node的用途。令人觉得惊喜的是,这些用途中有一个是编写shell脚本。并且那确实有意义:Node的跨平台支持已经相当好了,既然前端和后端都用JavaScript写了,如果构建系统也用JavaScript写不是更好吗,对吧? 异步对shell脚本的坏处 在这一用途上值得称道的库是Grunt,它是构建在ShellJS之上的。然而ShellJS有一块硬骨头要啃:Node迫使它用异步I/O。尽管对于Web服务器来说异步I/O很棒,因为它必须随时做出响应,但对于需要逐步执行的shell脚本来说,异步I/O意义不大。 所以,ShellJS的作者们发现了一个“有趣的”解决办法,让它可以运行一个shell命令,然后等着命令完成。大致上是下面这样的代码: var child_process = require(‘child_process’); var fs = require(‘fs’); function execSync(command) { // 在子shell中运行命令 child_process.exec(command + ‘ 2>&1 1>output && echo done! > done’); // 阻塞事件循环,知道命令执行完 while (!fs.existsSync(‘done’)) { // 什么都不做 } // 读取输出 var output = fs.readFileSync(‘output’); // 删除临时文件。 fs.unlinkSync(‘output’); fs.unlinkSync(‘done’); return output; } 换句话说,在shell执行你的命令时,ShellJS依然在运行,并持续不断地轮询着文件系统,检查是否能找到表明命令已经完成的那个文件。有点儿像驴子。 这种效率低下又丑陋不堪的解决办法让Node核心团队受刺激了,实现了一个真正的解决方案 – Node v0.12最终应该会支持同步运行子进程。实际上这个特性已经在路线图上放了很长时间了– 我记得是在2011年的JSConf.eu上(!) ,跟现在已经退休的Node维护者Felix … Continue reading "Node.js V0.12新特性之给子进程的同步API"

执行了javascript后Gif就不动了

这是一个困扰我几天的问题,就是我的网站上的gif图标突然不动了,今天终于知道问题所在,是javascript引起的,原因就是我用了href="javascript:void(0)"这种伪协议哈。 将我原来的代码: Java代码 <a href="javascript:void(0);" onClick="email_pic()"> 改成 Java代码 <a href="javascript:;" onClick="email_pic();return false;"> 就OK了

JQuery 1.5.2 RC 1 发布

JQuery 1.5.2 RC 1 发布!如果没有重大缺陷发生,3月31日就将发布jQuery 1.5.2正式版了。 该版本主要是bug的修复,没有新功能发布。 详细更新日志:http://blog.jquery.com/2011/03/24/jquery-1-5-2-rc-1-released/ 下载地址:http://code.jquery.com/jquery-1.5.2rc1.js

EXT2.0 简明教程!

EXT2.0 简明教程!http://www.dojochina.com/?q=node/547EXT官方教程http://www.dojochina.com/?q=node/584EXThttp://www.dojochina.com/?q=node/482#comment-61

基于OO的可移动DIV窗口。

  项目需要一个可移动的DIV窗口,要求调用简单,可以重用。本人马上就考虑到使用OO了。代码如下:     <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”><HTML> <HEAD>  <TITLE> New Document </TITLE>  <META NAME=”Generator” CONTENT=”EditPlus”>  <META NAME=”Author” CONTENT=””>  <META NAME=”Keywords” CONTENT=””>  <META NAME=”Description” CONTENT=””> </HEAD>  <BODY><SCRIPT LANGUAGE=”JavaScript”>  <!–var ie=document.all;var nn6=document.getElementById&&!document.all;var isdrag=false;var y,x;var oDragObj;var qtD = document;function $(id){ return getObj(id);}function getObj(id){ return qtD.getElementById(id);}function cleanDiv(obj){(typeof(obj)==”string”?$(obj):obj).innerHTML=”;} function msgWindow(msgContext){  this.width=400; this.height=300; this.title = ”; this.content = ”; this.context = (typeof(msgContext)==”string”?$(msgContext):msgContext);  this.popup = function(){  var left … Continue reading "基于OO的可移动DIV窗口。"