范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

一起聊聊WebComponents的困境?

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

朝鲜和缅甸的高速公路,你觉得哪个更宽?朝鲜和缅甸我都去过,两国经济都不发达,但公路很宽。朝鲜和缅甸,都和我国相邻,到这两个国家旅行,非常方便。到朝鲜旅行的时候,朝鲜的公路给我留下了很深的印象。朝鲜的公路非常宽敞。朝鲜的不按套路出牌!特斯拉ModelY大幅官降,这事跟飞凡R7也有关系?都说买特斯拉需要勇气,我之前对这句话没有啥体会,不过有网友用真实经历,生动地给我上了一课。一位特斯拉ModelY车主在网上分享了自己的遭遇,自己刚刚提的ModelY,到手只开了五天特殊时期,建议中老年人少吃牛奶鸡蛋,多吃4样,增强抵抗力冬天是休养生息储存能量的季节。冬天人们不喜欢外出,总喜欢在空调屋待着,尤其是中老年人,晒太阳少,缺乏钙质。随着年龄的增长,身体内的钙流量越来越少,很容易引起骨质疏松腿疼。为了避免钙民间故事小贩好心埋葬了美女,晚上梦到美女喊快跑,走小路清朝的时候,代州有一个叫刘源的小贩。为了生计,他常年在外奔波,经常十天半月不回家,留下美丽的妻子刘氏一个人在家。一个月前,刘源去涪城卖货。他的生意告一段落后,就没日没夜地赶回家,希外剧演员与珠江频道除夕特别节目的回忆杀,是谁的DNA动了?!说起珠江频道的门面招牌担当各位小伙伴们第一个映入脑海的想必便是外来媳妇本地郎!(后续简称外剧)据前线小编消息网上时常流传着广大小伙伴们的火热呼声我要看外剧!今天的外剧什么时候播!停商务部部分海外热门旅游目的地机票成交量显著上升,入境旅游的需求在逐步释放有分析称,中国旅游服务贸易将在2023年加快复苏。1月12日,商务部新闻发言人对此回应表示,长期以来,中国是全球最主要的入境旅游目的地和出境旅游客源国之一,为国际旅游业创造了巨大的TPFi6光口APTPLINK今日推出了新款AX3000双频千兆WiFi6无线面板式光口APTLNXAP3008GI2PD。据介绍,这款光口AP采用国标86型面板设计,可直接替换原有的网络面板,无需科普带你认识5G基站随着5G时代的到来,为了信号的稳定传输,为了覆盖面更广,5G基站作为5G规模组网的先行军,其建设至关重要。那么,5G时代的基站是如何建设的呢?下面就来给大家介绍一下。截至2022年OLED版MacBook要来了最快2024年发布如果大家留意近一年笔记本的屏幕,会发现采用OLED屏幕的产品越来越多。分析师郭明錤表示,苹果的MacBook产品线也会采用OLED屏幕,最早上市的时间是2024年。按照苹果发布Ma寒冬腊月出门,懒人的时髦感如何打造?今天,北京迎来2023年第一场初雪,出门拍照的心情很激动,但几分钟就耳通红,手冰凉,打寒颤。进入三九天,气温骤降,时髦人士只穿一件大衣显然不能抵御寒冷的天气。于是乎,开始用各种加绒OK!潮周报新年倒计时一周,时尚圈的大动作可真不少!AlexanderMcQueenAlexanderMcQueen亚历山大麦昆呈现2023兔年限定系列。该系列中各款包袋及小皮具均以寓意好运和喜庆的中国红为主色调,并将其与柔和象牙白
2022年1105名2022年17月新能源SUV销量排行榜完整版今年国内新能源乘用车市场销售火爆,据乘联会日前公布的数据显示,2022年17月国内新能源乘用车市场累计零售销量达到273。3万辆,同比大再说一遍,我们没有造车计划!我们没有造车计划。8月28日举行的第四届世界新能源汽车大会上,在发布面向汽车和移动出行领域的整体解决方案时,微软中国副总裁微软中国区企业商用事业部总经理袁以拓再次撇清了造车传闻,微9月10日起执行!核酸查验最新要求在今天(8日)举行的国务院联防联控机制新闻发布会上,国家卫生健康委疾控局副局长吴良有介绍,2022年中秋国庆假期临近,人员流动性增加,加大了疫情传播风险。为确保中秋国庆前后不发生本桐梓山地旅游渐成热点桐梓县因地处大娄山脉,年平均气温14。6,森林覆盖率高达60。8,空气质量优良率达98,是全国休闲农业与乡村旅游示范县全国县域旅游发展潜力示范县。近年来,桐梓县大力发展全域山地旅游2018年他在旅游时挖到一棵仙人掌,结果4个月后出价167万都不肯卖这世上真的是无奇不有,大家相信吗?2018年,美国一位青年在秘鲁旅游的时候,意外挖到一棵奇怪的仙人掌,结果过了4个月后,有人出价167万,他居然都不肯卖。这听起来是不是让人觉得有些华为启动鸿蒙3。0百机升级计划,分三批推送,快看你何时能喜提3。09月6日,华为Mate50系列四款新机正式发布,作为年度旗舰,Mate50系列不仅硬件全面升级,而且首发搭载全新的鸿蒙3。0HarmonyOS3系统。华为的存量机型众多,Harmo回看恒大集团的上市之路倒闭是必然,存在是侥幸在众多寻求从H股回到A股上市的房地产公司中,中国恒大集团(3333。HK,简称恒大)不是最早的一家,但却是其中规模最大的房企之一,也是态度最为坚决行动最落到实处的房企之一。恒大在资高端手机市场苹果无人能敌,vivoOPPO小米荣耀谁是老二?钉科技观察在华为受打压之前,中国高端手机市场呈现的是苹果华为双雄争霸的格局,三星虽然技术实力上不输于二者,但因为众所周知的原因导致在中国市场的表现不佳。随着华为手机份额的下滑,谁能小米12SUltra摄影初体验这很徕卡120毫米潜望式长焦镜头拍摄样片。徕卡水印可机内设置显示拍摄参数及拍摄时间等信息。黄渊摄徕卡就是徕卡,是赋予你绝佳摄影体验与追求生活格调的艺术品。正所谓量少质优,传承经典,拥有一台看街拍识包包9组LV穿搭示范你会选哪款包?LV的经典包款太多了,对于想入手LV包包的小仙女们来说,真的不知道要怎么选,如果想拥有一款辨识度高,好搭配,性价比还不错的包款,可以看看这9组LV穿搭吧!LVneverfull畅销早秋的第一身套装之前有盘点过孙允珠的夏日套裙,如今已是早秋,就要将粗花呢毛衫等加厚套装拿出来,既御寒又美观,换着穿不香嘛花呢套装小香风的套装一直深受市场喜爱,是简欧女装中最好卖的套装之一,花呢面料