首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

CSS-in-JS,向Web组件化再迈一大步 | 洞见

CSS Modules - 模块化CSS,将CSS文件以模块形式引入到JavaScript里,基本上解决了全局污染、命名混乱、样式重用和冗余问题,但CSS有嵌套结构限制(只能一层),也无法方便在...styles打印出来如下图,定义了cssclass名字和生成唯一class名字对应关系。...( :hover)支持不好,会带来一些不方便,而且需要再记住一套attributes名称和值与真正css样式代码对应关系。...JSS 和上面两个框架类似,jss也是会定义styles对象,并附到component上,最后生成dom也是会有生成唯一class名称,并有对应样式,但样式并不是真正css语法,而是对象属性和值...,也让学习曲线更加陡了 对前端框架确实有些依赖性,更适合于组件化框架,React等 Debug时候需要花更多功夫才能找到对应样式代码 覆盖第三方插件样式时会有权重不够问题 Lint工具对于JavaScript

99880

React组件设计实践总结03 - 样式管理

SCSS 语法 5. JS 带来动态性 6. 绑定组件全局样式 7. Theme 机制及 Theme 对象设计 8. 提升开发体验 9....解决方向: 由工具来转换或创建名 5️⃣ 常量共享 常规 CSS 很难做到在样式和 JS 之间共享变量, 例如自定义主题色, 通常通过内联样式来部分实现这种需求 解决方向: CSS-in-js...通过 props 和全局 theme 来动态控制样式 提供了一些 CSS 预处理器语法 主题机制 支持 react-native....点击这里了解更多, 另外在这里了解如何在 Typescript 声明 theme 类型 8...., 例如:global, :local, :export, compose: CSS module 同样也有外部样式覆盖问题, 所以需要通过其他手段对关键节点添加其他属性( data-name).

7.1K20

你可能不需要 CSS 框架

CSS 特性,变量、作用域、嵌套和值函数,意味着像 SCSS 或 JS-to-CSS 这样语言所提供价值无法抵消它们带来复杂性。...然而,新 CSS 特性已经帮助弥补了这一差距,减少了对其他解决方案需求。 主题化 开发者现在可以使用 CSS 自定义属性(变量)向 CSS 添加主题。...此外,许多流行框架, React,开始支持流式 HTTP 响应,这使得运行时编译样式变得非常复杂。 使用语义化 CSS 使用语义名(基于语义命名可重用)来组织常用样式。...原子 CSS 名(基于视觉功能命名单一目的名, Tailwind CSS 所推广那样)强制开发者通过创建细粒度 UI 组件或部分来减少标记重复。...在一开始,它们作用域可能是有限,因此可以使用或 @scope 编写具有狭窄作用域样式。随着时间推移,作用域中常用模式可能会被提取到全局样式,所以你需要经常重构你 CSS!

10310

css-in-js 探讨

我们只能有条件地应用样式集 - 如果按钮是主要,我们可能会应用“primary”并在单独CSS文件定义它样式以应用它在屏幕上样式。...可能会想到内联样式来解决此问题,但它们不支持伪,属性选择器,媒体查询等。 可重用性 重用规则集,媒体查询等是我最近很少看到一个主题,因为它已经被Sass和Less等预处理器解决了。...CSS-in-JS库通过在插入标签在运行时创建样式。 使用这个概念第一个库是JSS。...CSS-in-JS库具有许多高级功能,主题,供应商前缀甚至内联关键CSS,这使得完全停止编写CSS文件变得容易。 此时,您可以开始了解为什么CSS-in-JS成为一个诱人概念。...Linaria目标是通过内置函数(作用域,嵌套和供应商前缀)来模仿CSS-in-JS库API,样式组件。

5.4K20

「前端工程四部曲」模块化前世今生(下)

「优点:」 BEM 优点在于所产生 CSS 名都只使用一个类别选择器,可以避免传统做法由于多个类别选择器嵌套带来复杂属性级联问题。...代码清单命名规则好处在于每个 CSS 名都很简单明了,而且层次关系可以与 DOM 节点树型结构相对应。... 如上,默认主题以及 dark 主题集于一身。...其次也解决了 CSS 嵌套过深问题,正是因为全局命名冲突问题,我们不得已就要为 class 加上一些独立命名空间,书写时也会多层嵌套。...,它们实现功能除了一些最基本的如 CSS 局部作用域之外还有一些独有功能,就比如下面这些: 全局选择器 基于状态样式 客户端与服务器端渲染 缓存 内置自动前缀 媒体查询 选择器嵌套 内置动画支持 其他插件和软件包

70320

科普 | 一文详解 CSS-in-JS

W3C 会定期发布这些 snapshots, 2007, 2010, 2015 或 2017。 目前为止,还没有 level 超过 3 模块被标准化,未来应该会有所改变。...市面上有很多 CSS 预处理器可供选择,且绝大多数 CSS 预处理器会增加一些原生 CSS 不具备特性,例如代码混合,嵌套选择器,继承选择器等。...当 JSS 将 JSON 表示形式编译为 CSS 时,默认情况下会生成唯一名。 动态浏览器私有化前缀,使用 CSS-in-JS 可以避免臃肿 CSS 代码。...CSS-in-JS 单元化测试。 TypeScript 支持。 减少项目编译依赖,纯 JS 或 TS 项目。 动态变化主题和变量。...,在组件扩展、主题自定义和状态同步有着很大优势,也期望在后续社区中有更多优秀实践可以参考。

3K20

迟到WebRebuild年会手札~

今年Webrebuild主题是七年,寓意是《网站重构》这本书面世七年了~ 整个活动详情就啰嗦了,因为有一位童鞋写了一篇很详细记录,后面会附上地址。 什么是WebRebuild?...这对于地图服务很有用,拿高德导航应用为例,地图导航地图文件升级较频繁,但是iOS不允许使用升级包,每次升级必须暗重新安装新版完成版,导致使用高德导航用户,如果想升级地图,必须重新再下载一次将近...2G文件(appstore下载2G东西,亚历山大) @孙极 JSS:一个智能CSS,同类软件有LESS,SAS。...JSS支持函数,模块复用等,计划有桌面版、javascript版和PHP版,通过重新对JSS编译,生成浏览器可以正确识别的CSS,来简化工程师写CSS时繁琐工作,化繁为简一个好东东,现在javascript...版本已经推出,桌面版仍在开发

69100

聊聊 React 组件库技术选型与设计

但是,它缺点在于为了支持从外部覆盖内部元素样式,需要给内部元素加上 className,同时不支持 postcss,取而代之是特定 CSS-in-JS 库自己 plugin 生态,少部分库(...这样,在组件库和业务开发过程,研发都不需要关心 icon 镜像问题,减少沟通和验收成本。 手势适配 一些组件,进度条组件,在传统 LTR 下是从左向右滑动,但是在 RTL 下则是从右向左滑动。...全局化配置 对于 direction(LTR/RTL)、 prefixCls(名前缀)等一些全局配置,我们可以使用 React Context 来注入,例如应用根节点外面包裹一个 ConfigProvider...在 Metrial UI 还抽象了一个 Box 组件,所有的组件都基于 Box 组件编写,实现全局布局和样式控制。...同时我们不能局限于组件库本身,而要考虑到开发、测试过程效率,业务接入难易,以及是否能良好地应对业务变化等,从更全局视角去思考。

1.9K10

6个常用React组件库

你可以选择直接使用 Bulma ,也可以使用包装库,例如 react-bulma-components。...过去,你只能通过编写 JSS 来自定义 MaterialUI 样式,但值得庆幸是,现在可以使用 styled-components 和 Emotion 覆盖样式。...fork: https://github.com/fomantic/Fomantic-UI 荣誉奖 Reach UI ReachUI 是一个底层组件库,允许开发人员在其设计系统构建可访问 React...它是一个功能强大组件库,没有自带主题,但可以轻松改变主题。关于它实践示例,请参见其演示。...我还特意省略了 CSS-in-JS( styled-components 和 Emotion)以及实用工具 CSS 系统( Tailwind),因为它们不是明确“React 组件库”,而是用来制作组件工具

2.1K10

Flutter完整开发实战详解(五、 深入探索)

是的,Flutter 使用是 Dart 支持 Mixin ,而 Mixin 能够更好解决多继承容易出现问题,:方法优先顺序混乱、参数冲突、结构变得复杂化等等。...所以结论上简单来说,就是相同方法被覆盖了,并且 with 后面的会覆盖前面的。...这时候我们就要看 Flutter “胶水”: WidgetsFlutterBinding 。...二、InheritedWidget InheritedWidget 是一个抽象,在 Flutter 扮演者十分重要角色,或者你并未直接使用过它,但是你肯定使用过和它相关封装。 ?...所以如下方这类代码:通常 焦点、主题色、多语言、用户信息 等都属于 App 内全局共享数据,他们都会通过 BuildContext(InheritedElement) 获取。

1.8K30

如何写出一套可维护CSS库?

(分离结构和主题)减少对 HTML 结构依赖 Separate container and content(分离容器和内容)增加样式复用性 在 OOCSS 观念,强调重复使用 class,而应该避免使用...与OOCSS抽取修饰方式不同,SMACSS是抽取更高级别的样式,得到更强复用性,隐藏某个元素写法: .is-hidden{ display: none; } Theme Rules...书写方式解耦化,不会造成命名空间污染,:.xxx ul li 写法带来潜在嵌套风险。命名方式化扁平,避免样式层级过多而导致解析效率降低,渲染开销变大。...METACSS 一些写在全局通用方法,是SMACSS通用方法思想分支,一般以css属性、Emmet css缩写或功能来命名,通常以一个css属性为一个单位 表示属性: .df { display...,通过在html代码添加名来添加属性,不必再去找相对应选择器css代码来修改样式。

69930

功能强大JavaScript引擎--SpiderMonkey

本文简要介绍了 SpiderMonkey基本结构,并讲解了如何在自己应用程序中使用该引擎,最后给出了一个样例程序。该程序能够解释执行JavaScript脚本完成简单脚本功能。...可以将JavaScript与嵌入WEB大多数对象事件(鼠标点击、移动等)相关联,然后用自己方式处理这些事件。...有些类型函数,象安全控制,提供可选择特征。 从概念上讲,JS引擎是你系统上一个共享资源。通过将引擎API调用嵌入到应用程序(包含jsapi.h文件),你可以请求JS引擎进行操作。...当初始化标准JS时,你自动地得到一个全局对象: builtins = JS_InitStandardClasses(cx, glob); 这个全局对象创建了一些基本、被其它对象所继承性质和方法。...通常,全局对象居留在幕后,为应用程序创建和使用其它JS对象及全局变量提供缺省范围。在创建自己对象前,你必须初始化全局对象。函数对象使得对象具有和调用构造函数功能。

1.9K50

精读《请停止 css-in-js 行为》

: blue; } .title { // 复用 className 样式 composes: className; color: red; } react-css-modules 值得一提是...该部分由他们观点总结而出。 CSS 本身有不少缺陷,书写繁琐(不支持嵌套)、样式易冲突(没有作用域概念)、缺少变量(不便于一键换主题)等不一而足。...css-in-js 生成 className 通常是不稳定随机串,这就给外部想灵活覆盖样式增加了困难。...层级嵌套,只使用一个 className 就能把所有样式定义好。...反过来,如果变量存储在 js ,就像草案一样轻巧,你只要换一种方式实现 css 就行了。 总结 在众多解决方案,没有绝对优劣。还是要结合自己场景来决定。

1.9K50

团队技术文档构建利器vuepress上手实践

参数配置 vuepress 提供了两配置: 配置文件, .vuepress/config.js,需要导出一个js对象,一般用于进行全局配置 YAML front matter,配置在 md 文件头部...,其后内容才作为文档内容被渲染,一般用于针对当前文档配置 3.1 主题配置 新建完后用户默认看到页面是非常简陋,只有一个包含搜索框 head,vuepress 强大之处在于可以灵活地进行主题配置...index.styl 作为全局样式文件生成在最终css文件结尾,具有比默认样式更高优先级,palette.styl 用于重写默认样式常量,或者设置新 stylus 颜色常量,: $accentColor...CSS 名,可以在该页面的 YAML front matter 声明一个 pageClass: --- pageClass: custom-page-class --- index.styl 可以使用对应名...在 Markdown 中使用 Vue .vuepress/components 所有 *.vue 文件都会自动注册为全局异步组件,: . └─ .vuepress └─ components

1.3K20

今年前端面试太难了,记录一下自己面试题

从上手程度而言,组件更容易上手,从未来趋势上看,由于React Hooks 推出,函数组件成了社区未来主推方案。组件在未来时间切片与并发模式,由于生命周期带来复杂度,并不易于优化。...Reactprops.children和React.Children区别在React,当涉及组件嵌套,在父组件中使用props.children把所有子组件显示出来。...1. setState是同步执行setState是同步执行,但是state并不一定会同步更新2. setState在React生命周期和合成事件批量覆盖执行在React生命周期钩子和合成事件,...: 找到这两个兄弟节点共同⽗节点,结合上⾯两种⽅式由⽗节点转发信息进⾏通信跨层级通信: Context 设计⽬是为了共享那些对于⼀个组件树⽽⾔是“全局数据,例如当前认证⽤户、主题或⾸选语⾔,对于跨越多层全局数据通过...这种⼯具会维护⼀个全局状态⼼Store,并根据不同事件产⽣新状态非嵌套关系组件通信方式?

3.7K30

4种解决json日期格式问题办法

开发中有时候需要从服务器端返回json格式数据,在后台代码如果有DateTime类型数据使用系统自带工具序列化后将得到一个很长数字表示日期数据,如下所示: //设置服务器响应结果为纯文本格式...非数字字符以替换方式删除,到到一个数字1391141532000,然后实例化一个Date对象,将1391141532000毫秒作为参数,得到一个javascript日期对象,代码如下: <!.../\D/igm达到替换所有非数字目的,\D表示非数字,igm是参数,分别表示忽视(ignore)大小写;多次、全局(global)替换;多行替换(multi-line);有一些时候还会出现+86情况...子类,ExecuteResult方法: 从上面的代码不难看出微软JsonResult仍然是使用了JavaScriptSerializer,所以返回结果与方法一未处理时是一样,要解决这个问题我们可以派生出一个新...,但需要注意日期格式平时Format是有区别的,这里表示时间H如果大写表示24小时制,如果小写表示12小时制。

1.9K10

『React Navigation 3x系列教程』createBottomTabNavigator开发指南

BottomTabNavigatorConfig(可选):配置导航器路由(:默认首屏,navigationOptions,paths等)样式(,转场模式mode、头部模式等)。...path(可选):用来设置支持schema跳转时使用,具体使用会在下文有关Schema章节中讲到; navigationOptions(可选):用以配置全局屏幕导航选项:title、headerRight...paths: 提供routeName到path config映射,它覆盖routeConfigs设置路径。 backBehavior: 后退按钮是否会导致标签切换到初始tab?...动态配置createBottomTabNavigator样式:通过官方文档是无法实现动态改变TabNavigator样式,比如:修改显示文字,修改字体颜色,修改图标等等; 多层嵌套后路由个性化定制...TabNavigator时候; 初始化传参:如何在设置页面的时候传递参数呢?

7.1K30
领券