首页
学习
活动
专区
圈层
工具
发布

重读vue2.0风格指南,我整理了这些关键规则

尽量使用私有属性/方法 在开发vue组件的时候,我们可以通过组件的 ref来调用组件对外提供的方法,但是一个组件内部有些方法是内部私有的,不应该被外部调用,但实际上js中并没有像其他语言一样有私有方法(...并返回一个对象 在说为什么组件的数据必须返回一个函数之前,我们先来了解一下js中的基本类型与引用类型。..., Function, RegExp, Date等等 引用类型的特点包括 引用类型的值保存在堆内存中,而引用保存到栈内存中 引用类型的值是按引用访问的 引用类型的值是可变的(在堆内存中直接修改) 引用类型上面可以挂载新的属性...假设我们现在开发了一个组件,组件上面的data是一个普通的对象,那么当我们实例化多个组件的时候,所有的实例将共享引用同一个数据对象,任何一个实例对数据的修改都会影响到其他实例。...为组件样式设置作用域 在前端发展日新月异的今天,所有的一切都在飞速的发展,前端项目规模越来越大,而css作为一个只有全局作用域的语言,样式冲突会带来很多麻烦。

89650

三分钟让你了解 vue 中的父子通讯

,可以拆分成一个个组件,一个个组件就是一个独立的整体,可以拥有自己的结构。...样式和行为. ---- vue 组件的封装与使用. 为什么要封装组件 复用。封装一次可以多次使用 方便维护和代码的整理. 使用步骤. 1....注意:组件的名字不能和现有的 html 标签名一致 在 vue 中存在多个组件样式名相同,从而产生出冲突的问题....原理 在 style 上加入 scoped 属性,就会在此组件的标签上加上一个随机生成的 data-v 开头的属性 而且必须是当前组件的元素或子元素的根元素才会有这个自定义属性 如果在 style 上加上...我们把这中现象叫做,vue 中的单项数据流 说明: 父组件传给子组件的是一个对象,子组件修改对象的属性,是不会报错的,对象是引用类型, 互相更新;但不能改变引用地址 props 的值不能重新赋值。

49210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么和 CSS-in-JS 说拜拜

    然后React渲染下一个组件,然后该组件发现了一个新的规则,再次发生。 引用 这有效地导致在React渲染时,每一帧都要针对所有DOM节点重新计算所有CSS规则。这是很慢的。...我正在使用Emotion与服务器端渲染和MUI/Mantine/(另一个Emotion驱动的组件库),它不能工作,因为......一个更有效的方法是把样式移到组件之外,这样序列化就会在模块加载时一次性发生,而不是在每次渲染时。...你可以得到CSS模块的局部范围的样式和Sass强大的构建时间功能,而且基本上没有运行时间成本。这就是为什么Sass模块将成为我们未来的通用样式解决方案。...以下是我在观察Compiled时看到的缺点: 样式仍然是在组件第一次挂载时插入的,这迫使浏览器在每个DOM节点上重新计算样式。(这个缺点已经在 "丑"一节中讨论过了)。

    2.7K20

    「译」如何编写 React 应用程序的样式

    实际上,我们经常会发现,如果设计得当,组件在应用程序的其他部分使用时几乎不需要或不需要进行调整。我们的应用程序需要一个组件来显示引用,我们将在用户等待数据加载时显示此引用。...每个人都在同样的创造性约束下运作,他们需要一个很好的论据来打破它。重用组件而不是样式我注意到,每次我需要重用一个类时,我实际上是在尝试重用一个组件。...当我将CSS重用为一个按钮时,我不会把它放在任何其他元素上,而是把它放在一个按钮上。输入字段、布局和我构建的任何自定义组件也是如此。我正在重用组件,而不是class。但这有什么不同呢?...为了理解为什么我如此欣赏这种方法,我们需要回顾一下在基于组件的库存在之前CSS是如何编写的。...我们应该有组件架构,而不是样式架构。我不希望这一章听起来像是造型是世界上最难的事情。糟糕的CSS会让你的页面看起来有点坏,它可能会激怒客户,或者在绝对最坏的情况下会给你一些钱。

    55610

    哈啰 Quark Design 正式开源,下一代跨技术栈前端组件库

    我们也可以简单的理解为,部分逻辑在之后进行执行然后被 render 到指定 id 的 Div 中的,那么为什么传统的组件为什么不能这么做呢?而非得 Web Components 呢?...这相当于为自定义组件提供了一个天然有效的保护伞。 Shadow DOM 实际上是一个独立的子 DOM Tree,通过有限的接口和外部发生作用。...比如一个相同样式的营销弹窗,可以做到: 同时运行在不同技术栈(Angular、Vue、React 等)的前端工程中 同时运行在不同版本的技术栈中,比如能同时运行在 Vue2.x、Vue3.x 中 Quark...比如一个相同样式的营销弹窗,可以做到: 同时运行在不同技术栈(Angular、Vue、React 等)的前端工程中 同时运行在不同版本的技术栈中,比如能同时运行在 Vue2.x、Vue3.x 中 CLI...适合场景:前端团队想发布一个独立的组件或 npm 包,让其他各类技术栈的工程使用,从而达到提效降本的目的。

    66020

    手撸一个前端天气卡片

    将medium类样式的卡片缩短,便衍生出了一个正方形的small样式小组件。...于是便在medium样式的基础上,加长了宽度,增加了空气质量、防晒建议等数据展示。而detail样式,纯粹是因为我对小米天气的趋势预报爱得深沉,想要在DW中复刻一个出来。 Ⅱ. 开发阶段 1....我需要保证卡片中的所有元素都能有条不紊地展现出来,我原本想要固定每一种样式的卡片宽度,这样能够确保卡片的布局总是完美的,但是会使天气卡片的泛用性大打折扣,其他使用DW的人并不会专门为了一个小组件而修改自己的布局方案...最常用的自适应方法是写媒体查询,但是我不能使用媒体查询,其他开发者在哪儿插入卡片、怎么插入卡片、卡片的父级元素是什么状态我都无从得知,我不能仅通过屏幕尺寸判断出天气卡片目前的状态。...我也不能通过判断卡片宽度就隐藏或显示某些元素,因为之后的版本DW会将数据展示的部分模块化,允许其他开发者自定义展示哪些数据,擅自修改展示的元素可能导致其他开发者的配置没法如预期那样展示出来。

    1.9K50

    Web Components系列(四) —— 认识 Shadow DOM

    [shadowdom.001] 前言 在初涉前端之时,我就一直在好奇一个问题,为什么像: 组件的方式存在,所展现出来的那些布局都是在组件内部定义好的,如果页面引用了这些元素标签,那它内部的布局都会渲染在页面上...查看默认组件的 Shadow DOM 有人可能疑惑,既然说文章开头列举的那些元素是组件,那为什么我在开发者工具中看到的结构是这样的: [image-20220209164432603] 有什么办法可以看到各个组件内部的...而 Shadow DOM 能在 Web Components 体系中占据重要的地位,是因为其具有良好的密封性,主要表现在: 隐藏标记、样式和行为; 保持代码隔离,保证页面的干净整洁,各组件内部代码互不影响...这就意味着,如果我们使用了 Shadow DOM,那就可以在它内部随意的发挥,而不必担心这些发挥会影响到页面的其他部分,变相地给了开发人员极大的自由。

    1.3K20

    哈啰 Quark Design 正式开源,下一代跨技术栈前端组件库

    大家好,我是若川。我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。...我们也可以简单的理解为,部分逻辑在之后进行执行然后被 render 到指定 id 的 Div 中的,那么为什么传统的组件为什么不能这么做呢?而非得 Web Components 呢?...这相当于为自定义组件提供了一个天然有效的保护伞。Shadow DOM 实际上是一个独立的子 DOM Tree,通过有限的接口和外部发生作用。...比如一个相同样式的营销弹窗,可以做到: 同时运行在不同技术栈(Angular、Vue、React等)的前端工程中 同时运行在不同版本的技术栈中,比如能同时运行在 Vue2.x、Vue3.x 中 CLI...适合场景:前端团队想发布一个独立的组件或npm包,让其他各类技术栈的工程使用,从而达到提效降本的目的。

    35220

    编写模块化CSS:命名空间

    在今天的这篇文章中,我想与大家分享一下为什么只用BEM还是不够的,以及如何使用命名空间来弥补一些不足。 为什么BEM不能满足我们 我上周给大家展示的例子很简单。...组件可以包含其他对象和组件 让我们回到我所说的关于布局的形式。 下是组件的完美示例。 ? 响应式排版的付款表单之前我提到过这段HTML: ? 我实际上省略了很多代码,使其在布局部分中看起来合理。...注意到了我混合了一个对象和组件类在.c-form__button里么? 这被称为BEM混合,它允许我使用组件的类来创建一个对象,而不影响原始按钮。...你能找出30种不同的组合也只是一个时间的问题。 下面是一个潜在的解决方案。 你可以分别创建.h1到.h6的样式来应用到你的HTML,而不是利用-样式,像这样: ?...我必须立即知道组件是否使用JavaScript。 我必须立即知道是否可以安全地编辑一个类而不会影响其他任何其他CSS。 我必须立即知道每个class是适合于什么,以防止大脑过载。

    2.9K70

    微信小程序自定义组件(Toast)

    微信官方的wx.showToast这个API用起来限制性太强,在正式项目上根本用不上,但是又没有其他组件或API可以替代,所以就自己通过网上大神的方法自己写了一个自定义的toast组件。...一,自定义组件 1.组件模版和样式 类似于页面,自定义组件拥有自己的 wxml 模版和 wxss 样式。组件模版的写法与页面模板相同。组件模版与组件数据结合后生成的节点树,将被插入到组件的引用位置上。...在组件模板中可以提供一个 节点,用于承载组件引用时提供的子节点。 ? image 组件对应 wxss 文件的样式,只对组件wxml内的节点生效。...编写组件样式时,需要注意以下几点: a.组件和引用组件的页面不能使用id选择器(#a)、属性选择器([a])和标签名选择器,请改用class选择器。 b....,让其他页面可以直接引用。

    3.1K30

    打造一套安全的UI组件库!

    然而,以Vue为代表的前端框架在“组件保护”上做的一塌糊涂:用户可以在不同的地方轻易修改别人的组件而没有任何限制和约束,一旦出了bug就没法精确定位责任人。...; 当然,所有安全都是相对的,在closed模式下挂载一个自定义的key来引用shadowRoot是一个稍微聪明点的实践,像下面这样在元素身上挂一个“_root”其他人应该猜不到(吧)。...这样在自定义元素身上挂一个用symbol值来引用的shadowRoot,只要symbol值不要暴露,元素就没办法找到这个引用,就像一个人没法伸手够到自己的后背一样难受(?)。...闭包+Symbol:完美组合 我一直认为秒杀面试官的诀窍是能够用自己独特的理解来定义任何一个名词,比如我对js闭包的定义是:闭包是一个语法糖,在函数嵌套定义的语法环境下,父函数的环境对象(变量对象)会挂到子函数的作用域链上...组件销毁有时候不够干净,因为组件有可能在使用期间留在其他线程上一些残迹,这些残迹并不会在组件销毁后也随之销毁。

    1.4K41

    微信小程序-零基础入门手册

    不能作为组件的时间回调函数 12.3.2 隔离性 13、自定义组件 13.1 自定义组件的创建和引用 13.1.1 组件的创建 13.1.2 组件的引用...组件的引用方式分为“局部引用”和“全局引用,顾名思义: 局部引用:组件只能在当前被引用的页面内使用 全局引用:组件可以在每个小程序页面中使用 13.1.2.1 局部引用 13.1.2.2...全局引用 13.1.3 组件和页面的区别 13.2 组件的样式 13.2.1 组件样式隔离 13.2.2 组件样式隔离注意点 这里是一个例子,我在组件中突兀的使用了...组件引用它时,它的属性、数据和方法会被合并到组件中 每个组件可以引用多个 behavior , behavior 也可以引用 behavior 。...原因如下: 当小程序从普通的分包页面启动时,需要首先下载主包 而独立分包不依赖主包即可运行,可以很大程度上提升分包页面的启动速度 注意: 一个小程序中可以有多个独立分包。

    49910

    ​08-微信小程序视图层

    importimport可以在该文件中使用目标文件定义的template,如:在 item.wxml 中定义了一个叫item的template:如:C import B,B import A,在C中可以使用B定义的template,在B中可以使用A定义的template,但是C不能使用A定义的template在较小的屏幕上不可避免的会有一些毛刺,请在开发时尽量避免这种情况。样式导入使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。...view 组件前边插入内容 全局样式与局部样式定义在 app.wxss中的样式为全局样式,作用于每一个页面。...WXS 的运行环境和其他 JavaScript 代码是隔离的,WXS 中不能调用其他 JavaScript 文件中定义的函数,也不能调用小程序提供的API。

    32610

    BuildAdmin02:前端架构布局和菜单栏折叠的实现

    前言 上一篇主要讲了我学习前端的一个经历,以及为什么选择BuildAdmin作为深入前端学习的原因.同事也大致聊了一下学习前端需要使用哪些技术栈。...而App.vue中作为第一个节点,引入整体的布局组件。 架构布局 BuildAdmin作为一个管理平台,首先要完成布局部分。...这里为什么要使用v-bind,而不是直接写260呢?因为aside的宽度是变化的,因为后面菜单折叠需要动态修改宽度,所以这里不能写死。...开发技巧 如果不知道组件的css在哪里定义的,就可以在控制台查看。 可以看到aside的样式:margin上下都是16px,所以上下共有32px。...所以我们就需要维护一个类似全局变量的东西:一个地方修改了一个变量,其他使用这个变量也会立即更新,VueX和Pinia就是干这个的。在BuildAdmin中,使用的是Pinia。

    1.6K41

    整洁架构之CSS

    父元素依赖 上一节中我们开发完毕的组件通常会在页面上被多处引用,但总存在个别场景需要你对组件稍作修改才得以适配。...在一个组件自身已经拥有样式的情况下,过分的依赖父组件间接的调整样式,是一种 case by case 的编码行为,本质上这架空了 popup 自带样式。...background, color 自身的布局样式 flex 其他样式比如 border 根据这些特点和常见的规范,可以考虑从下面几个维度对样式进行分离: 布局(Layout)和尺寸(size): 一个组件在不同的父组件下拥有不同的尺寸是再正常不过的事情...我理想的模块化样式应该能够轻松达到以下的目的: 控制样式影响的方向性:例如全局样式能够影响组件,但组件不能够影响全局; 样式模块间的隔离和污染:虽然 A 组件是 B 组件的子元素,但 B 组件的样式不会影响...你可以回想继承体系中存在的副作用,例如继承打破了对超类的封装,子类不能减少超类的接口等等,在 SASS 的这类复用关系中都能找到相似的影子。

    46110

    开发 | 一篇文章读懂微信小程序视图层

    列表渲染 先在相应的 JavaScript 中,定义一个列表变量,然后在 WXML 中,我们可以使用 wx:for 来引用它。...事件 事件是视图层到逻辑层的通讯方式,它可以将用户的行为反馈到逻辑层进行处理。 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。...事件对象可以携带额外信息,如 id、dataset、touches。 在 WXML 中建立一个事件,当于其他编程语言中使用函数的过程。...这样一个好处就是,我可以直接的指定一个部件出现在哪个位置,而不用管你的手机是什么样子,确保了最好的视觉体验,至于 1 rpx 等于多少像素,那就要按照你的手机实际尺寸来算了。...导入其他样式文件后,又何处安排每一个样式呢? 接下来,就是选择器登场的时间了! 例如,我们在 WXSS 这样定义样式: 然后,我们就可以在 WXML 中,使用 class 属性,引用这个样式。

    98220

    小程序组件开发之时间轴组件及组件关系

    所以,本文要说的是我们组件库最近添加的一个新组件,时间轴组件,也是笔者开发的,笔者由于在公司主要负责小程序端的开发,基于业务的需要贡献了开发了不少组件,那么多组件之所以讲这个组件,是因为其他大部分组件的开发都很普通...,体现不了小程序特有的东西,要么是组件太复杂代码太多不适合用文字表达,而时间轴(Timeline)组件我觉得刚刚好,不肥不瘦不偏不倚20不足18有余,比较好拿来作为素材聊聊。...当然,在小程序中要实现父子组件关联关系并不是非要这样,事实上没有层级规定限制,父子组件平级放置也是可以的,但我推荐这样,阅读起来更清晰名了。...desc':'asc'}}"> custom-class 是定义组件的根外部样式,以便在外部传入样式,为什么要这样呢,小程序的组件技术采用的 WebCompontent...纯原生开发一个复杂的小程序,不借助轮子个人感觉还是很麻烦的,尤其现在这么多小程序,哪天需要支持其他小程序呢,我想不会有人一个个对接原生开发吧,由于我们业务时toB的,所以目前还不需要考虑其他平台小程序。

    1.5K20

    前端框架「React」 VS 「Svelte」

    然后是 HTML 代码,你还可以在 标签中编写样式代码。有趣的是,组件中的样式代码只对当前组件有效。这意味着在组件中为 标签编写的样式不会影响到其他组件中的 元素。...handleClick() 函数在 handleClick 属性上定义,可以在 JSX 上使用一个标准的 onClick 事件来触发。...很不幸,不能直接在 标签中使用属性值。不过可以使用组件的 HTML 作为在 JavaScript 和 CSS 之间通讯的方法。...: var(--color); } background-color 样式属性不能直接引用 color 属性的值,它引用的是一个名为 color的样式变量,这个样式变量在前面的...直接在元素上编写样式是最常用的方法。 要在 JSX 中使用内嵌样式,可以使用样式创建一个对象,然后赋值给元素的 style 属性,剩下的部分前面已经实现过了。

    3.9K30

    React vs Svelte

    然后是 HTML 代码,你还可以在 标签中编写样式代码。有趣的是,组件中的样式代码只对当前组件有效。这意味着在组件中为 标签编写的样式不会影响到其他组件中的 元素。...handleClick() 函数在 handleClick 属性上定义,可以在 JSX 上使用一个标准的 onClick 事件来触发。...很不幸,不能直接在 标签中使用属性值。不过可以使用组件的 HTML 作为在 JavaScript 和 CSS 之间通讯的方法。...: var(--color); } background-color 样式属性不能直接引用 color 属性的值,它引用的是一个名为 color的样式变量,这个样式变量在前面的...直接在元素上编写样式是最常用的方法。 要在 JSX 中使用内嵌样式,可以使用样式创建一个对象,然后赋值给元素的 style 属性,剩下的部分前面已经实现过了。

    3.3K30
    领券