Hello World
Spiga

Jscex正式发布至npm

2011-12-01 14:23 by 老赵, 4702 visits

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

在加载Jscex代码之后,全局环境里会出现一个Jscex对象,这是所有Jscex功能的入口(根对象)。但对于Node.js来说,相同的模块(无论版本是否一致)有可能还会被加载多次,因此这种方式并不适合Node.js。昨天的修改主要就是为了迎合Node.js的包管理机制(类似CommonJS),避免对全局环境造成污染。自然,如果脚本执行环境里没有实现CommonJS规范(例如浏览器),则Jscex的行为依然和之前保持不变。

目前Jscex的核心部分已经发布到npm里,版本为0.5.0,分为两个互不依赖的三个部分:

  • jscex:提供了Jscex的基础功能,作为Jscex的根对象。
  • jscex-jit:提供了Jscex的JIT编译器,以“插件”形式为Jscex根对象进行扩展,一般仅作为开发工具使用。
  • jscex-async:Jscex的异步支持,以“插件”形式为Jscex根对象进行扩展。在Node.js中一般与JIT编译器同时使用,但理论上可以在AOT编译之后摆脱对JIT编译器的依赖。

您可以使用npm安装这三个模块:

$ npm install jscex jscex-jit jscex-async
jscex@0.5.0 ./node_modules/jscex
jscex-jit@0.5.0 ./node_modules/jscex-jit
jscex-async@0.5.0 ./node_modules/jscex-async

然后即可在脚本里使用:

var Jscex = require("jscex");
require("jscex-jit").init(Jscex);
require("jscex-async").init(Jscex);

然后便可以像以前那样正常使用Jscex了。请注意,由于Jscex的实现方式所限,一定要在上下文里存在名为Jscex的根对象。此外,目前发布在npm上只有JIT编译器及其异步支持的核心功能,并没有包含如sleep或parallel方法那样的核心类库。这部分代码已经被剥离至jscex-async-powerpack模块内,将在合适的时候发布至npm上。

目前使用Jscex的人依旧不多,有同学将Jscex配合HTML 5的绘图使用,进行了进行了许多尝试颇为有趣。如果您对Jscex有什么意见或建议,也请及时告知。

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名赵劼(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言

Add your comment

24 条回复

  1. Marvin
    111.161.10.*
    链接

    Marvin 2011-12-01 15:20:43

    不错,真入node.js

  2. Sheldon
    203.91.193.*
    链接

    Sheldon 2011-12-01 16:00:08

    老赵很给力。

  3. 老赵
    admin
    链接

    老赵 2011-12-01 16:03:09

    @Sheldon

    我看到你也在搞JavaScript和Node.js之类的,有没有尝试过Jscex呢?给点意见罢。

  4. 链接

    sickcate 2011-12-01 18:33:09

    老赵熬夜了吗?凌晨6点多发blog

  5. 老赵
    admin
    链接

    老赵 2011-12-01 21:03:19

    @sickcate

    懒得改时区……

  6. 银光小子
    210.75.15.*
    链接

    银光小子 2011-12-02 09:09:52

    最近在搞 Silverlight 唉。用不到介个东东 唉

  7. 老赵
    admin
    链接

    老赵 2011-12-02 09:47:54

    @银光小子

    Silverlight有前途啊,我最近还在学WPF这些模型呢,后悔学得这么晚。

  8. 链接

    Ivony 2011-12-05 15:09:24

    呃,,,,NPM是不是就是类似于NuGet的东东?

  9. nero
    114.84.8.*
    链接

    nero 2011-12-05 21:35:19

    赵老大,请教个问题啊,我在做一个WEB项目,想把核心业务做成WCF部署,同时还使用memcache和mongoDB,该怎么架构才比较好啊,能不能给个建议啊?谢谢

  10. nero
    114.84.8.*
    链接

    nero 2011-12-05 21:36:45

    你这个网站是不是跑LINUX底下的,用的还是MVC,mono

  11. 程序诗人
    61.171.20.*
    链接

    程序诗人 2011-12-05 22:45:06

    老赵,我这儿借贵地问个问题啊,关于自定义模板里面引用资源文件的问题。 是这样的,我设计了一套自定义模板,首先是为了方便美工,使得资源路径相对于模板,那么当我在引用我写的js或者是css的时候,我就要替换模板路径中的引用路径,但是问题是,在css中或者js中也有引用的路径呀,这部分怎么处理呢? 用正则或者是别的什么好的方法吗?

  12. 程序诗人
    61.171.20.*
    链接

    程序诗人 2011-12-05 22:48:34

    简单的说,就是模板里面引用资源文件的路径问题 一方面,为了方便美工,资源路径会相对于模板 另一方面,模板可能放在任何地方,甚至并不在WEB下,或者模板和资源不是以物理文件的形式存在 像这种方式,有没有什么万全的办法,尤其是js或者是css内部的资源文件路径映射,该怎么处理? 谢谢啦,赵姐夫。

    目前只想到利用绝对路径的方法,不知道还有别的好的方法么?听说discuzNT2.0是把模板解析到完整路径的,这个...何原理?

  13. 程序诗人
    61.171.20.*
    链接

    程序诗人 2011-12-05 22:51:08

    额 目前项目用的是JQuery,模板里面的js用的也是JQuery居多,下一步该用Jscex试试,看看如何,看了下Jscex写的一些代码,感觉可以不用耗费很大的学习成本... 好事... 额,还望赵姐夫指导下上面提的问题。

  14. 程序诗人
    61.171.20.*
    链接

    程序诗人 2011-12-05 23:06:36

    超喜欢链式结构表达 写起来很爽

  15. 老赵
    admin
    链接

    老赵 2011-12-06 00:15:13

    @Ivony: 呃,,,,NPM是不是就是类似于NuGet的东东?

    差不多,什么gem啊apt-get啊一类东西……

  16. 老赵
    admin
    链接

    老赵 2011-12-06 00:15:50

    @nero: 你这个网站是不是跑LINUX底下的,用的还是MVC,mono

    是。还有那架构问题,你难道让我给个通用的方案?世上哪来这种东西。

  17. 老赵
    admin
    链接

    老赵 2011-12-06 00:51:31

    @程序诗人

    CSS的路径不是问题,因为其中的路径都是相对于CSS文件自身的。JavaScript里的路径,就处理到根目录吧,定义一种定义URL的约定,然后根据路径计算出来。

    Jscex使用起来是很简单的,它可以说没有任何API,就是让你用最直观的方式来表达逻辑,不必把精力过多放在异步编程各种技巧上。

  18. 链接

    Ivony 2011-12-06 17:36:54

    话说我也借宝地打广告。

    那个什么路径转换的问题,目前来说Jumony for MVC这个视图引擎可以做到完全不用操心,因为Jumony for MVC会自动找出页面上所有的URL属性并转换正确的路径。

    即使你不想用Jumony for MVC,借助Jumony对HTML文件的DOM建模解析和API,完成对某个文档里面所有的URL路径转换也是非常简单的事情。

  19. 老赵
    admin
    链接

    老赵 2011-12-06 23:37:57

    @Ivony

    你的Jumony推广力度比Jscex差远了,要抓紧……

  20. Flex
    205.156.160.*
    链接

    Flex 2011-12-07 15:24:25

    老赵的邮箱是多少?

  21. 老赵
    admin
    链接

    老赵 2011-12-08 00:15:04

    @Flex

    右下角联系吧。

  22. 爱蝌蚪
    123.145.15.*
    链接

    爱蝌蚪 2011-12-15 00:27:29

    Jscex配合HTML 5,有点意思呃......

  23. 老熊歌
    202.104.66.*
    链接

    老熊歌 2012-05-14 17:15:45

    看起来和icedcoffeescript编译出来的代码很像啊,这两个project有关系吗?

    search = (keyword, cb) ->
      host = "http://search.twitter.com/"
      url = "#{host}/search.json?q=#{keyword}&callback=?"
      await $.getJSON url, defer json
      cb json.results
    
  24. 老赵
    admin
    链接

    老赵 2012-05-14 17:49:43

    @老熊歌

    没啥关系……

发表回复

登录 / 登录并记住我 ,登陆后便可删除或修改已发表的评论 (请注意保留评论内容)

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

评论内容(大于5个字符):

  1. Your Name yyyy-MM-dd HH:mm:ss

使用Live Messenger联系我