首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

当我将CSS重用为一个按钮时,我不会把它放在任何其他元素上,而是把它放在一个按钮上。输入字段、布局和我构建的任何自定义组件也是如此。我正在重用组件,而不是class。但这有什么不同呢?...它的存在反映了需要传递给组件的道具。这是样式和标记耦合的另一个例子。但是,如果我们滥用组件的 API,我们得到报错。当我开始考虑组件而不是标记和样式时,我开始将它们的分离视为不必要的摩擦。...你不能写一个没有意义的类,因为你是给它的人。尽管 HTML 规范说鼓励开发人员使用描述内容的类,但没有具体的原因说明为什么这个建议应该适用于长期偏离旧实践的现代前端开发。...边距、填充、字体大小 - 除非我跳到 CSS 文件,否则我不会知道它的作用。现在,当我看到另一个类时,我可以理解它有什么风格。...}当我们发现自己处于这个位置时,另一个值得考虑的技术是将其拆分为单独的组件。一个函数应该有一个单一的职责,如果一个组件太灵活,就意味着它做了太多的事情。

10110

JavaScript 页面资源加载方法onload,onerror总结

正是因为它来自于另一个域。 为什么我们需要 error 的详细信息?...我们有了完整的 error 报告。 总结 图片 img>,外部样式,脚本和其他资源都提供了 load 和 error 事件以跟踪它们的加载: load 在成功加载时被触发。...error 在加载失败时被触发。 唯一的例外是 :出于历史原因,不管加载成功还是失败,即使页面没有被找到,它都会触发 load 事件。...使用回调函数加载图片 重要程度:⭐️⭐️⭐️⭐️ 通常,图片在被创建时才会被加载。所以,当我们向页面中添加 img> 时,用户不会立即看到图片。浏览器首先需要加载它。...换句话说,当所有图片都已加载完成,或出现错误输出时,将执行 callback。 例如,当我们计划显示一个包含很多图片的可滚动图册,并希望确保所有图片都已加载完成时,这个函数很有用。

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

    await 只在 async 函数中工作

    ;但是在代码的顶层,当我们在 async 函数的外部时,我们在语法上是不能使用 await 的,所以通常添加 .then/catch 去处理最终结果或者 error。...下面是一个 promise 在 1s 之后 resolve 的例子: async function f() { let promise = new Promise((resolve, reject...} f(); 函数在 (*) 行执行“暂停”,并在 promise 被处理时继续执行, result 变成其结果。上述代码在一秒内显示了 “done!”...= document.createElement('img'); img.src = githubUser.avatar_url; img.className = "promise-avatar-example...但是在代码的顶层,当我们在 async 函数的外部时,我们在语法上是不能使用 await 的,所以通常添加 .then/catch 去处理最终结果或者 error。 与上述示例的 (*) 行一样。

    1.5K10

    url、href和src区别

    统一资源定位符,表示从互联网上得到的资源的位置和访问方法,是互联网上标准资源的地址。互联网上每一个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。...如果目标文件与当前页面(也就是包含URL的页面)在同一个目录,那么这个文件的相对URL仅仅是文件名和扩展名,如果目标文件在当前目录的子目录中,那么它的相对URL是子目录名,后面是斜杠,然后是目标文件的文件名和扩展名...,应该总是使用相对URL,他们更容易输入,而且在将页面从本地系统转移到服务器上时更加方便,只要每个文件的相对位置保持不变,链接几句仍然是有效的。...然而我们对于为什么使用href或者src并不是太深入的了解。 href和src是有区别的,而且是不能相互替换的。...当我们写下: 浏览器明白当前资源是一个样式表,页面解析不会暂停(由于浏览器需要样式规则去画或者渲染页面,渲染过程可能会被被暂停)。

    6.9K50

    React-代码复用(mixin.hoc.render props) 前言例子MixinHOCRender Props总结参考

    你会记得更新mixin来读取道具吗?如果现在其他组件也使用这个mixin呢? 2....要限制 HOC 读取或添加 state,添加 state 时应该放在单独的命名空间里,而不是和 WrappedComponent 的 state 混在一起。...为什么React推崇HOC和组合的方式,我的理解是React希望组件是按照最小可用的思想来进行封装的,理想的说,就是一个组件只做一件的事情,且把它做好,DRY。在OOP原则,这叫单一职责原则。...HOC则像是一个装饰器,他是在盒子的外面一层一层的装饰,当我们想要抽取某一层或者增加某一层都非常容易。...JSX层次中多了很多层次(即无用的空组件),不利于调试。 HOC属于静态构建,静态构建即是重新生成一个组件,即返回的新组件,不会马上渲染,即新组件中定义的生命周期函数只有新组件被渲染时才会执行。

    1.6K30

    图解 Elasticsearch 原理

    img Stored Field字段查找 当我们想要查找包含某个特定标题内容的文件时,Inverted Index就不能很好的解决这个问题,所以Lucene提供了另外一种数据结构Stored Fields...img 与在Lucene Segment中搜索不同的是,Shard可能是分布在不同Node上的,所以在搜索与返回结果时,所有的信息都会通过网络传输。...需要注意的是: 1次搜索查找2个shard = 2次分别搜索shard ? img 对于日志文件的处理 当我们想搜索特定日期产生的日志时,通过根据时间戳对日志文件进行分块与索引,会极大提高搜索效率。...当我们想要删除旧的数据时也非常方便,只需删除老的索引即可。 ? img 在上种情况下,每个index有两个shards 如何Scale ?...img 根据作者进行聚合,得到top10的hits的top10作者的信息 请求分发 这个请求可能被分发到集群里的任意一个节点 ? img 上帝节点 ?

    1.7K41

    可重用性的6个级别

    当我们重用该组件(而不是直接使用代码)时,它给我们带来了两个好处: 将来进行更改要容易得多,因为我们只需要在一个地方做 我们不必记住将代码复制到的数十个(或数百个)地方 这是最基本的,也是最经常谈论的可重用性形式...3.适应性 配置的最大问题是缺乏远见。您需要预见将来的需求,并通过放置这些道具将它们构建到组件中。 但是,如果您使组件具有适应性,则无需更改组件即可使用从未想到的用例。...如果我们想添加loading微调器而不必修改我们的Button组件,则可以这样做: img v-if="loading" src...无论哪种方式,您都将获得很大的灵活性和大量的代码重用性。 6.嵌套 通过将这些扩展点通过一层或多层组件,我们将得出扩展的结论。 乍一看听起来很疯狂,但是它非常有用,尤其是在大中型应用程序中。...这样的简短文章并不能使他们公平,但是我将在我即将开始的课程Reusable Components中更深入地探讨它们。

    1.1K20

    《Kotlin 极简教程 》第6章 泛型

    当我们从集合中获取一个值的时候,我们不能都使用Object类型,需要进行强制类型转换。而这个转换过程由于在添加元素的时候没有作任何的类型的限制跟检查,所以容易出错。...pairs: Pair): Map 类型参数K,V是一个占位符,当泛型类型被实例化和使用时,它将被一个实际的类型参数所替代。...我们通常把它的类型定义成 E、T 、K 、V等等。 当我们在实例化对象的时候,必须声明T具体是一个什么类型。所以当我们把T定义成一个确定的泛型数据类型,参数就只能是这种数据类型。...list中的声明其元素是Number或Number的派生类,为什么不能add Integer?...super T> dest是消费数据的对象,这些数据会写入到该对象中,这些数据该对象被“吃掉”了(Kotlin中叫in T)。 List src是生产提供数据的对象。

    1.8K30

    靶机实战 |『VulnHub系列』Bottleneck 1-Walkthrough

    发现这个img标签的src的值有点特别,对其进行base64解码,得到图片名称bottleneck_dontbe.png ? 在img目录可以正常访问该图片,且就是img标签显示的图片 ?...后来发现打印“丢垃圾”图的位置有两个,第一个是检测到参数f的值在blacklist中的时;第二个是参数f对应的文件为空时。而我正是中了“文件为空”的毒。...可是现在为什么是空的呢?你可能想说,会不会是payload不对?wordlist里面我从向上一级目录到九级目录,这作者总不能变态到需要向上十级目录吧。...所以我的结论是:虽然我不知道具体要向上多少级目录,但总在1~9之间。 那为什么文件是空的呢?被什么东西清空了呗!你还能想到其他的可能性吗?...这也就是上面列表中为什么我的第一个payload是/etc/passwd。我故意先发送一个黑名单请求,让系统在/tmp/output里面生成日志,之后再读取。

    1.3K31

    靶机实战 |『VulnHub系列』Bottleneck 1-Walkthrough

    发现这个img标签的src的值有点特别,对其进行base64解码,得到图片名称bottleneck_dontbe.png ? 在img目录可以正常访问该图片,且就是img标签显示的图片 ?...后来发现打印“丢垃圾”图的位置有两个,第一个是检测到参数f的值在blacklist中的时;第二个是参数f对应的文件为空时。而我正是中了“文件为空”的毒。...可是现在为什么是空的呢?你可能想说,会不会是payload不对?wordlist里面我从向上一级目录到九级目录,这作者总不能变态到需要向上十级目录吧。...所以我的结论是:虽然我不知道具体要向上多少级目录,但总在1~9之间。 那为什么文件是空的呢?被什么东西清空了呗!你还能想到其他的可能性吗?...这也就是上面列表中为什么我的第一个payload是/etc/passwd。我故意先发送一个黑名单请求,让系统在/tmp/output里面生成日志,之后再读取。

    2K20

    HTML5 拖放

    拖放是HTML5 标准中的一部分,任何标签元素都能够被拖放。 二、为什么需要拖放?...="true" /> 2、设置要拖动的内容(ondragstart 和 setData()) 设置当元素被拖动时,要拖动的内容是什么;这里需要给要拖动的元素添加 ondragstart事件(当元素开始用鼠标拖动时...如下代码我们如果要将图片放置到另一个div容器中,需要设置这个div容器可以放置其他元素(给他添加ondragover 事件,ondragover 规定当我们拖动的元素经过它的时候,可以将拖动的元素放置到此处...,表示设置允许放置,默认行为是以链接形式打开 } 4、设置拖动元素的新位置(ondrop) 当我们松开鼠标后,表示我们要放置被拖动的数据,这时会发生 drop 事件,我们要规定被拖动的元素需要放置的新位置...该方法将返回在 setData() 方法中设置为相同类型的数据 被拖元素数据 是被拖元素的 id ("drag1") 把被拖动图片元素 追加 到放置元素(目标元素)中 二、拖动一个图片到一个div容器中

    1.5K20

    使用Grunt实现资源自动化同步

    ,下面看下Gruntfile文件的内容: //引入rd模块读取文件 let rd = require('rd'); //获.....meta文件,这里一定要注意,不能被同步掉了,除了meta文件外,还有自动图集、svn等文件。...上面可以看到以Copying开头的是文件复制信息,使用verbose参数,它显示了从那儿复制文件那儿,Unlinking是删除文件,同样显示了被删除的文件路径。...图集合并同步 在UI目录中有一个类特殊的图片,需要做成图集提高游戏渲染性能,在一个游戏项目初期由于UI风格不稳定或使用临时图片,让美术同学经常去合并图集是一个效率较低的事情。...我们经常会遇到这样一个场景: 美术同学:“xxx程序我增加了大厅商店道具张图片,你更新一下呢,我想看看效果”。 程序同学:“这几张图需要与策划配置文件配合才能生效,yyy策划你更新下商店配置”。

    87530

    你在项目中做过哪些安全防范措施?

    举两个案例帮助更好的理解:当我们在做商品评论时,用户输入的内容未经过过滤直接保存到数据库中。 攻击者可以构建一条评论, 包含恶意内容: 质量非常不错!...src="danger.com/spread.js"> 当你的评论列表被用户浏览时, 直接从服务端取出,回填到HTML响应中: 质量非常不错!...report-uri:出现报错时提交到指定 uri,不能在 标签使用 style-src:样式文件 CSRF 攻击 除了上面说的XSS攻击外,还有一种常见的攻击方式:CSRF攻击。...它通过一些内容(如游戏)误导被攻击者点击,虽然被攻击者点击的是他所看到的网页,但其实所点击的是另一个置于原网页上面的透明页面。 根据先点击劫持原理示意图,分析典型点击劫持攻击流程: ?...其次使用HTTPS通信,开发时也不要忽视证书的校验,或者对于非法证书不进行处理,这样也容易被中间人攻击。

    84920

    实战:使用 React 实现渐进式加载图片

    我将从以下几个步骤介绍: 为什么渐进式图像加载是有用的 React中的渐进式图像加载技术 创建一个图像组件 将缩略图更新为实际图像 实现过渡模糊 使用库逐步加载图像 为什么渐进式图像加载是有用的 使用渐进式图像加载...当我们的网络连接速度非常慢时,这种体验就会恶化。 通过使用渐进式加载技术,我们可以渲染图像的小文件大小版本,以减少加载时间。一旦加载了高分辨率版本,我们就可以交换图像文件了。...低质量的图像首先被加载以快速显示,然后在主图像下载时被放大以适应主图像的宽度。然后,一个模糊过滤器和适当的CSS过渡应用。...=> { setImgSrc(src); }; }, [src]); 在这个Hook中,我们首先创建一个img元素,方法是实例化一个Image()对象并将src属性设置为实际的图像源。...在它的子函数prop中,我们可以在渲染回调函数中访问src和loading参数。 通过loading参数,我们可以动态地向img元素添加类。

    3.7K30

    vue如何动态加载本地图片

    通常,我们的一个img标签在html中是这么写的: img src="../images/demo.png"> 这种写法只能引用相对路径下的图片。不能使用绝对路径。...使用绝对路径的话,这类资源将会直接被拷贝,而不会经过 webpack 的处理。 如果src是变量的话,我们一般会在data中定一个变量src进行动态绑定。...开头) 引用一个静态资源时,该资源将会被包含进入 webpack 的依赖图中。 在其编译过程中,所有诸如 img src="...">、background: url(...)...当你的应用被部署在一个域名的根路径上时,比如http://www.abc.com/,此时这种引入方式可以正常显示但是如果你的应用没有部署在域名的根部,那么你需要为你的 URL 配置 publicPath...当我们基于webpack进行开发时,引入图片会遇到一些问题。 其中一个就是引用路径的问题。

    4.2K20

    带你理解 Asyncawait

    = document.createElement('img'); img.src = githubUser.avatar_url; img.className = "promise-avatar-example...---- async/await 和 promise.then/catch 当我们使用 async/await 时,几乎就不会用到 .then 了,因为为我们await 处理了异步等待。...这通常更加方便(当然不是绝对的)。 但是当我们在顶层代码,外面并没有任何 async 函数,我们在语法上就不能使用 await 了,所以这时候就可以用 .then/catch 来处理结果和异常。...---- ---- async/await 可以和 Promise.all 一起使用 当我们需要同时等待多个 promise 时,我们可以用 Promise.all 来包裹他们,然后使用 await:...Async/await 是基于 promise 的,所以它内部使用相同的微任务队列,并且相对宏任务来说具有更高的优先级。

    1.2K10

    【Go 语言社区】js 向服务器请求数据的五种技术

    尽管有这些缺点,XHR仍旧是最常用的请求数据技术,也是最强大的,它应当成为你的首选。 当使用XHR请求数据时,你可以选择POST 或GET。...你不能访问响应信息头或者像访问字符串那样访问整个响应报文。 最后一点非常重要。因为响应报文被用作脚本标签的源码,它必须是可执行的JavaScript。...使用此技术有一些缺点,其中最大的缺点是以此方法获得的资源不能被浏览器缓存。如果你使用MXHR获取一个特定的CSS 文件然后在下一个页面中正常加载它,它不在缓存中。...当我们用XHR捕获登陆用户统计信息时这么做通常没什么问题,但是,如果发送到服务器的是至关重要的数据,你可以添加代码在失败时重试: function xhrPost(url, params,...简单的图像灯标意味着你所能做的受到限制。你不能发送POST 数据,所以你被URL 长度限制在一个相当小的字符数量上。你可以用非常有限的方法接收返回数据。

    2.3K100

    网站页面优化:IMG标签

    查看网页源码HTML的IMG标签看起来像这样: img src="eg_tulip.jpg" alt="一雯在宁波溪口拍的郁金香" /> IMG标签:使用合适的图片 图片SEO选用合适的图片利于谷歌图片排名最好是自己拍摄的图片...准备使用在文章中的图片 当我们找到合适的图片,无论是插图,图表还是照片,下一步就是准备在网站使用它并优化它,需要考虑以下几点: 正确命名图片文件名 图片搜索引擎优化从文件名开始,你希望GOOGLE在不分析图片的情况下了解图片的内容...,这就是为什么要把它放在文件名称的开头。...设备像素比SRCSET属性 img src="eg_tulip.jpg" alt="一雯在宁波溪口拍的郁金香" srcset="eg_tulip_2x.jpg 2x, eg_tulip_3x.jpg...图片说明 图片说明是页面上图片附带的文字,它是每个图像下方灰色框中的文本。为什么图片说明对搜索引擎优化重要呢?因为读者在阅读文章时会浏览这些文本。

    1.8K30

    六.XSS跨站脚本攻击靶场案例九题及防御方法-2

    img src="http://www.baidu.com/img/logo.gif" onclick=alert('xss')> 当src后面的值正确时,可以用onclick事件来触发弹窗。...>'; 当我们输入之前的编码方法来尝试绕过,但没有弹出窗体,运行结果如下图所示: 查看源代码发现字符被转义了。...一个正常的XSS输入: img src="javascript:alert(0);"> 转换大小写后的XSS: IMG SRC="javascript:alert(0);">...服务器在发送用户信息的时候,我们需要加上一个httponly,这个代码无法读取到cookie的信息,那么攻击者也是得不到这个信息,这对于用户来说也是非常好的保护。...如果在Cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到Cookie信息,这样能有效的防止XSS攻击。 最重要的是:千万不要引入任何不可信的第三方JavaScript到页面里!

    5.5K10
    领券