Egret社区

[EgretEngine] 【吐槽】egret如何添加三方库扩展

2018-12-6 19:31
712
本帖最后由 heirelance 于 2018-12-8 09:17 编辑

*注意:这个是基于5.2.13版本的
1、非官方维护的库
把三方库打包成独立的js文件(可能要你自己使用webpack来打包,因为不是每个项目都会写)
按需编写*.d.js文件,或者复制别人代码(没看错,在js已经工程化很多年的今天,还要复制别人的代码)
在manifest.json中添加你要加载的js文件相对项目的位置(第一步生成的js文件)
不要保存在libs/modules/文件夹下,因为它下面的文件每次编译都会重新生成,会把你的文件删掉

可能的坑:
由于1的方法没法保证多个三方库依赖同一个版本的三方库,有可能导致程序异常

2、官方维护的三方库
一定要把它放到项目外,因为编译时,它会复制一份到libs/modules/下,导致重复定义
egretProperties.json要在modules添加{"name":"模块名","path":"三方库所在的libsrc目录"}

3、关于三方库管理吐槽
问:能不能通过npm安装扩展?
答:不能。
问:官方有没有提供类似npm扩展库安装功能,保证我的库没有冲突?
答:没有
问:那项目(依赖)维护是不是很蛋疼?
答:是,也不是。你看git有多少egret扩展库?没几个!(毕竟没有工具管理依赖,可能非官方维护的就支持那么几个egret版本了)



+++++++++++++++++++++++++++++2018-12-08++++++++++++++++++++++++++++++++++++++
补充:
按照我的理解,插件是暴露最外面的命名空间(es5对象)到全局对象【假设对象名叫global,不一定暴露到js接口的,根据底层embed实现】(千万不要写一个叫"xxx.xxx"的命名空间,因为在全局它是global['xxx.xxx'],但是在ts中如果不能获取这个global对象,是获取不了这个命名空间的,"xxx.xxx".xxx会解析为字符串的方法),相同最外层命名空间的不同插件会冲突
蓝色字那部分发现是行不通了,重新构建的时候会重新生成,只能该egretProperties.json了。之前发现成功可是缓存机制吧




分享到 :
0 人收藏

2 个回复

倒序浏览
山猫  官方团队 | 5 天前
heirelance  登堂入室 | 4 天前
山猫 发表于 2018-12-7 17:55
https://bbs.egret.com/forum.php?mod=viewthread&tid=52558&highlight=%E4%B8%89%E6%96%B9%E5%BA%93

嗯,类似的文章也看过了。需要实战才真正明白怎么搞。
今天(昨天?)尝试把别人的npm库封装成三方库了,也运行成功了
准备写个仓库教人怎么封装别人的js三方库(大概星期二写完吧,星期一要办点公事。周末?项目在公司电脑呢
迟点搞一个工具,基于webpack半自动化构建(话说我第一次用webpack呢,之前搞后端的,真TM好用,比grunt,gulp等爽多了)
再迟点,等我搞清楚你们的编译循序,看看能不能通过hack,搞个直接支持npm安装三方插件(当然,是ts库或者带@types的库)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2019 Comsenz Inc.

返回顶部