幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

我们为何选择弃用cssjs?

  大家好,很高兴又见面了,我是前端进阶,由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
  CSSinjs
  emotion排名第二的维护者Sam所在公司弃用了cssinjs方案,引起了不小的讨论。1。概述精读
  原文很有条理,先从cssinjs优点说起,再转而谈到缺点,说明了cssinjs这个新事物拥有明显的优点与缺点;然后从性能问题作为切入点,说明自己所在的公司为什么不得不抛弃cssinjs;最后告诉读者目前自己的解决方案是cssmodules。
  编译时cssinjs方案
  之后还有一点儿延展性思考,即目前还诞生了一批编译时cssinjs方案,但面对性能问题时依然徒劳。让我们花点儿时间了解下作者的具体思路吧。2。cssinjs的优缺点
  cssinjs作为一个理念较新的开发思路,拥有如下几个明显的优缺点。2。1优点无全局样式冲突:就像js文件天然支持模块化的好处一样,原生css因为没有模块化能力,天然容易导致全局样式污染,如果不是特意用BEM方式命名,想要避免冲突就只能借助cssinjs了。(cssmodules也一样能做到)与js代码合在一起:天然融合进js代码方便模块化管理,使css可以与某个局部模块绑定。(cssmodules也一样能做到,只是必须单独拆一个样式文件)能将js变量应用到样式上:虽然css变量也能解决这个问题,但不如cssinjs那么直观,inlinestyle也能解决这个问题,但会产生大量重复的局部样式,且这个优势cssmodules做不到。2。2缺点cssinjs运行时解析的实现版本增加了运行时性能压力,尤其在React18调度机制模式下,存在无法解决的性能问题(运行时插入样式会导致React渲染暂停,浏览器解析一遍样式,渲染再继续,然后浏览器又解析一遍样式)。增加了包体积。相比原生或者cssmodules方案来说,增加了运行时框架代码8kb左右。让ReactDevTools结构变得复杂,因为cssinjs会包裹额外的React组件层用来实现样式插入。
  除了上述缺点外,cssinjs还有三点深度使用后才能察觉的坑:多个不同(甚至是相同)版本的cssinjs库同时加载时可能导致错误。笔者用styledcomponents就遇到了类似问题,甚至语法会产生不兼容的情况,虽然这些问题都可以被解决,但花费的额外时间需要计算一样,相比cssinjs得到的收益是否值得。样式插入优先级无法自定义:这就导致产生样式覆盖时,业务对样式覆盖的优先级无法产生稳定的预期。class优先级由header定义顺序决定,而非className的字符顺序决定,而header定义顺序又由资源加载与cssinjs插入执行时机决定,导致业务几乎不可能有稳定的样式覆盖顺序。这里产生的问题就是业务代码不断增多的!important定义。不同React版本的SSR,cssinjs需要适配不同的实现,这对框架作者不太友好。
  除了性能问题以外,其他问题都可以忍,但偏偏在性能问题上,cssinjs遇到了无解的场景。3。无解的性能问题
  cssinjs无解的性能问题
  第一条缺点提到的运行时解析,是cssinjs方案永远跨不过去的困境,即便对于编译时cssinjs方案来说,也免不了在渲染时做额外的逻辑执行拖慢渲染速度:functionApp(){return;就是这种代码导致了性能问题}
  原因是当React重渲染组件时,需要重新解析样式定义,并序列化className,当渲染非常频繁时会导致明显的性能瓶颈,而解决方法是把样式定义抽出来,但这样就损失了第三个优点,即无法读取js变量了:constmyCsscss({backgroundColor:blue,width:100,height:100,});
  不得不说React的渲染机制实在是太有问题了,如果换成SolidJS这个问题就好办了,因为运行时的样式代码仅会运行一次,组件重渲染也不会导致这段解析代码被重复执行,此时cssinjs在样式变化时再做一次精确样式更新,性能问题就可以被解决了。4。换成cssmodules
  cssmodules
  cssmodules同时支持优点一和二,而优点三可以通过一些特定语法糖绕过:通过:import:export伪类做css变量的导入导出,用webpackloader实现js中引用css变量,用cssvariable实现css引用js变量。
  所以当性能问题是绕不过去的话题,而cssmodules在性能最优的情况下,有一些曲线方案可以同时支持cssinjs的优点,也就能理解为什么作者要弃用cssinjs了。5。包体积真的变大了吗
  原文谈到的cssinjs增加了816kb其实是在强行堆缺点了,除非你的项目只有一行css定义。如果我们只考虑传输时的包体积与HTML中样式定义数量,而忽略运行时产生的性能负担,那么cssinjs在大型项目无疑是最优的。
  打包体积
  原因就是cssinjs样式是按需插入的,没有渲染的组件就不会插入样式。甚至渲染了的组件也不一定会插入样式,因为cssinjs可以对包含相同样式定义的场景做className合并,类似于webpack打包时,可以把不同模块公共代码抽到一个chunk里。6。编译时cssinjs方案是出路吗
  理论上是出路,但限制了cssinjs的灵活性。从vanillaextract等编译时cssinjs框架来看,确实解决了运行时cssinjs性能问题,但带来了更多语法限制,比如必须预先定义样式再使用:import{style}fromvanillaextractcssconstmyStylestyle({display:flex,paddingTop:3px})constApp()
  编译时cssinjs想要做到通用性,只能提供一个className,这样就不受任何框架和环境的限制了,但这样也限制了声明语法的灵活性,显然不可以用内联方式定义样式。
  而且这种编译时的方案本质上和cssmodules是一样的,背后都是定义了一些静态样式名,只是说这些样式问题以。sass定义还是。ts定义,如果用。ts定义,配合编译工具可以使代码原生import的更加舒服。
  所以使用了编译时cssinjs方案,本质上还是抛弃了运行时cssinjs,投向了变种的cssmodules阵营。7。总结
  cssinjs本身方向是对的,即把css与js融合,但太过灵活的运行时cssinjs方案遇到了几乎不可解的性能问题,编译时的cssinjs方案可能是更好的出路。
  cssinjs这个名字本身就表示它拥有injs的灵活性,而编译时cssinjs方案本质因为是cssmodule,所以不可避免拥有一些比较奇怪的限制,如果js里的代码不能像真的js一样灵活,可能还不如回到。scss或者。less的后缀更好理解一些。参考资料原文链接:https:github。comascodersweekly
  原文作者:黄子毅

后怕!幼童独自在家门口玩耍,一陌生男子过来询问你家大人呢有人吗?你家大人呢?你奶奶在家吗?近日,江苏徐州沛县,一陌生男子看到幼童独自在家门口玩耍。便走过去说话,家长从监控发现后,多次发声,男子才离开。离开时还在不停地张望。(来……女性变老的原因是什么?爱吃甜食排第2,榜首或是关键随着时间的流逝,岁月总会在人们的脸上留下一些痕迹,都说岁月是把杀猪刀,刀刀催人老,原本年轻的容貌也终将因为时间的推移变的愁眉不展,漂亮的美女也会变成别人口中的黄脸婆。爱乐养生……天目湖ampamplt旅游ampampgt股市记录生活晴彩亦然随意而动股海行路生活润色家记录分享旅途美好江苏天目湖旅游股份有限公司主营旅游景区规划建设的企业江苏天目湖旅游股份有……SpringBoot中如何优雅的使用多线程在SpringBoot应用中,经常会遇到在一个接口中,同时做事情1,事情2,事情3,如果同步执行的话,则本次接口时间取决于事情123执行时间之和;如果三件事同时执行,则本次接口……一文带你搞定TCP流量控制摘要理想的流量控制实际的流量控制窗口关闭糊涂窗口综合征理想的流量控制什么是流量控制?流量控制就是发送方不能无脑的给接收方发送数据,它需要根据接收方的处理能力来发送数……社交类端游,看千古风流如何利用自由交易推动玩家社交喜欢玩游戏的玩家们都有这样的感受,网络游戏的灵魂在于社交,相比起游戏本身,网游更像是一个社交平台,让来自天南地北的人汇聚在这里,互相交换彼此的故事。不像是单机游戏讲究流畅……王者体验服新版终结成就新T0战士,天生多比别人多一双抵抗鞋王者荣耀S26赛季预热已经开始,段位继承发生变化,王者变钻石,小段位比以往还要下沉一个阶段,装备也有可能会引入新成员贤者披风,增强法师近战能力,与此同时,召唤师技能终结也发生翻……别硬演异域美人,有人翩翩起舞一眼万年,有的还是把脸遮上吧异域美人在影视剧作品中占比虽不算高,但花容月貌配上高记忆度的异域装扮,多会成为令人入目难忘的别样风情。比如1987年上映的《海市蜃楼》中的加沙洛娃。这部改编自倪匡小……越南40柬埔寨!印尼41马来西亚!为了不碰泰国最后一轮真刺激在刚刚结束的东南亚锦标赛B组最后一轮的比赛里,越南和印尼两支韩国人执教的球队为了不在淘汰赛提前与东南亚老大泰国相遇真是拼尽了全力。最终申台龙执教的印尼在先丢一球的情况下连扳四球……北京徒步登山房山金祖山小环穿,九龙山登山步道,半景区半野路出行日期:2021年12月15日,星期三先上总结:门票:无停车:免费位置:北京房山周口店镇车厂村导航:金祖山总里程:15公里左右环线(预估的……53岁的伊能静,面对整容质疑大方承认又不是见不得人提秦昊的老婆伊能静,大家都会喊出那句:不老女神。而最近,不老女神伊能静在社交平台发布了一则动态,大方分享自己的保养秘诀。视频中的她一看就是刚洗完脸的状态,头上戴着一个发箍,素颜……伴仙言寺沙雕小神话什刹海泉眼,北京龙头井传说在北京的小伙伴们应该都知道刘伯温锁龙井,那个很有名了。但是不知道大家有没有听说过,在西城区还有一条龙头井街。说是街道吧,其实它也就比胡同稍微宽了那么一点点,并且是不通车的。这条……
冬天挖冬笋,小时候的记忆天一冷,心就雀跃起来。说起来,这习惯还是源于儿时挖冬笋的经历。如今,久居都市,双手已多年不沾泥土。但每到冬天,心里头还是蠢蠢欲动。冬笋的美味,不尝不知道。金玉白衣,……华为云Stack副总裁胡玉海曾说公司任正非最忙第二忙是工程师运营商财经网段昕妍文截止目前,华为云为政企客户提供的华为云Stack表现不错,已服务于全球150多个国家和地区4800个政企客户,同时在中国政务云、软件定义计算等多个行业……八省自驾(第37天)青海到底是个怎样的地方?今天是蒙晋陕川藏青新甘八省自驾的第37天,我现在在青海省的海西蒙古族藏族自治州的都兰县。今天,即将完成八省自驾的第六个省份青海省之旅。在8月15日的时候,从西藏那曲……1999直降1699元,6。67英寸屏高通骁龙870的RedRedmiK40S发布于今年3月的一款5G智能手机,现在价格降为最低价1699元,那这款手机性能又如何呢?手机处理器与续航这款手机的CPU是高通骁龙870八核处理器……黄帝内经四气调神大论个人理解,人应宇宙大气而生,人应在一年四季适应气候的变化养成相适应的生活习惯规律春三月,此谓发陈。天地俱生,万物以荣,夜卧早起,广步于庭,被发缓形,以使志生,生而勿杀,予……CBA三消息广东三外援已确定,吴前仅打九分钟,富兰克林砍30爱国篮,爱CBA,我是洛姐,小伙伴们看完记得点赞!上个赛季CBA联赛中的几支强队基本都是三外援阵容的配置,辽宁队签下的是梅奥、弗格以及泰勒,不过由于泰勒这名球员的竞技状态……产品涨价,云南铜业前三季净利超14亿元预增逾16810月11日晚间,中国有色金属龙头中铝集团旗下云南铜业股份有限公司(下称云南铜业,000878)发布前三季度业绩预增公告:归属于上市公司股东的净利润14亿元15。8亿元,同比增……听说支付宝被取消高新技术企业资格,真实情况是怎样的?近期,上海市高新技术企业认定指导小组公告了2022年第一批撤销高新技术企业资格的名单,包括上海数字证书认证中心有限公司、上海优也信息科技有限公司、支付宝(中国)网络科技有限公司……7拦0分2失误,效率负29!中国队主力遭遇滑铁卢,前国手李颖面对东道主荷兰女排,中国女排虽然3比2取胜,但是依然暴露了较多问题,其中最大的问题无疑是在拦网。不为人知的是,本场中国队2大主力副攻王媛媛和袁心玥,整场比赛加起来只通过拦网拿到……过往,与你相别,未来,与你相见我常常放纵自己的欲望,也宽容自己的过去,对于自我的要求,要么是坚持一段时间就放弃了,要么是三天打鱼两天晒网,就这么一次次去要求又一次次去违背,倏然之间人已过三十,一事无成。……环宝岛台湾骑行攻略环宝岛台湾骑行攻略(5年后的回忆,仅供参考)2016年元旦,我在台湾101大楼下,观看101大楼上燃放的跨年烟火,虽然时间不长,但给我留下了深刻的印象。我和夫人是南……MADAMEPIERRE泳装2021春夏在MADAMEPIERRE的瑞士工作室以可持续的方式精心手工制造。系列中只使用特别挑选的材料。从最初的笔触到生产,女性化、性感的套装和独特的纺织品设计都是在同一个房子里创造的。……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网