- 微信小程序渲染框架Skyline初体验--比比轻壁纸实例
微信小程序的Skyline是微信小程序团队近期推出的接近原生渲染的渲染引擎,我尝试了用skyline输出了一款Uniapp+wordpress的壁纸小程序。 [图片] 今天在项目提交后我也记录下skyline开发中的各种新特性和难点。文尾附上代码。 先来看下项目上线的效果。 [视频] 可以微信扫码跳转小程序体验。 [图片] 比比轻壁纸整个项目均是skyline打造,因此需要在app.json中定义如下两个参数 "renderer": "skyline", "lazyCodeLoading": "requiredComponents", 此项目中,我也仅仅用到了skyline特性的冰山一角,因此更多的特性大家移步去官方文档中查看。 1.共享元素 最吸引我的地方的是共享元素特性,他能实现不同页面的元素无缝衔接。 官方的介绍是: 在连续的 Skyline 页跳转时,页面间 key 相同的 share-element 节点将产生飞跃特效,开发者可自定义插值方式和动画曲线。通常作用于图片,为保证动画效果,前后页面的 share-element 子节点结构应该尽量保持一致。 比比轻壁纸项目中大量使用了共享元素动画,让图片以丝滑般的交互进行呈现: [图片][图片] 实现的方法也非常简单,仅需在不同页面把图片用<share-element></share-element>包裹起来,定义相同的id即可。 默认的动画就已经很丝滑了,官方对动画交互还给出了许多自定义的属性,方便自定义更多的动画。 共享元素文档:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/share-element.html 2.自定义路由 自定义路由真的绝了,仅仅几行css3样式属性,就能让两个页面的切换交互实现各种高难度动作。 项目中,全部的弹层交互、页面过度特效均由自定义路由轻松搞定,不同的路由交互仅需在官方提供的路由代码上修改两三行代码即可实现。 尤其是页面中有弹层内容显示或者半屏显示时,自定义路由非常实用。 [图片] 自定义路由文档:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/custom-route.html 3.手势系统+worklet 目前项目中仅仅在图片返回时用到了手势,手势拖拽图片下滑,即可实现图片缩放回到上页 [图片] 手势系统文档:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/gesture.html 4.吸顶布局 在小程序里,我们实现吸顶布局用到的是position:sticky。此次skyline直接给出了<sticky-header></sticky-header>实现吸顶,同时结合<sticky-section></sticky-section>能实现多重吸顶 [图片] 吸顶文档: https://developers.weixin.qq.com/miniprogram/dev/component/sticky-header.html https://developers.weixin.qq.com/miniprogram/dev/component/sticky-section.html 以上四个新特性是项目中特别值得推荐的,下面说一下开发难点 1.兼容问题 如果你是从webview项目中切换过来,你会发现页面会变的凌乱不堪,完全不堪入目。这个时候,需要一点耐心。因为新的skyline使用的类似nvue模式,即默认全部使用弹性盒模型display:flex属性,暂不支持display:block,而这个属性会导致宽度和高度变得弹性,你不定义某个子标签的宽高可能就看不到这个内容显示或者挤成一团。 经过使用后,总结了几点: a.使用display:flex最好带上flex-direction: column/rowb.形变的时候用flex-shrink: 0试试c.当横向滚动使用scroll-view并用了display:flex属性,不定义高度的话,scroll-view内容就看不到了2.常用的css属性支持度 目前正式版还未发布,常用的伪类、var等还未支持,需要这些特性的需要再等等。 导致的问题包括图标字体的使用等,可以看看官方给出的解决方案或者使用svg图标 特性兼容进度:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/status.html 3.第三方组件问题 如果你的项目之前用到了第三方组件,可能在skyline模式下大量兼容报错,目前考虑换微信小程序官方的组件或者自己写自定义组件 4.项目发布后还是webview框架? 项目提交发布后还需要做全量skyline测试 https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/migration/#%E9%85%8D%E7%BD%AE-We-%E5%88%86%E6%9E%90-AB-%E5%AE%9E%E9%AA%8C 附上项目的小程序demo代码(非uniapp源码)仅供大家学习 https://github.com/shiheme/smartgallery
2023-04-27 - 共享云环境时代来了,解决fileID带来不兼容问题。
云开发收费了,不管你怎么选择,只要你还继续使用云开发,共享云环境的课题就不可避免。 我们知道,共享云环境下,fileID是无法使用的,怎么兼容,一个最简的方法如下: <wxs module="wxs"> module.exports = { getUrl: function (link) { if (link) { } else return '' if (link.substring(0, 5) == 'cloud') { } else return link var arr = link.split('/') arr[0] = 'https:' arr[2] = arr[2].split('.')[1] + '.tcb.qcloud.la' return arr.join('/') } } </wxs> <image src="{{wxs.getUrl(link)}}"></image> 可见:只要将原项目所有的fileID换成wxs.getUrl(link) 其他代码可以一分不动,也不需要用到wx.cloud.getTempFileURL 可以将wxs.getUrl放在lib.wxs里,任何wxml引用即可。
2022-10-28 - 新富文本组件
mp-html小程序富文本组件 news欢迎加入 QQ 交流群:699734691示例小程序添加获取组件包功能[图片] 功能介绍 支持在多个平台使用 支持丰富的标签(包括 table、video、svg 等) 支持丰富的事件效果(自动预览图片、链接处理等) 支持锚点跳转、长按复制等丰富功能 支持大部分 html 实体 丰富的插件(关键词搜索、内容编辑等) 效率高、容错性强且轻量化使用方法1. npm 方式 在项目根目录下执行 npm install mp-html 开发者工具中勾选 使用 npm 模块 并点击 工具 - 构建 npm 在需要使用页面的 json 文件中添加 { "usingComponents": { "mp-html": "mp-html" } } 在需要使用页面的 wxml 文件中添加 <mp-html content="{{html}}" /> 在需要使用页面的 js 文件中添加 Page({ onLoad() { this.setData({ html: 'Hello World!' }) } }) 2. 源码方式 将源码中的代码包(dist/mp-weixin)拷贝到 components 目录下,更名为 mp-html 在需要使用页面的 json 文件中添加 { "usingComponents": { "mp-html": "/components/mp-html/index" } } 后续步骤同上 获取github 链接:https://github.com/jin-yufeng/mp-html npm 链接:https://www.npmjs.com/package/mp-html 文档链接:https://jin-yufeng.gitee.io/mp-html
2022-03-04