城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

一起聊聊WebComponents的困境?

6月10日 牵手手投稿
  大家好,很高兴又见面了,我是web前端分享,由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!1引言
  最近读了一篇抵制cssinjs的文章,虽然大部分观点都有道理,但部分存在可商榷之处,让我们分析一下这篇文章,了解css还做了哪些努力,以及cssinjs会如何发展。2内容概要2。1结构行为vs样式
  作者认为,模块化jsx让html结构与行为耦合在一起是很有价值的,然而样式却不应该与模块耦合起来,因为样式是一种全局行为。许多时候需要对网站进行全局的设计,将样式分散到模块中会导致更多的理解成本。2。2松耦合与紧耦合
  将样式与模块松耦合,系统会获得更大的自由度与拓展性。如果样式与结构松耦合,一套看似相似的的元素,可能拥有完全不同的底层结构。然而交互必须与结构紧耦合,因为交互依赖于结构。2。3视觉一致性问题
  局部样式会阻碍视觉一致性,只有全局化样式才能保证视觉一致性。2。4代码复用问题
  如果每个组件维护自己的样式,那么会存在许多样式代码复制粘贴的问题,复制粘贴的代码可维护性极低。3精读
  无论是cssinjs还是css预编译的尝试,各自都具有强大优点,本文对cssinjs提出的质疑我认为是欠妥当的,下面谈谈cssinjs如何解决作者提出的问题,以及简单介绍OOCSS,SMACSS,BEM,ITCSS,和ECSS的思路。3。1cssinjs依然具备视觉一致性
  文中提出,网站样式要从全局考虑,模块化样式行为的优点是解决了样式冲突问题,但因此也削弱了对全局样式的把控。
  开发单个组件的样式分为两种情况,分别是明确风格的组件与样式独立的组件,在样式独立组件中,由于不确定会被哪些主题的网站所引用,因此无论是全局css还是局部css,都无法控制样式。在明确风格的情况下,可以先把此风格的基色确定下来,无论是抽成sass变量还是js变量,都具有可复用性。
  全局css的开发,适合自上而下控制,组件通过定义class而不需要关心具体样式,通过全局class统一调控整体风格。而cssinjs是自下而上的,但需要预先抽出整体风格的样式模块,其效果与全局css是等价的。
  全局css控制风格:style。container{}。listitem{}。submitbutton{}style
  cssinjs风格:constCommonContainerstyled。pconstCommonListItemstyled。pconstCommonSubmitButtoncssexportconstContainerstyled(CommonContainer)exportconstListItemstyled(CommonListItem)exportconstCommonSubmitButtonstyled。p{CommonSubmitButton}
  而cssinjs运行时的样式解析,让我们更轻易的切换主题。比如我们抽出一个公共样式包,业务代码中的色值都从此样式包中引用,那么在不同的环境下,公共样式包可能通过所在宿主环境的判断,返回给业务代码不同的色值,甚至与宿主环境配合,从宿主环境拿到注入的颜色,实现一套代码在运行时轻松换肤。3。2cssinjs仍具备代码复用性
  文中观点提出,cssinjs这种局部样式行为,会导致公共样式、方法难以复用,导致各个模块参杂着大量重复代码。因为sass通过定义全局变量、mixins方法让样式更具有复用性。
  我觉得这是一种误解,在cssinjs模式中,通过全局合理的设计,使用js文件存放颜色变量、公共方法、可能会复用的css代码块,其复用能力远大于sass。3。3OOCSS
  OOCSS成为css的面向对象加强版,每个class只处理一件事:。size{width:25;}。bgBlue{background:blue}。gbd2{margin:0010}
  网易NEC就大量使用了这种思想。
  这样的好处在于避免了class之间的冗余,让我们更容易创建可复用的class,也不会在命名上纠结。
  然而,先不说oocss带来的巨大零散class导致的维护成本,以及修改class导致的巨大风险,class的本意是语义化,如果让class使用一堆对象描述堆砌,我们将很难定位一个元素,也很难描述这个元素的含义。3。4SMACSS为css分类
  SMACSS认为css有5个类别:Base基础样式Layout布局样式Module模块样式State状态样式Theme主题样式
  我们通过这5种类别来拼凑出完整的class,我感觉就是对OOCSS的进一步规范和约束。命名规则
  对这5种类别,在命名时要加上对应前缀,分别是:Base属于基础元素,比如pp,不需要命名Layout使用。l或。layout前缀Module使用模块名命名,比如文章区块就叫。articleState使用。is前缀,比如。isshowTheme使用。theme前缀
  我觉得这样在语义化的基础上,拆分了状态、主题、布局,着实增强了css可读性。最小化适配深度
  尽可能减少适配层级,虽然增加适配层级会减少冲突发生率,但是会增加额外的阅读负担,以及一些bug(旧版ie层级超过255导致样式失效)。
  像cssmodules这种解决方案恰恰反其道而行之,通过层级避免冲突,通过预编译解决阅读负担,然而在没有预编译的情况下,最小化适配深度原则依然是最有效的。3。5BEM
  BEM规范更像是SMACSS分类的加强版,通过element表述后代,modifier表述状态,比如:。article{}。articlelabel{}label元素。articlelabelselected{}label元素处于被选中状态3。6ITCSS
  类似SMACSS对css元素进行了分层:
  Settings与预处理器一起使用,包含颜色、字体等定义Tools工具与方法,比如mixins,Settings与Tools都不会产生任何css代码,仅仅是辅助函数与变量Generic通用层,比如resethtml、body的样式Elements对通用元素的样式重置,比如app等元素的样式重置Objects类似OOCSS中的对象,描述一些常用的基础状态Components对组件样式的定义,一个UI元素基本由Objects与Components组成Utilities工具类,比如。hidden
  ITCSS的分层是非常有借鉴意义的,即便在cssinjs设计中,也可以参考此模式定义结构。3。7ECSS
  ECSS的规范是这样的:。nspComponentChildNodevariantnsp一个尽量简短的命名空间Component文件名ChildNode子元素名variant额外内容
  例子:imgclasstlMediaObjectMediasrcc2021imgdataimg。jpgdatasrcimgq01。71396。combl3h5d63e6b44181af3d。jpgaltUserBF14minutesago
  更多细节可以看此PPT4总结
  虽然我认为这篇文章提出的cssinjs缺点大部分存在漏洞,但它警示了我们,css设计的初衷是全局化控制样式,即便产生了样式冲突、混乱的问题,但我们仍要记住,在模块化开发的今天,仍要保持网站风格的整体性,即便使用了cssinjs的开发方式。
  虽然作者呼吁我们不要只顾着cssinjs,要放眼看看OOCSS,SMACSS,BEM,ITCSS,和ECSS等基于原生css的解决方案,但我觉得把这些思想运用到cssinjs是个不错的选择:p参考资料
  原文链接:https:github。comascodersweeklyblobmasterE5898DE6B2BFE68A80E69CAF27。E7B2BEE8AFBBE3808Acssinjs20E69D80E9B8A1E794A8E7899BE58880E3808B。md
投诉 评论 转载

分手后的徐璐颜值高身材火辣!她的私服系列也很让人种草大家晚上好,我是春春。来看看分手后的徐L,这两年奋起搞事业,资源是越来越好。偶尔也会忙里偷闲,给自己放放假享受生活。有钱有闲还有颜,身材火辣、衣品同样也可圈可点。这……一起聊聊WebComponents的困境?大家好,很高兴又见面了,我是web前端分享,由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!1引言最近读了一篇抵制cssi……乡村振兴,莫要忘了乡土味江文在社会经济高速发展的今天,人们的诉求日趋多元化,有的向往都市生活,有的酷爱田园风光;有安徽泗县拥有世界文化遗产隋唐大运河唯一活态遗址、中国泗州戏之乡、中国山芋之……盛衰造句用盛衰造句大全31。当他的审美目光越出西山之外的社会,面对盛衰无常、变动不居的现实,也不禁有沧海桑田之感。32。至今本渔业已面临危急存亡之秋,极需探讨其经营盛衰原因及永续经营之对策。……存款还是买房后中产理财从未如此艰辛焦虑小张是个在P2P平台投资受过伤的人。投了两年多P2P没踩雷,今年一时疏忽大意,雷了4家,10多万没了。如今再谈起这些,小张显得十分平静。因为公务员的工作目前很稳定,他似乎……明天的喜多善男世界上最倒霉的男人的梦幻天经典影评《明天的喜多善男世界上最倒霉的男人的梦幻11天》是一部由下山天麻生学三宅喜重执导,小日向文世松田龙平小西真奈美主演的一部剧情类型的电影,特精心从网络上整理的一些观众的影评,希望……俄罗斯仗打得越难看,想要独立的独联体就越多,联邦解体将重演?想要了解更多的历史知识,快来关注我吧!不知不觉,俄乌冲突已经打了10个月,乌克兰在欧美国家眼中俨然已经成了对抗独裁的英雄国度,泽连斯基在整个欧洲人眼中也成了民族英雄般的存……清朝唯一的皇太子居然喜欢男人历史上的断袖之癖源于汉哀帝和董贤,清朝有记载的断袖之癖是康熙皇帝的儿子胤礽。喜好男色,在现代比较常见,可是在古代确实是很丢脸的事情,二皇子胤礽也因此失去了他的太子之位,晚景凄凉……冰箱冷藏室结冰冰箱是我们常用的一种家用电器,而且了冰箱的故障的也是经常发生,的主要是在冷藏室或者是冷冻室的一般都是会结冰同,主要的疾病的主要是冷冻室内空气温度湿度的比较大,而且蒸发器的温度却……邯郸匍匐的故事【注音】hndnpf【成语故事】战国时期,赵国国都邯郸人走路姿势非常优美与潇洒,外地人很赞赏和羡慕。燕国寿陵一个少年,特别迷恋邯郸人走路的姿态,竟专门到邯郸学习,他非常用……火龙果炒饭荤素皆宜,少女心爆棚,缤纷配色保证小朋友都爱吃红心火龙果吃起来清爽多汁,擅长料理的大厨们早已将它列入料理食材之一。除了常见的火龙果汁外,还有加入馒头中制作粉色馒头,以及使用果皮制作的凉拌火龙果皮,今天这道火龙果炒饭是台湾近……来自越南的情况放开后,到底会怎么样?每种选择,都有代价。正解局出品大疫三年。现在,人们对疫情、疫情防控有很多不同的看法。今天,简单聊聊越南的疫情防控。越南疫情防控从封闭到放开,到底经……
宁德时代下半年一款低价格电池将量产,长续航,安全性高爆笑神评我被勒令在公司不准穿短裙,只有我!这是为什么啊?同样是嫦娥,把邱佩宁,颜丹晨,热巴放在一起,差距一目了然甜美梨花头烫发层次内扣温柔减龄徒手格斗腿法这种痣长的像樱桃,它是不是癌症发出的信号?发现自己孩子的班主任是我曾经的一位精神病患者,怎么办?城隍祭日成蟜长安君是怎么死的历史上的成蟜是怎样的一个人制氧机使用人群拉黑和删除的意义一样吗?月老配姻缘
中散源用户实验成果在Nature发表粽子焖一上午会坏吗珍惜我们友情母亲节我的仨娘紧急救援这种电影,只有林超贤能拍,也只有彭于晏能演绽放阳光笑脸我们青春无悔原生家庭的影响儿子很少回家,公公道德绑架儿媳应该孝敬公婆山东全面启动311岁人群新冠病毒疫苗接种我在大陆投资,是赏大陆饭吃,裁员30万迁厂的富士康想回来了啪啪啪时进不去怎么办啊bjd娃娃都有哪些牌子?热传聚热点网 清明时节的作文600字

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁