june01
june01
尝试了几次较新的 angular 版本,发现 ng-cli 本身隐藏了不少构建细节,而个人实在缺乏 angular 开发经验,故官方暂时无法提供适合使用的 demo(每次尝试总会有一些不尽如人意的地方,故不适合作为可展示 demo)。希望能有这方面的朋友可以参与进来共同推进 angular 的支持 🤝🤝🤝。
> > > > > 尝试了几次较新的 angular 版本,发现 ng-cli 本身隐藏了不少构建细节,而个人实在缺乏 angular 开发经验,故官方暂时无法提供适合使用的 demo(每次尝试总会有一些不尽如人意的地方,故不适合作为可展示 demo)。希望能有这方面的朋友可以参与进来共同推进 angular 的支持 🤝🤝🤝。 > > https://github.com/wszgrcy/angular-miniprogram 可以考虑和这个项目合作下 简单看了下,实现原理不一样,不太适合接入。kbone 的实现原则是希望不修改 Web 框架运行时的方式就可以直接使用。
兼容起来坑很多,不建议在小程序环境上使用对浏览器环境依赖较重的框架,像 vue、react 能够较好兼容是因为其有完整的 webpack 编译链路和对浏览器接口较轻量的依赖,可以比较简单模拟出其需要的环境(但是一些特性仍然因为无法模拟而无法支持,比如同步 getBoundingClientReact 和 getComputedStyle 等)。 如果有小程序 wasm 的需求可参考:https://developers.weixin.qq.com/miniprogram/dev/framework/performance/wasm.html ,但是其也不完全等价于 WebAssembly
kbone 的话,如果明确更新范围,可以尝试使用 wx-view 进行隔离呢?比如你的列表页是这样的: ``` 其他逻辑 ``` 这里假设你的 list 里会频繁新增 item,所以可以改造成这样: ``` 其他逻辑 ``` 然后如果每个 item 里面也会有频繁的 update,那么还可以改成这样: ``` 其他逻辑 ``` 只要能界定出频繁更新的范围的地方,就使用 wx-view 来代替普通标签,这样会生成一个自定义组件,减少更新 diff 范围。当然,自定义组件的初创会比普通标签更慢,所以相当于牺牲初创开销来优化更新开销。这里需要考量的是需要拆分出多少个自定义组件,这就要根据业务来定了。 另外上面拆分后,miniprogram-element/miniprogram-render 也要更新到最新版本,最新版本支持了小范围更新的优化,在这种场景也能减少更新数据包。 > PS:不过私以为,要死磕性能的话,还是建议上原生,几乎任何小程序框架都会引入损耗,而原生可以更自由地做优化定制。使用原生尤其针对长列表的情况,也可以试试原生的...
原生页面和 kbone 页面一直是可以混在一个小程序里的,配置 generate.app 为 noemit 就可以不输出 project.config.json 和 app 相关的代码,只输出 common 和 pages 等。如果想将 common/pages 在收归到一个目录中,可以改 webpack 的输出配置或者利用分包的输出特性。 然后其他部分你可以直接在输出目录里写,也可以利用 webpack 插件从某个目录拷贝到输出目录。
> @JuneAndGreen Taro更新了CustomWrapper组件,看一下有没有参考价值。现在的原生自定义组件的引入方式和调试确实有点麻烦 taro 这个并不是引入原生自定义组件,而是强制开启一层自定义组件,以减少每次 diff 的范围吧。这个 kbone 一开始就提供了,就像上面有提到的,使用 wx-view 就可以单独开一个自定义组件。
直接监听 back 事件试试,去掉 bind,bind 本身就是绑定的意思。
应该是这个原因:因为这里传的引用,只改引用里面的值的话,新旧都一样的,所以 diff 不出来差异。 后面我看看有没有必要加个深拷贝或者研究下有没有其他方案处理这种情况。
目前暂时没有提供英文相关文档。
@xmsz 这个项目的初衷是为了产出一套方案支持快速迭代出微信开放社区小程序的,可以认为是 web 端和小程序端的同构方案,一套代码多端运行,降低维护成本。