[]编译太慢了,我想到一种优化编译时间的方式,请官方给出评价

很久以前就在纠结编译太慢的问题,已经提出过问题 http://ask.layabox.com/question/1529
 
一句话概括就是,空项目编译都要耗时1-2秒。但是官方没有给出一个满意的答案。
我了解到laya.js.exe编译耗时主要在源码检查方面,按照官方的指引,空项目需要通过添加源码路径的方式引用laya引擎。laya.js.exe需要检查用户代码调用的laya引擎相关的类,这些类的数量是非常多的,故而导致编译速度很慢。
 
了解原理之后,那么我们可以这样做。我们创建一个laya引擎的类定义库,这里只包含用户代码中引用到的laya引擎的类的定义。比如说用户的代码中只包含Laya.init这个方法,那么我们的定义库里只需要添加这样一个类即可:
class Laya
{
public static function init(width:Number, height:Number, ... plugins):* {
return null
}
}

这有点类似使用laya 原生js开发中的.d.ts文件,只是我们应该让这个laya类定义库尽量的小,满足编译的要求即可。这样能够极大提高编译速度,因为需要检查的类数量少了。
 
另外一方面,把用户代码当做一个分包(或者叫库)来编译,我们只关注编译出的分包(库)js。根据分包的原理,用户代码分包文件里是不包含laya引擎的类定义的。我们需要建立额外的项目使用分包的方式编译laya引擎代码。
 
在大型项目中,类的数量是巨大的,我们应该尽量把项目代码划分为较小的块,通过分包的方式编译、加载、运行,以此来避免一次性编译很大的源码库。
 
如果库比较多的话,我们可以把小的js文件使用工具连接起来来简化加载以及优化加载速度。工具推荐 https://github.com/mrclay/minify
已邀请:

yung

赞同来自:

新版本支持了编译缓存,不变化的文件,不进行编译,性能提高不少
编译开关:;quickcompile=true;

cuixueying

赞同来自:

你的建议非常好,生成一个空的类,会提升编译速度,我们会认真考虑这个可行性
关于模块划分,目前是支持的,可以参考下LayaAir分包:http://ask.layabox.com/question/329

 

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作