小程序学习之组件模版中要注意的知识点

slot节点

组件的写法和页面的写法相同,但是有个slot节点,需要我们注意。
slot是啥呢?

  1. 我觉得它像是一个坑,(注意啊,不是让你往进跳的那种坑),在这个坑里,引用它的父组件可以按自己的需要填入一些东西。这给了组件一定的灵活性,即使是引用的模版,也可以自定义一些内容。
  2. 在组件中引用组件,节点名也是需要在json文件中的componentGenerics字段中声明为true。
  3. 默认一个页面中只有一个slots。想使用多个需要在js中声明options下的multipleSlots为true。然后就可以声明多个slot,用name来区分他们。当多个slot被声明后,在使用时需要在标签上的slot属性值指定为对应的slot的name。

    组件中的样式

    感觉组件可以和正常页面一样去写,但是实际情况却是相反的。如果去仔细查看文档,你就会发现这里面有很多的问题,写样式也是比较的束手束脚。
  4. 组件和引用组件的页面不能使用id选择器(#a)、属性选择器([a])和标签名选择器,请改用class选择器。
    这是啥意思呢?第一,要是你平时写h5有写id选择器的习惯,那完了,一个个的深坑正在等着你;更惨的是,你还不能使用属性选择器,标签选择器;这让那些习惯用属性来标示当前dom特殊样式的人,心里一万只羊驼飞过。
  5. 使用后代元素选择器,会有意想不到的bug出现。
  6. 子元素选择器(.a>.b)只能用于 view 组件与其子节点之间,用于其他组件可能导致非预期的情况。
    这句话我理解了好长一段时间,现在的理解是,只有在View标签下,你才能使用子元素选择器,而且View下只能是微信爸爸定义好的标签,不能用组件。
  7. 如果你做到了以上几点,那么组件内的样式与组件外是隔绝的。关键问题是你得做到以上几点。

    在组件样式隔绝的情况下,如何引用外部样式

  8. 只是引入特定外部样式
    如果你的目的不是引入整个样式文件,只是引入特定的外部样式,可以在Components中的externalClasses数组中添加特定的class名,然后你就可以从容的引用了。直接在标签名上写一个属性名,然后你就可以哪里想用就在哪里用了。
  9. 去写组件一开始不让你用的那些选择器,包括id选择器,标签选择器,属性选择器。还有后代选择器,然后你就可以放心的用全局样式了。不过这个微信爸爸不推荐,而且呢,效果不是很好,只是一个取巧的办法,还是希望你少用,毕竟微信爸爸也说了,会有意想不到的后果。
  10. 在Components的构造器中options标签下,加入配置addGlobalClass为true,然后,引用你的页面的样式,你可以用,全局app.wxss样式,你也可以用。这样呢,有个好处,你觉得组件内那个样式在某个地方不顺眼,你可以在哪里将它给覆盖掉,而不用跑到组件里去重写。同时,你也可能一不小心就改了样式哦。