-
Notifications
You must be signed in to change notification settings - Fork 0
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
宠物项目总结 (vue/egret) #11
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
宠物项目总结 (vue/egret)
项目初期基于
Vue
做了一版原型版本的,主要实现功能,ui
也是临时资源。后期用
egret
重构一版可以上线的,用它是因为egret
可以发布多平台,并且支持龙骨为宠物做一些骨骼动画下面是项目开发过程中的一些思考以及解决方法
1. websocket 封装消息的接收以及发送
为什么封装?因为使用
websocket
发/收消息时,要进一步处理:1.1 最初的做法
当
websocket
收到消息时,存入vuex
中然后组件中
watch
这条消息,就可以拿到对应的信息可以看到这种方式的局限性,如果有
N
条命令的话,就是整屏的if (msg.cmd === 'xxx')
1.2 采用发布订阅模式改进
vue
版本:在组件中使用:
1.3 链式调用
将
Socket
的on
方法改成可以进行链式调用: 在on
方法中return this
即可1.4 场景移除的时候自动移除事件监听
egret
版本:每个页面都继承BaseView
,在页面的基类Baseview
中2. 如何优雅地为所有按钮添加点击播放音效
需求是点击按钮都要播放一段音效,如何给所有按钮都加上这个效果?
vue
版本想到了三个方案:window
的click
事件, 在e.target
中判断是否点击了按钮vue
的指令:directive
,给每个按钮加上音效指令当时是因为还没用过指令,于是就用了这个方案。写完后在编辑器搜索
button
,加上指令v-music
egret
版本:创建基类ui.Button
继承eui.Button
,创建按钮的时候选择ui.Button
即可3. nodejs 解决 egret 打包小程序的问题
3.1 文件中的变量覆盖问题
原因:打包后会有三个文件,这里方便说明假设为
index.js
,a.js
和b.js
于是导致
ui
这个对象为空的如何解决?肯定是要把
b.js
中的var ui = {}
改成var ui = window.ui || {}
。利用
egret
的插件机制,利用正则表达式替换文件的内容3.2 自定义组件不会自动添加到全局变量中
原因:在
eui
中使用自定义组件,发布到微信小程序的default.thm.js
报错提示找不到自定义组件,需要将自定义组件暴露到全局解决方法:主要也是遍历需要打包的文件,读取到文件的内容,再写入
4. nodejs 加快开发效率
vue
版本:需求:预加载项目的所有图片。分析图片组成:
服务器返回的图片,json格式,这个好办,直接拿到地址拼接就行了。
本地的图片,会由
webpack
输出最终的图片。 这个地址怎么获取呢?我们不可能每次打包后手动把这些图片的地址写好。于是通过编写webpack
插件代替我们做这些事:读取打包后的所有文件,用正则表达式取出所有图片
将读取出来的图片地址生成一个
json
文件然后将这个
json
文件上传到服务器上,在代码中获取这个json
的内容,然后合并服务器端的图片,最终加载服务器和本地的图片。egret
版本:每次打包的时候,因为压缩合并代码浪费了大部分时间。那么我们可以在第一次打包后生成的一些库文件(
egret.min.js
/socket.min.js
等)保存下来。第二次后就不进行压缩合并的部分,只打包修改的业务部分。这样就大大减少了打包时间。优化前时间:
16:42:30 -> 16:43:03 = 33s
16:47:18 -> 16:47:53 = 35s
16:56:37 -> 16:57:10 = 33s
优化后时间:
16:39:42 -> 16:40:11 = 29s
16:49:38 -> 16:50:01 = 23s
16:57:50 -> 16:58:14 = 24s
自动合并图集,基于
TextureMerger
合并图集之后需要压缩图片,利用
imagemin
代替我们手动压缩删除多余的文件,这个项目合并图集之后会有多余的图片,打包后需要删除
编写
task
文件, 在vscode
中图形化界面操作打包多平台版本5. 其他
vue
中利用sass
的mixins
创建序列帧The text was updated successfully, but these errors were encountered: