控件和模板的预编译是什么意思?

10 views
Skip to first unread message

dd

unread,
Dec 12, 2011, 7:42:58 AM12/12/11
to Julia: HTML5 Mobile Dev Framework
看到白皮书中提到“控件和模板的预编译”,可以提升程序的运行效率。这一点不是很明白,我所理解的页面模块一般都是“预定义”好的一些页面代码,主要目
的是为了开发页面时比较方便而已。 再说html、js不都是解释执行的么,怎么样来进行“预编译”呢?“预编译”对性能提升有多大帮助?

RenYi

unread,
Dec 12, 2011, 2:47:32 PM12/12/11
to juliap...@googlegroups.com
在已经发布的0.8中,预编译做的是把模版编译成JS,节省了多次调用同一个模版而需要反复解释模版的过程。这个模版预编译的功能是个基础,为动态删除DOM元素,只在需要时创建(也就是所有模版差不多都要反复执行)提高了效率。当然,这有点类似JIT,预编译是在运行时进行的,如果模版调用次数少的话就没有什么收益。

在即将发布的1.0RC中,模版由外部编译器编译到JS,这个过程是在开发者机器上执行的,省去了每次运行时都要首先编译模版的过程。同时由于使用了编译器技术,可以在编译时生成调用层次很少的代码,避免了很多JS库抽象层次过多带来运行效率低的问题,执行效率也会更高。

Julia的1.x版本关注的是快速开发的能力,或者说DRI & DIY,Don't Repeat Yourself & Do It Yourself,也就是既避免Web开发中大量$("a-class").html("<div>Header</div>")这类无意义重复,又不能在需要自定义扩展的时候挡住去路。这两点其实是很多框架难以保持平衡的一个地方。

熟练的Windows开发者往往弃用MFC而使用WTL,Python程序员往往上手的时候使用Django但是熟练掌握Python后就开始使用各种Micro framework,这些都是开发框架过于复杂,设定的开发应用场景过于僵化,以至于使用框架不如自己动手来得更加简便和快捷。

Julia的1.x目标在于实现一个表达能力和适应性都很好的编程框架,比如数据Model定义的方式,Template语法定义和扩展方式,应用扩展的办法,以及应用开发模式的重新定义(之前的开发模式就是Android的Eclipse、Ant和iOS的Xcode,我个人更喜欢Vi+Makefile,但是Julia应该各种习惯都支持)。

从另外一个角度看,确实,Julia的1.x版采用Native + JS库结构,虽然在JS库上面进行了很多优化,比如删除所有和Mobile平台无关代码,动态构造DOM,带来的结果就是比jQuery、Sencha之类内存占用少一点,速度快一点,但不是数量级意义上的提高。

话先到这儿,回去编程了...



2011/12/12 dd <hmd19...@gmail.com>
看到白皮书中提到“控件和模板的预编译”,可以提升程序的运行效率。这一点不是很明白,我所理解的页面模块一般都是“预定义”好的一些页面代码,主要目
的是为了开发页面时比较方便而已。 再说html、js不都是解释执行的么,怎么样来进行“预编译”呢?“预编译”对性能提升有多大帮助?

--
You received this message because you are subscribed to the Google
Groups "Julia: HTML5 Mobile Dev Framework" group.
To post to this group, send email to juliap...@googlegroups.com

Reply all
Reply to author
Forward
0 new messages