{"action":"opened","issue":{"url":"https://api.github.com/repos/10081677wc/blog/issues/34","repository_url":"https://api.github.com/repos/10081677wc/blog","labels_url":"https://api.github.com/repos/10081677wc/blog/issues/34/labels{/name}","comments_url":"https://api.github.com/repos/10081677wc/blog/issues/34/comments","events_url":"https://api.github.com/repos/10081677wc/blog/issues/34/events","html_url":"https://github.com/10081677wc/blog/issues/34","id":321422014,"number":34,"title":"Eqx 2017-2018年度工作总结","user":{"login":"10081677wc","id":14361254,"avatar_url":"https://avatars0.githubusercontent.com/u/14361254?v=4","gravatar_id":"","url":"https://api.github.com/users/10081677wc","html_url":"https://github.com/10081677wc","followers_url":"https://api.github.com/users/10081677wc/followers","following_url":"https://api.github.com/users/10081677wc/following{/other_user}","gists_url":"https://api.github.com/users/10081677wc/gists{/gist_id}","starred_url":"https://api.github.com/users/10081677wc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/10081677wc/subscriptions","organizations_url":"https://api.github.com/users/10081677wc/orgs","repos_url":"https://api.github.com/users/10081677wc/repos","events_url":"https://api.github.com/users/10081677wc/events{/privacy}","received_events_url":"https://api.github.com/users/10081677wc/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-05-09T03:55:36Z","updated_at":"2018-05-09T03:55:36Z","closed_at":null,"author_association":"OWNER","body":"# Eqx 2017-2018年度工作总结\r\n\r\n总结一下2017-2018年在易企秀工作的经历和思考，本来应该从项目的整体架构说起，但是同事岩琦之前已经进行过简单的梳理，在此给个链接“[易企秀H5项目架构梳理][1]”不再赘述，只做实现细节上的补充，以及过程中的个人心得体会。\r\n\r\n## 实现逻辑复杂的功能\r\n\r\n### 一镜到底\r\n### 画中画\r\n\r\n## 渲染引擎架构的重新梳理\r\n\r\n### 组件\r\n### 组合\r\n### 图层\r\n\r\n## 达成的成就\r\n\r\n## 编辑器未来的展望\r\n\r\n### 渲染引擎平台化\r\n### 编辑器分层\r\n### 异步事件管理\r\n\r\n## 尚未解决的问题\r\n\r\n### 框架造成的性能瓶颈\r\n### 关于场景加载渲染优化梳理\r\n### 编辑器历史记录操作优化\r\n### 组件动画较多时在中低端机型预览的卡顿问题\r\n### 其他很多细节上需要优化的地方\r\n#### 臃肿的 directive 拆分\r\n有些比较臃肿的 directive 已经达到几百上千行，代码里甚至出现职责不单一的情况，这里建议很多业务逻辑可以拆分到各个 service 里。\r\n#### 样式库的建立\r\n样式库建立的计划存在很久，一直没有很好的进行，不过一直没有太多的影响开发效率，然而问题暴露于编辑器可以切换颜色主题的需求，开发人员需要更改非常多 directive 的样式，甚至发现很多样式的设置存在重复/冗余/覆盖的情况，这里建议好好梳理一下样式 class 之间的关系，建立样式库。\r\n#### 代码 bug 评级策略\r\n最近研发部提出 okr 的绩效指标，然后评判标准十分模糊不清，个人认为有必要规范一个代码 bug 评级策略（比如千行代码 bug 率 etc.）用于研发人员绩效考核的评价标准。\r\n#### 重写的原型方法梳理\r\n项目代码在考虑兼容性的情况下，存在很多重写原型方法的地方，这里建议把所有重写的原型方法进行整理，输出一个类似于 polyfill 的文件，便于管理和定位问题。\r\n#### 冗余事件的梳理\r\n编辑器中存在很多相对独立的 directive 需要进行通信，目前的做法是使用大量的 $broadcast/$emit 来模拟钩子，由于没有一个关于异步事件的标准/文档，项目代码中存在很多同用异名的事件，存在很多无效事件，并且由于 ng1.x 对于 $broadcast/$emit 的实现机制也会造成一些性能问题（会产生很多没有意义的 scope 遍历，触发没有意义的 $digest 脏检查），这里建议首先重新梳理一下异步事件，去除冗余的部分，然后对于某些事件使用其他通信方式代替（比如 service etc.）。\r\n#### 编辑组件重新渲染问题优化\r\n在编辑器中对组件进行编辑，比如图片组件，在修改图片 src 后目前的做法是删除当前组件的 $item 然后重新 render，这样的做法无疑是存在浪费的，组件的 dom 结构比较复杂，完全可以仅对承载图片的节点进行重绘。\r\n#### 代码中存在的内存泄漏和 dom 操作\r\n项目代码中存在大量没有及时释放的闭包，以及删除组件时由于在某处存在引用造成遗留的 dom 对象，这些情况都会导致内存泄漏，在一些中低端机型中可能会出现内存不够的问题，同时在创建组件/组合/图层/页面时，\r\n#### 冗余的 update 方法梳理\r\n这个问题比较细节，主要是组件在修改样式时需要一个 update 方法，但是由于 api 标准/文档不清晰的问题，造成多个研发人员写出多个 update 方法，越来越难以维护并且代码冗余量越来越大，急需解决。\r\n#### 部分组件重写\r\n部分组件的实现比较丑陋，比如滑块组件新老版本夹揉在一个文件中实现，难以维护，建议分别拆开独立完成。\r\n#### 富文本工具条的优化\r\n编辑器中高频使用的新/旧文本组件的富文本工具条仍然存在很多问题，以及双击编辑也存在很多问题，刚上手的新人对于该部分的代码难以进行维护，建议找时间完整的梳理需求和解决方案并且重新实现。\r\n\r\n## 心得感悟\r\n\r\n## 离职的理由\r\n\r\n\r\n\r\n  [1]: https://github.com/xiaoyu2er/blog/issues/13"}}
{"actor":{"display_login":"10081677wc"}}