前言

如何快速提高Laya构建速度 微信小游戏推出之后,很多公司也相应的进入到微信小游戏这个领域,现在市场上的游戏开发引擎,如Cocos、Egret、Laya都对小游戏有了很好的兼容性。而在实际开发中,如何提高Laya的构建速度,是游戏开发者非常想要解决的问题之一,下面,我们就来给大家梳理下。

一、默认的Laya构建方式

Laya在使用IDE默认创建项目后(本文选择typescript语言),会在当前项目目录下,新建一个为.laya的文件夹。默认生成的编译配置文件为

其中compile.js为开发时默认运行文件,这里如果开发者是mac系统,使用F8编译项目后,可能都会报以下错误:

通过报错提示,这里如果出错的话,将compile.js名称改为gulpfile.js,并且,将文件内gulp运行的默认task改为'default'。

通过compile.js文件可知,默认的Laya构建方式是,使用gulp、browserify进行项目构建,tsify编译typscript,vinyl-source-stream用于将tsify构建的node stream转化为gulp能识别的stream文件。所以我们每次修改ts源码,都需要手动点击编译或者使用F8编译。并且,就Laya的3D示例项目,每次编译的时间基本在1s~2s。

二、改进的Laya构建方式

对于web前端开发,可能都会配置webpack+webpack-hot-middleware之类进行代码热更新,开发web网页的流程基本就是:修改代码 -> 自动编译 -> 自动刷新,倘若有两个屏幕,开发者不需要去刷新浏览器、输入命令重新编译等机械重复的行为。既然Laya默认使用了browserify(其实browserify这几年更新已经很慢了),这里我们可以加入gulp.watch,观察src目录源文件,每当src下文件发生修改时,自动触发编译操作,相当于开发者不需要再按F8编译。

但是这种方式,相当于gulp重新进行编译,实际编译速度依然不快。那么问题来了,有没有办法编译对时候,gulp只编译修改的那部分,从而加快编译速度?

三、使用watchify监听文件变化并结合browserify-sync自动刷新

通过gulp官网可了解到watchify到相关使用,这里我们将代码改成,并结合browser-sync,带来自动刷新网页的功能。

1.  `const watchedBrowserify = watchify(browserify({`2.  `basedir: workSpaceDir,`3.  `debug: false,`4.  `entries: ['src/Main.ts'],`5.  `cache: {},`6.  `packageCache: {}`7.  `}).plugin(tsify));`8.  `// 记录watchify编译ts的时候是否出错,出错则不刷新浏览器let isBuildError = false;`9.  `gulp.task("build", () => {`10.  `return watchedBrowserify`11.  `.bundle()`12.  `.on('error', (...args) => {`13.  `isBuildError = true;`14.  `gutil.log(...args);`15.  `})`16.  `.pipe(source('bundle.js'))`17.  `.pipe(gulp.dest(workSpaceDir + "/bin/js"));`18.  `});`20.  `gulp.task("watch", ['build'], () => {`21.  `// 浏览器开发时自动刷新页面`22.  `browserSync.init({`23.  `port: 3002, // 监听端口,这里注意是否和其他项目冲突`24.  `server: {`25.  `watchFiles: ["../bin/"], // 刷新网页的监控目录`26.  `baseDir: "../bin/"`27.  `}`28.  `});`29.  `//  watchify监听文件刷新`30.  `watchedBrowserify.on("update", () => {`31.  `isBuildError = false;`32.  `runSequence('build', () => {`33.  `if(!isBuildError) { // 没有编译错误时,刷新浏览器界面`34.  `browserSync.reload();`35.  `}`36.  `});`37.  `});`38.  `// 打印watchify编译日志`39.  `watchedBrowserify.on("log", gutil.log);`40.  `});`

其中,runSequence用于同步执行gulp任务,多次实践,这里还需要加入变量isBuildError,在代码编译出错时,不执行browserSync的刷新。最终效果:

编译速度快了近10倍,浏览器也能自动刷新了,能极大地提高程序员的工作效率。

identity_insert 如何改为on_十分钟教你如何快速提高Laya构建速度,还不快来康康?...相关推荐

  1. python批量删缩进_鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?...

    鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频? 前言 半个月前,后台有个小伙伴问我,如何将视频中的音频提取出来,并且将声音转成文字写入到 word 中,正好接下来的 ...

  2. 十分钟教你开发EOS智能合约

    十分钟教你开发EOS智能合约 在CSDN.柏链道捷(PDJ Education).HelloEOS.中关村区块链产业联盟主办的「EOS入门及最新技术解读」专场沙龙上,柏链道捷(PDJ Educatio ...

  3. 一分钟教你学会python_十分钟教你学会python编写小游戏

    原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...

  4. 十分钟教你配置frp实现内网穿透

    十分钟教你配置frp实现内网穿透 一.frp的作用 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务. 对于 http, https 服务支持基于域名的虚拟主机,支持自定义 ...

  5. python编写小游戏17_十分钟教你学会python编写小游戏

    原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...

  6. 十分钟教你掌握CPU缓存

    十分钟教你掌握CPU缓存 一. 基础知识 二. 缓存命中 三.缓存一致 四.程序性能 示例一 示例二 示例三 一. 基础知识    首先,大家都知道现在CPU的多核技术,都会有几级缓存,现在的CPU会 ...

  7. 【Linux + Makefile】十分钟教你学会Makefile的FORCE

    相信大家在使用Linux环境编程的时候,一定接触过Makefile这个玩意.Makefile在搭建自定义的编译环境,尤其是自动化编译.多功能一键编译等功能上,还是发挥了很大的作用.如果接触过Linux ...

  8. iphone计算机如何打字速度,打字速度太慢了?教你几招快速提高iPhone打字速度

    原标题:打字速度太慢了?教你几招快速提高iPhone打字速度 你上一句回复还是打字中,对方已经将下一个问题发过来了,经常遇到这样的问题会不会很尴尬?很容易就出现对不上号的情况了,那我们要怎么提高iPh ...

  9. 一直在构建版本_教你如提升Gradle90%的构建速度

    一.第一个最有效的办法 检查你使用的Gradle插件版本,是不是最新的.如果不是最新的,请升级到Gradle插件的最新版本. Gradle在升级过程中一直对构建速度做了优化,升级到Gradle最新版本 ...

最新文章

  1. [afterCode] docker 速成班 3: 使用 container 中的功能
  2. Robolectric
  3. 牛客竞赛语法入门班函数与递归习题【未完结】
  4. 《数据科学:R语言实现》——第1章 R中的函数
  5. Web 页面请求过程
  6. idea 项目编译不成功-循环依赖的问题
  7. JDK1.7配置及测试
  8. 十分钟用 Python 绘制了近十年编程语言趋势图
  9. gitlab-runner 安装使用
  10. CSS中属性个属性值怎么区分,[CSS] 详细解释 @media 属性与 (max
  11. 信息学奥赛一本通 1156:求π的值
  12. Qt4_Hello world
  13. 001-为什么Java能这么流行
  14. 程序员面试金典——9.6合法序号序列判断
  15. Vue使用阿里iconfont图标
  16. 驱动安装时数字签名无效
  17. 雕虫小技也重要--数据处理中的电子表格技巧
  18. Golang——Go语言发展史(一)
  19. thinkpad笔记本鼠标指针一直往左下角滑动解决方法
  20. macOS上使用Openconnect代替Cisco Anyconnect

热门文章

  1. numpy 归一化_NumPy 数据归一化、可视化
  2. python修改密码业务_Python: 修改LDAP密码
  3. android listview 数据数组制作,android – 从对象的数组列表中填充listview
  4. 用php实现随机点名,使用javascript做的一个随机点名程序
  5. Scala中=gt;的用法
  6. k3 审核流程图_3-金蝶K3操作流程图详解
  7. arm b bl 地址无关码_32位和64位下的arm_pwn初探
  8. python整数预测_时间序列预测全攻略(附带Python代码) | 36大数据
  9. linux c 编程手册,Linux C/C++编程手册查阅方法
  10. python linux调试_python调试