Tag Archives: js

有关 Essentia

lifesinger 的 Seajs(一个符合 Common JS 规范的模块加载器)很华丽,不过有个问题,就是定义模组的时候必须给明依存项,这让我很不爽。因为,我的理想就是一个东西不出现两次。用 seajs 的话,要写出这样的代码: module.declare(['a', 'b', 'c'], function(require, exports){ var a = require(‘a’) // … }); 因为已经写定,所以不能根据条件进行动态 require。我想要的是这样的代码: module.declare(function(requiring, exports, finish){ requiring(['a', 'b', 'c'], function(){ // …… finish(); }) }); 这可能看起来没什么,不过要是配上 Eisa 的阻塞原语,那就非常强力了。我们可以写出这样的代码: module “mod” -> { using a, b, c from libraries..; // 生成一个阻塞,加载 a, b, c // …… } [...]

Posted in Browser, Discussion, 中文 | Also tagged , , , | 1 Comment

Eisa Obstructives: a very brief view.

From: (lofn) var enum = enumerator { yield.. 1; yield.. 2; yield.. 3 }; for var item in enum(): tracel item end; To: enum_$ = enumerator_$(EISA_OBSTRUCTIVE(function(SCHEMATA){ return function(){ var THIS = (this === EISA_M_TOP ? null : this); var ARGS = EISA_SLICE(arguments, 0); var OBSTR1, OBSTR2, OBSTR3, OBSTR4, OBSTR5, OBSTR6, PROGRESS, EOF, ISFUN, COROFUN; PROGRESS=1; [...]

Posted in Browser, English | Also tagged , , , | Leave a comment

jscex 原理探析

这是我第一次给别人的类库写文章,说实话,用 Lofn 中的阻塞原语生成的代码可不是很容易看懂(虽然代码很好写……),相比之下,老赵 的 jscex 要好用得多。虽然 jscex 还没有完成(很多语法都处理不了),不过呢,第一,他已经大致能投入使用;第二,说说总比没有好,而且这个很有潜力的东西还是需要来推荐的。 相信无数的 JSER 都有过这样的经历,动画,然后用 while 循环来做,结果在浏览器卡了一小会有,要运动的元素直接蹦到目标位置上去了。于是,不解,论坛提问,然后查 setTimeout 和 setInterval 的案例,无数挫折后终于成功。jscex 给他们带来了曙光:只需要写个循环,循环里放个定时器回调,接下来一切事情由 jscex 解决。然后——哇,动起来了耶!

Posted in Depth, Original, 中文 | Also tagged , , , | 6 Comments

乱谈,和我做 lofn 时候的一点想法,以及 lofn 的异步库

一直想写这文章有段时间了,自己了解不少语言(自然的 & 程序的),也做过编译器,随便说说,应该还是可以的罢。如果说的不对请回复指正,谢谢。 很多人都在说语言的好坏,比如 Perl 和 Python 社区间持续的争论、Linus 炮轰 C++、老赵力挺 C# 等等。除开骂人时的快感,这些嘴仗没有什么意义:即是 Linus Towards 也无法说服 MS 扔掉 C++ 改用纯 C,也不能让一个有了 N 年 Java 经验的人改用 C#(倒是可能改用 Scala)。在这,我也不想让任何人改用其他语言(那会杀了他们),只是想让你们能多有些了解,此外,如果以后有再次选择的机会,能选择一个称手的语言。 在说程序语言之前,先来乱扯下自然语言。我不研究语言学(我有个同学是),我的很多理解都是基于数理逻辑,而非语言学。自然语言的语系众多,有些语言“好学”、有些“难学”。比如说,拉丁语和古希腊语的语序是一种修辞——句子部分间的关系完全由屈折变化决定。因此,他们都是很美、很有表现力的语言(因为可以用很短的句子表示复杂而精确的语义),也是很难学的语言。古汉语也是如此:当我们阅读文言文的时候,都会感叹怎么那么一点点字就有那么多意思! 与此相反,现代英语和现代汉语则更加“分析化”(Analytic),几乎所有能表现复杂语义的东西都用介词明示出来了。结果呢,原来很有韵味的话突然没了感觉,像是 “Cogito ergo sum” 变成 “I think, therefore I am”,没了韵味。现在的语言多了简易性,而少了美感和厚重感。

Posted in Browser, Discussion, dotNET/mono, JRE, Original, 中文 | Also tagged , , , | 9 Comments

前端代码之丑 [2]:丑陋的条件语句

实际代码 今天的代码很简单,但每次评审时碰到类似场景,总会让我有些小不淡定: // 代码 1 if (‘s’ == type.value) { cont.style.display = ‘none’; if (cont.shim) cont.shim.style.display = ‘none’; if (cats) cats.style.display = ‘none’; } else { cont.style.display = ”; if (cont.shim) cont.shim.style.display = ”; if (cats) cats.style.display = ”; }

Posted in Browser, 中文 | Also tagged | 4 Comments

前端代码之丑 [1]:分支化技巧

看了 InfoQ 的 代码之丑 专栏,心痒痒忍不住,前端也来一个系列吧。 分析的代码片段大都来自实际项目。还希望代码主人多多包容,让我们一起共同研究探讨,互助学习提高。 实际代码 今天要分析的是获取邮费目的地的一段代码(做了部分简化,整体保持原貌): var DEST_MAP = { ’1′: ‘全国’, ’110000′: ‘北京’, ’230000′: ‘黑龙江’ }; // 注:精简了数据。真实代码中,有 36 个键值对,表示全国各个省份。 var DEST_MAP_UTF8 = { ’1′: ‘全國’, ’110000′: ‘北京’, ’230000′: ‘黑龍江’ }; var doc = document, EMPTY = ”; var charset = doc.charset || doc['characterSet'] || ‘gb2312′; var isUTF8 = charset.toLowerCase().indexOf(‘utf-8′) != -1; [...]

Posted in Browser, 中文 | Also tagged | 4 Comments

js要给力之:代码能有多烂?

转载自http://bbs.51js.com/viewthread.php?tid=88174,原文作者 Aimingoo,感谢您的好文章。 烂代码是怎么定义的? KissyUI 是淘宝 Kissy 这个前端项目的一个群,龙藏同学在看完我在公司内网的“读烂代码系列”之后就在群里问呵:烂代码是怎么定义的? 是呵,到底什么才算烂代码呢?这让我想到一件事,是另一个网友在 gtalk 上问我的一个问题:他需要 a, b, c 三个条件全真时为假,全假时也为假,请问如何判断。

Posted in Browser, Discussion, 中文 | Also tagged , , , | Leave a comment

一个“大”题目有趣的答案

lifesinger 出了个题目: f = function() { return true; }; g = function() { return false; }; ( function() { if (g() && [] == ![]) { f = function f() { return false; }; function g() { return true; }; } })(); f(); // What’s the result?

Posted in Browser, Challenges, 中文 | Also tagged , , | 1 Comment

第一段 lofn 代码

var gettags = do { var entify = s :> s.replace(‘[&"<>]‘ as RegExp.g, ch :> { if ch == ‘&’, return ‘&amp;’ else if ch == ‘”‘, return ‘&quod;’ else if ch == ‘<’, return ‘&lt;’ else, return ‘&gt;’ }); var gen_tag = tag :> function: var obj = derive this; var props = ”; [...]

Posted in Browser, 中文 | Also tagged , , | Leave a comment

异步编程与响应式框架

本文原发表于《程序员》杂志9月刊,现将全文公开至此。前几天的技术交流会上我也讲了这部分内容,配合着看会有更好效果。此处为原始地址:http://blog.zhaojie.me/2010/09/async-programming-and-reactive-framework.html 异步操作是强大的,它是许多高伸缩性架构的基石。异步操作在许多情况下是必须的,例如在客户端保持用户界面的响应能力,以及在日益兴起的云计算场景中。但是,异步编程又是十分困难的,它让这让许多程序员敬而远之。因此,越来越多的编程语言都对异步编程提供了相当程度的支持,其中的典型代表便是F#中的异步工作流以及Scala的Actor模型。不过目前的一些主流编程语言,如C#或是JavaScript,它们在设计之时并没有在异步编程上考虑太多,我们便会根据它们的语言特性,提供合适的异步编程模型及其实现。而本文介绍的便是其中一例:响应式编程(Reactive Programming)模型及响应式框架(Reactive Framework,简称Rx)。

Posted in Browser, Discussion, dotNET/mono | Also tagged , , | Leave a comment