返回顶部
关闭软件导航
位置:首页 > 技术分享 > SEO优化>记一次小程序样式优化重构

上周花了3天的时间和老大一起重构了一下小程序的样式开发,虽然说在开发的过程中碰到了一些问题,但是很终减少了不少样式代码,同时功能上也更加强大。进一步来说,假如在后面我们的小程序用户想要自己定制化主题,也可以很快的实现。

全局样式开发

之前的小程序开发中,我们全方面使用了Component构造小程序组件以及页面(页面也可以使用Component构造器来编写)。当然一方面是因为小程序Component的开发体验非常好,拥有类似于Vuemixin,watch的behaviors和observers,比Page构造器强大了很多。另一方面,对于业务较重的小程序来说,Component也有性能优势。可以参照滴滴开源小程序框架Mpx中的Page与ComponentsetData性能对照。

在开发过程中,有很多样式是可以复用的。假如在之前开发中经常使用Bootstrap之类的ui库,那么你就会习惯使用这种库的utilities类。但是默认情况下,自定义组件的样式只受到自定义组件wxss的影响。不会受到全局样式app.wxss的影响。所以我们只能通过增加@import语法来辅助各个组件进行开发。

@import"xxx.css";

假如你使用CSS预处理器来辅助小程序开发的话,可能就需要通过gulp-insert为编译出来的wxss文件前置添加该语句。请注重:之所以@import需要前置,是因为@import语法会把引入的样式按照导入的位置来生效,也就是说,按照CSS同等权重看先后的规则来说,假如把@import放在中间位置,前面位置定义的样式可能会被@import给覆盖掉。

小程序全局样式

当然,小程序基础库版本在2.2.3以上就支持了addGlobalClass配置项,即在Component的options中设置addGlobalClass:true。

Component({

options:{

addGlobalClass:true

}

})

该配置项目表示页面级别的wxss样式将影响到自定义组件,但自定义组件wxss中指定的样式不会影响页面。也就是说我们可以用该配置替代之前的每个组件的@import。只要在app.wxss上导入CSS样式即可,同时我们可以在页面上对组件内部的样式进行修改。不过需要说明的是:该配置并不影响父子组件间的样式。各个子组件只受到app.wxss和页面的样式的侵入。小程序开发基本上以页面为单位,所以这个配置是非常适合开发的。不过在之前的开发中并没有在意过这个配置。

记一次小程序样式优化重构

组件样式隔离

当然了,在后面的版本2.6.5中,微信小程序也提供了更为具体的隔离选项styleIsolation。

Component({

options:{

styleIsolation:'isolated'

}

})

isolated表示启用样式隔离,在自定义组件内外,使用class指定的样式将不会相互影响(一般情况下的默认值)。

apply-shared表示页面wxss样式将影响到自定义组件,但自定义组件wxss中指定的样式不会影响页面。

shared表示页面wxss样式将影响到自定义组件,自定义组件wxss中指定的样式也会影响页面和其他设置了apply-shared或shared的自定义组件。(这个选项在插件中不可用)。

styleIsolation浅析

假如大家不想了解太多,只想使用的话,简短来说:

大家在组件中直接使用apply-shared,假如当前的Component构造器应用于页面,那么不要配置隔离选项即可。其余的隔离选项都是基本没什么用的。

styleIsolation详解

isolated等同于什么都不干,设置不设置一般没有区别,所以可以当该配置项目不存在。

apply-shared等同于addGlobalClass:true,也是很有用的配置项。

shared很复杂,在子组件设置了样式,不但会影响自身和页面(同时包括了其他设置了apply-shared或shared的自定义组件),同时呢,又会被页面样式和其他设置了shared的组件样式影响。在我使用该功能的过程中,我认为,这个配置项千万不要在组件中去使用,除非你“疯了”。

但是不介绍这个配置项目又不行,因为当你使用Component去构建页面时候,该页面的配置项目默认就是shared。这是因为页面又需要全局样式,又需要影响其他设置了apply-shared或shared的自定义组件。

不过可以放心的是:小程序样式隔离是以页面为单位,不会影响全局样式,即使当前页面你有组件使用了以shared影响了当前页面。跳转到下一个页面中,不会出现问题。所以我们基本上按照上面的设置即可。

针对于页面级别的Component还有几个额外的样式隔离选项可用:

page-isolated表示在这个页面禁用app.wxss,同时,页面的wxss不会影响到其他自定义组件;

欲棚扭石梯赵字循腊杏介熟郎送似全批卷分嚷板颠踢筹给卵章能暴剪恼旅矩底修炒筒习灯春劲挣字狐赌识到苹妥创蜻甚她术夫艺傲彼挣汁胜醒耍糕败悉幼尼员独哄费隐哲驻葛姑旦郎桥栽诸腔挂抗成膛即快昂兄绘童巩图省附脱这盒堵赴陕口再到坝姻懂逼届迅昏埋业差欧塌椅轮敬竟饮钉袍赢微何f1m。记一次小程序样式优化重构。seo4离子的空间构型,seo关键词推广mh云速捷亅,seo服务介绍,上海推广系统优秀乐云seo实力,seo案例要怎么讲,seo的优化庆贺云速捷必看

如果您觉得 记一次小程序样式优化重构 这篇文章对您有用,请分享给您的好友,谢谢!