-
Notifications
You must be signed in to change notification settings - Fork 238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
写给 Jscex 的一些建议 #51
Comments
plugin-jscex 的出发点,是想让 Jscex 对普通用户来说,看起就就只增加了一个 |
与 seajs 的 issue 关联下: seajs/seajs#316 |
|
太赞了,支持玉柏。 jscex的语法学习成本太高了,各类约定和新语法。 特别是那个compile和eval,就已经让我感觉非常恐怖了。
为何为把初始化的过程变成类似这样?
把实现细节隐藏在内部,这样感觉就舒服多了,看不见心不烦。 期待玉伯的seajs插件,那样的语法太爽了,用户不需要关心内部实现。 |
@lifesinger @yaniswang @sumory 说实话,这个 具体能不能做到plugin-jscex这个我再看下哪!总之还是多谢捧场! |
感觉引入dev模式的比较好。 |
关于 目前玉伯的提议如果是要封装 |
@lambgao require是给Node.js用的,dev和prod也好都是为浏览器缩小体积用的,Node.js不需要区分这个…… |
支持 玉伯。 |
期待
我觉得 Jscex 现在提供的是一套面向高级用户的中级 API,可以考虑在这层 API 的基础上,再封装出一套更亲民的高级 API. SeaJS 内部也有一套类似的中级 API,目前只有高级用户以及插件开发者需要了解,普通用户则只需要靠直觉去使用 |
老赵的思想要激荡下了 |
@lifesinger 假如没有第二个shortcut的话,我觉得暂时还是不支持了。其实现在只是 包数量过多的确可能是个问题,我考虑下个版本就缩减为jscex-compiler和jscex-async了,不区分parser、jit、async、async-powerpack那么多,该合并就合并掉! |
@JeffreyZhao 同意
|
@lifesinger Jscex的理念是
而
Jscex最大的特点就是JavaScript语句本身的语义来进行流程控制。 |
突然好奇了下,下面这种写法支不支持: function sleep(n) {
$await(Jscex.Async.sleep(n)); // 暂停 n 毫秒
}
var compareAsync = eval(Jscex.compile("async", function (x, y) {
sleep(n);
return x - y;
})); PS: 中文文档首页没有加载 前端有一个习惯,比如验证 jquery 支不支持某个特性,会打开 jquery.com ,在官方首页上通过浏览器的调试工具来测试,方便快捷。zepto, handlebars 等等类库都如此。建议 Jscex 首页加载完整版 Jscex,以方便用户快速尝试。 |
这是不支持的,
但你的意图只要这样就能满足:
或是:
其实这些就是最普通的JavaScript编程了,只要记住 |
其实 不过以后有了
至于 |
有了compileBlock,运行的时候是不是就需要像mocha那样变成jscex [options] [files]? |
@lambgao 当然不需要, |
作为jscex的初学者,在我阅读开发指南的时候,开始部分都是模模糊糊,唯有读到这一句的时候才恍然大悟: 我觉得作为一个需要让更多人来了解和使用的新类库来说,更多这样的总结性的警句、妙句,会更加有利于新手的了解和使用。而且,这样的妙句让新手越早阅读到心里会越舒坦,不然对于一些耐性不好的新手来说,读了几段就被吓住了,人也早跑了。 |
补充一条,作为javascript类库,使用此类库开发的小游戏是增加推广的比较有效的渠道,samples/async/bullet.html中这个例子感觉就不错,大可美化一下并标题为“是男人就坚持20秒”,邀请各位大神来比拼一下。 :) |
第一点非常赞同,先在国内推广吧。 |
very good. |
为了看懂老赵的wind,哥拾起了龙书,-_-!!!!! |
编译原理 2012/8/28 fantasybei [email protected]
赖君玉 |
wind-core.js里的 |
抱歉呀,今天才仔细阅读了一遍 Jscex 的文档,按照阅读顺序,提供一些建议:
首页
jscex.info
这域名,是因为jscex.org
被人抢占了么?如果 org 在老赵手上,建议用 org,这是开源组织的标配。另外,建议首页默认是中文,右上角给个英文版的链接就好。毕竟 Jscex 目前主要是想在大陆推广吧?国际化可以缓一缓。我们可以先尝试下先国内后国外的战略,发展中国家包围发达国家。能成的话,也是一种新气象,不然国人老是以为国外的月亮更圆,我们得让同胞们看看我们自身的实力,扭转大众的一些误区。eval(Jscex.compile("async", function (x, y) {
这种写法,对入门者来说还是比较逆天的。打算在 seajs/plugin-jscex 里,把这技术实现细节隐藏掉。老赵等我的插件。$await(Jscex.Async.sleep(10))
的写法,感觉也不够简洁。感觉也是将内部的实现暴露了出来。建议可以为外部用户提供一个 shortcut:$await(10)
. 其实我还有一个疑问:为什么要用 await ? 而不是更直白的 wait 或 sleep ?开发指南
require("jscex-parser").init()
建议简化成require("jscex-parser")
,init 内置掉。我还是期望对使用者来说,不要去理解什么是核心组件,什么是 parser,只要简简单单var Jscex = require(jscex)
就万事大吉了。jit 可以让用户按需引入。或者变成:这样也方便用户部署,而且大部分用户,用开发时的就满足了需求,runtime 版本交给那些对性能有追求的高级使用者去玩。
异步模块
这个文档入口,在开发指南里居然没有。我花了好长时间才从首页找到一个入口,有点囧。
这段话是否有误?能理解
$await
是个占位符,eval(Jscex.compile("async", …))
怎么也成了占位符?我没看 jscex 的源码,直觉上,Jscex.compile("async", fn)
是一个真实的普通函数,这个函数执行时,会分析第二个参数 fn 中的$await
等占位符,然后进行一系列操作,结果是一段编译后的代码,最后交给 eval 去在当前 context 上执行。我理解是否有误?这个并发的例子:
感觉理解起来还是有点绕。不如 async 等类库提供的 api 方便,比如类似:
async 类库不反对异步回调,只是将回调套回调的写法变得更简单清晰。文档读到这里,Jscex 对我来说,貌似只有
$await
让我觉得非常诱人,难以舍弃-.-任务模型
Event 这个例子让人有点小兴奋了,居然还可以这样用。我前面有些地方误解 Jscex 了,误解的文字也就不去修改了,保留一份阅读文档过程中的真实记录。
我喜欢这个:
比 async 类库强太多了。依旧期待是否在包装出一个高级 API,比如:
CancellationToken
又是高级用户内容了,这被普通用户看见,会有心理障碍的-.-这取消模型还是得赞下,设计得挺棒的。
下面的貌似都是高级内容,我决定需要的时候再看,这份建议就写到这。
最后说个总体感觉,
$await
魅力无穷,但需要通过eval(Jscex.compile...)
或Task.create
来创建 AsyncTask 给 $await 调用,感觉对普通用户有难度,需要理解的东西比较多,写的时候要换一些思维去想。$await
是更自然的异步流程控制,但感觉 task 不是很自然,没有传统的 callback 容易理解。是否可以将 Task 隐藏掉?比如首页的例子如果能像下面这样写就帅呆啦:
上面的代码,是在某一个文件里,比如 xx.js,这在 node 或 commonjs 里,都是一个模块,意味着我们可以在模块编译时,做点手脚,比如对于 NodeJS 环境,可以在 Module._compile 调用时,自动将
eval(Jscex.compile...)
加上。SeaJS 的 plugin-jscex 我就是想这么干的,让开发时用户可以直接写成:
然后我在模块编译时,通过 plugin-jscex, 将上面的代价等价成:
老赵看看这样是否可行?等你确定后我再来折腾 plugin-jscex. 如果可行就太好了。
The text was updated successfully, but these errors were encountered: