发布 pm.js,包括但不限于帮助构建 web 原生单页面

2021-01-10 18:37:09 +08:00
 lesismal

项目地址

pm.js

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

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

一些示例

主要功能

  1. 发布订阅
  2. 元素与事件订阅
  3. 多页面 /元素显示隐藏互斥关系管理(构建单页面)
  4. 简单的请求、html/js 异步加载封装

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. 少即是多,鼓励简化工程复杂度
3349 次点击
所在节点    JavaScript
22 条回复
lesismal
2021-01-22 14:43:48 +08:00
@shunia 感谢之前指出的相关知识点,最近研究了下 history 和 hash 路由,选择了对 hash 路由做点支持、根据路由切换内容,hash 路由确实不算复杂,但是内容管理本身还是需要原来的部分

随便找了个 admin 的模板项目,用 pm.js 、hash 路由切换内容的方式改造了下,去掉了多个页面大量的重复内容、去掉不必要的重复加载、重复下载之类的,切换内容更加顺滑、性能要好太多。我对前端不熟悉,各位交流中指出的问题能方便我更快去找到相关知识点、改进计划。

如有兴趣欢迎多来指点、给些批评建议:

https://github.com/3rdrepo/adminkit

:smile::smile:
lesismal
2021-01-22 15:02:28 +08:00
@otato 对 hash 路由切换页面内容做了支持,fork 了个 admin 模板项目,用 pm.js 改造了下,去掉了多个页面大量的重复内容、避免不必要的重复加载、重复下载之类的,对比 fork 原作,切换内容顺滑、性能基本能达到极致了

欢迎来指点、给些批评建议( v 站不让每个回复都带外链,只能加另外一个帖子的链了):

https://www.v2ex.com/t/747412#reply0

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/743590

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX