技术解析

发布 pm.js,包括但不限于帮助构建 web 原生单页面
0
2021-08-11 04:28:10
idczone

项目地址

pm.js

另外捎带个项目,golang 高性能、功能丰富的网络交互 /RPC 框架 ARPC

因为本来是想写点前端的项目辅助宣传 ARPC 的,但是迫于前端学不动,并且从理论上讲,react 、vue 那些最终还是原生、虚拟 dom 也不可能比高手写的原生性能好,所以写了 pm.js ,不求为前端社区做出多大贡献,但愿能给道友们带来一些新的思路、简化工程、保住秀发

一些示例

  • bind pages

  • bind pages and click

  • pub/sub - bind element and event

主要功能

  1. 发布订阅
  2. 元素与事件订阅
  3. 多页面 /元素显示隐藏互斥关系管理(构建单页面)
  4. 简单的请求、html/js 异步加载封装
  • 源码 200 多行,有需要的请自行压缩,压缩后 2-3k

pm.js 实现原生单页面的原理

  • 传统 web 前端开发多是通过改变路由切换页面,reload 消耗大、性能差
  • 近几年 react 、vue 的崛起很大程度上提升了性能,主要是单页面、router 之类的,一些原生单页面应用的方案应该也是类似的思路,具体原理是啥没深入研究,只说说 pm.js 的实现方案吧:
  1. html 主页面包含一组空 dom 元素,非默认显示页的 dom 元素设置隐藏( display: none )
  2. 使用 pm.js 根据配置绑定这组 dom 元素的关联关系,按照实际子页面的显示时机比如 $pm.select(dom id),同步或异步加载该 html 子页面作为主页面的 dom 元素内容
  3. 通过 style.display 属性控制不同子页面元素的显示或隐藏,只有当前页面被显示、其他页面被隐藏
  • 特点:
  1. 不需要改变路由,而只是选择当前页面
  2. 可以绑定触摸时间的 src-dst 关系,点击 src 时自动切换页面
  3. 提供释放页面方法,可以在页面隐藏时释放、下次显示时重新加载,业务层可以根据需要自行管理

一点工程性建议

  1. 鼓励使用有组织有纪律的 id 进行 dom 元素的工程管理
  2. 鼓励使用事件 /发布订阅机制,统一处理 dom 事件、网络消息事件等的分发,页面内容进行事件绑定 /订阅,从而事件触发时的内容自动更新(这本来是个挺简单的事情,但是 react redux 之类的搞得过于复杂、云里雾里,前端阵营老师这么玩、所以才有前端学不动了现象)
  3. 少即是多,鼓励简化工程复杂度

周一搬砖日,up up ~

看来大家都去搞 react 、vue 了,没人关心 native 了
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服