首页 文章 精选 留言 我的

精选列表

搜索[前端性能],共10000篇文章
优秀的个人博客,低调大师

大前端领域哪些开源项目最受欢迎?

评选活动设置「最受欢迎项目」,以及特别策划的「优秀中国开源原生创企」和「神秘奖项」,本页面用于投票选出「最受欢迎项目」; 参与投票的候选项目被划分到「组织」或「个人」通道,最终选出 TOP 30 项目(组织:21 个,个人:9 个) 详细规则点此查看; 候选开源项目均由国人发起,评审委员会筛选出本页面的候选项目; 提名、修改项目信息等相关问题请私信 @OSCHINA编辑部。

优秀的个人博客,低调大师

foundation-sites 6.7.4 发布,响应式前端框架

foundation-sites 6.7.4发布了,Foundation 是一个易用、强大而且灵活的框架,用于构建基于任何设备上的 Web 应用,提供多种 Web 上的 UI 组件,如表单、按钮、Tabs 等等。 6.7.4 版本主要更新如下: 增强功能 当what-intent检测到正在使用触摸鼠标时,焦点上的轮廓将被删除。 当一个元素被设置为draggable=false 时,iOS上的标注和强制触摸也会被抑制。 新的可见类(黑夜模式、IE10+、sticky): show-for-dark-mode hide-for-dark-mode show-for-ie hide-for-ie show-for-sticky hide-for-sticky 现在 Slider 使用抓取的光标作为句柄。 bug 修复 运行构建时不再有 ESLint 和 SassLint 错误! 更新一些依赖项,以跟上 DEP 训练 修复了定制器构建问题 修复了文档站点上的错误链接。 标签上的匹配高度现在使用min-height 修复了Accordion菜单插入符号,有几率不通过 sass 变量定义大小的问题 删除了 console.log 的几个实例 changed.zf.mediaquery事件又回来了!当浏览器调整大小并越过定义的断点时,将触发此事件。始终可以通过以下方式访问当前命名的断点:Foundation.MediaQuery.current 为 Reveal、Off Canvas 和 Overflow 原型类添加了动态滚动支持 Slider不再在 init 上发出moved.zf.slider和changed.zf.slider事件 更新公告:https://github.com/foundation/foundation-sites/releases

优秀的个人博客,低调大师

前端 JavaScript 中 JSON.stringify() 的基本用法

前言 在开发工作中,我们可能会碰到这样的需求:需要将某个对象内容弹窗显示或者保存在文件中,这时候如果你直接弹窗的话,很可能就是下面这样的: 因为很多接口它对参数有要求,比如只能是字符串之类的。 这时候,就需要我们将对象转换为字符串进行输出,JSON.stringify() 方法就可以帮我们实现将对象转为字符串的过程。 方法描述 JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 replacer 函数,则可以选择性地替换值,或者指定的 replacer 是数组,则可选择性地仅包含数组指定的属性。 语法 JSON.stringify(value[, replacer [, space]]) 参数说明: value 将要序列化成 一个 JSON 字符串的值。 replacer(可选) 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理; 如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中; 如果该参数为 null 或者未提供,则对象所有的属性都会被序列化。 space(可选) 指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为10。 如果省略space,则将生成返回值文本,而没有任何额外空格。 如果 space是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。 如果 space是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符。 如果 space 是长度大于 10个字符的字符串,则使用前 10 个字符。 返回值 一个表示给定值的JSON字符串。 常规用法 console.log(JSON.stringify({name: "obj"})) // '{"name": "obj"}' repalacer 参数 replacer 参数可以是一个函数或者一个数组。作为函数,它有两个参数,键(key)和值(value),它们都会被序列化。 在开始时, replacer 函数会被传入一个空字符串作为 key 值,代表着要被 stringify 的这个对象。随后每个对象或数组上的属性会被依次传入。 函数应当返回JSON字符串中的value, 如下所示: 如果返回一个 Number,转换成相应的字符串作为属性值被添加入 JSON 字符串。 如果返回一个 String,该字符串作为属性值被添加入 JSON 字符串。 如果返回一个 Boolean, "true" 或者 "false" 作为属性值被添加入 JSON 字符串。 如果返回任何其他对象,该对象递归地序列化成 JSON 字符串,对每个属性调用 replacer 方法。除非该对象是一个函数,这种情况将不会被序列化成 JSON 字符串。 如果返回 undefined,该属性值不会在 JSON 字符串中输出。 有以下对象: const data = [ { name: "person1", sex: 0, age: 18, isStudent: true }, { name: "person2", sex: 1, age: 25, isStudent: false }, { name: "person3", sex: 0, age: 15, isStudent: true } ] 接下来我们针对这个对象做各种需求实现。 只输出姓名和性别 const res = JSON.stringify(data, ["name", "sex"]) console.log(res); // `[{"name":"person1","sex":0},{"name":"person2","sex":1},{"name":"person3","sex":0}]` JSON.stringify() 提供了分离出自己需要的那部分数据。 将性别转为中文字符 const res = JSON.stringify(data, (key, value) => { if (key == 'sex') { return ["女", '男'][value]; } return value; }) console.log(res); // `[{"name":"person1","sex":"女","age":18,"isStudent":true},{"name":"person2","sex":"男","age":25,"isStudent":false},{"name":"person3","sex":"女","age":15,"isStudent":true}]` JSON.stringify() 提供了回调函数做一个映射关系。 space 参数 const res = JSON.stringify(data, ["name", "sex"],4) console.log(res); 输出如下: 这里使用了 4 个空格作为层级缩进。 注意:使用 “\t” 得到的结果和使用 4 个空格得到的结果看起来很像,但实际不是一回事。 总结 JSON.stringify() 方法可以通过参数控制输出的数据和格式,灵活应用它会大大提高我们的工作效率。 学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂! 我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢迎关注,希望大家多多指教! 你来,怀揣期望,我有墨香相迎! 你归,无论得失,唯以余韵相赠! 知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!

优秀的个人博客,低调大师

前端 CSS 变量简介及基本使用方法

背景 复杂的网站都会有大量的CSS代码,通常也会有许多重复的值。 举个例子,同样一个颜色值可能在成千上百个地方被使用到,如果这个值发生了变化,需要全局搜索并且一个一个替换,效率不高且容易出错。 自定义属性在某个地方存储一个值,然后在其他许多地方引用它。另一个好处是语义化的标识。比如,--main-text-color 会比 #00ff00 更易理解,尤其是这个颜色值在其他上下文中也被使用到。 概念 自定义属性(有时候也被称作CSS变量或者级联变量)是由CSS作者定义的,它包含的值可以在整个文档中重复使用。 由自定义属性标记设定值(比如: --main-color: black;),由 var() 函数来获取值(比如: color: **var(--main-color)**;)。 优势 在构建大型站点时,作者通常会面对可维护性的挑战。在这些网页中,所使用的CSS 的数量是非常庞大的,并且在许多场合大量的信息会重复使用。 例如,在网页中维护一个配色方案,意味着一些颜色在 CSS 文件中多次出现,并被重复使用。当你修改配色方案时,不论是调整某个颜色或完全修改整个配色,都会成为一个复杂的问题,不容出错,而单纯查找替换是远远不够的。 如果使用了CSS 框架,这种情况会变得尤其糟糕,此时如果要修改颜色,则需要对框架本身进行修改。 在这些场合使用 LESS 或 Sass 类似的预处理器是非常有帮助的,但是这种通过添加额外步骤的方式,可能会增加系统的复杂性。 CSS变量为我们带来一些预处理器的便利,并且不需要额外的编译。 这些变量的第二个优势就是名称本身就包含了语义的信息。CSS 文件变得易读和理解。main-text-color比文档中的#00ff00更容易理解,特别是同样的颜色出现在不同的文件中的时候。 用法 下面是 CSS 变量的使用方法和步骤。 CSS 中声明变量 我们都知道,在 JS 中要使用一个变量前,必须声明这个表变量。在 CSS 中也是一样的道理。 声明一个自定义属性,属性名需要以两个减号(--)开始,属性值则可以是任何有效的CSS值。和其他属性一样,自定义属性也是写在规则集之内的,如下: body { --bg-color: #7F583F; --color: #F7EFD2; } 上面代码中,body选择器里面声明了两个变量:--bg-color和--color。 它们与color、font-size等正式属性没有什么不同,只是没有默认含义。所以 CSS 变量(CSS variable)又叫做**"CSS 自定义属性"**(CSS custom properties)。 规则集所指定的选择器定义了自定义属性的可见作用域。通常的最佳实践是定义在根伪类 :root下,这样就可以在HTML文档的任何地方访问到它了: :root { --main-bg-color: #eee; } 自定义属性名是大小写敏感的,--my-color 和 --My-color 会被认为是两个不同的自定义属性。 CSS 中使用变量 通过var()函数来读取变量。语法如下: var(custom-property-name, value) name (必需) 变量名(以两条破折号开头)。 value (可选) 表示变量的默认值。如果该变量不存在,就会使用这个默认值。 变量名称必须以两个破折号(--)开头,且区分大小写! 使用方法: element { background-color: var(--main-bg-color); } 变量也可以使用在变量声明中: :root { --primary-color: #eee; --primary-bg-color: var(--main-bg-color); } 变量值只能用作属性值,不能用作属性名。 JS 操作 CSS 变量 在 JS 代码中,我们可能需要读取 CSS 变量的值,其方法如下: const root = document.querySelector(":root"); // 设置 CSS 变量 root.style.setProperty("--main-bg-color", "red"); // 读取 CSS 变量 const computedStyle = getComputedStyle(root); const mainBgColor = computedStyle.getPropertyValue("--main-bg-color"); console.log(mainBgColor); // 删除 CSS 变量 root.style.removeProperty("--main-bg-color"); 总结 以上就是关于 CSS 变量的一些基本概念及使用方法,更多详情待后续! 灵活使用 CSS 变量,不仅可以提高生产力,也能够提高代码的可阅读性和维护性。 ~ ~ ~ 本文完 学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂! 大家好!我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢迎关注,希望大家多多指教! 知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!

优秀的个人博客,低调大师

前端技术之实用的 JavaScript 调试小技巧

除了console.log,debugger就是另一个我很喜欢的快速调试的工具,将debugger加入代码之后,Chrome会自动在插入它的地方停止,很像C或者Java里面打断点。你也可以在一些条件控制中插入该调试语句,譬如: [JavaScript]纯文本查看复制代码 ? 1 2 3 if (thisThing) { debugger; } 将Objects以表格形式展示 有时候我们需要看一些复杂的对象的详细信息,最简单的方法就是用console.log然后展示成一个列表状,上下滚动进行浏览。不过似乎用console.table展示成列表会更好呦,大概是介个样子: [JavaScript]纯文本查看复制代码 ? 1 2 3 4 5 6 7 var animals = [ { animal: 'Horse', name: 'Henry', age: 43 }, { animal: 'Dog', name: 'Fred', age: 13 }, { animal: 'Cat', name: 'Frodo', age: 18 } ]; console.table(animals); 多屏幕尺寸测试 Chrome有一个非常诱人的功能就是能够模拟不同设备的尺寸,在Chrome的Inspector中点击toggle device mode按钮,然后就可以在不同的设备屏幕尺寸下进行调试咯: 在Console快速选定DOM元素 在Elements选择面板中选择某个DOM元素然后在Console中使用该元素也是非常常见的一个操作,Chrome Inspector会缓存最后5个DOM元素在它的历史记录中,你可以用类似于Shell中的$0等方式来快速关联到元素。譬如下图的列表中有‘item-4′, ‘item-3’, ‘item-2’, ‘item-1’, ‘item-0’这几个元素,你可以这么使用: 获取某个函数的调用追踪记录 JavaScript框架极大方便了我们的开发,但是也会带来大量的预定义的函数,譬如创建View的、绑定事件的等等,这样我们就不容易追踪我们自定义函数的调用过程了。虽然JavaScript不是一个非常严谨的语言,有时候很难搞清楚到底发生了啥,特别是当你需要审阅其他人的代码的时候。这时候console.trace就要起作用咯,它可以帮你进行函数调用的追踪。譬如下面的代码中我们要追踪出car对象中对于funcZ的调用过程: [JavaScript]纯文本查看复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 var car; var func1 = function() { func2(); } var func2 = function() { func4(); } var func3 = function() { } var func4 = function() { car = new Car(); car.funcX(); } var Car = function() { this.brand = ‘volvo’; this.color = ‘red’; this.funcX = function() { this.funcY(); } this.funcY = function() { this.funcZ(); } this.funcZ = function() { console.trace(‘trace car’) } } func1(); 这边就可以清晰地看出func1调用了func2,然后调用了func4,func4创建了Car的实例然后调用了car.funcX。 格式化被压缩的代码 有时候在生产环境下我们发现了一些莫名奇妙的问题,然后忘了把sourcemaps放到这台服务器上,或者在看别人家的网站的源代码的时候,结果就看到了一坨不知道讲什么的代码,就像下图。Chrome为我们提供了一个很人性化的反压缩工具来增强代码的可读性,大概这么用: 快速定位调试函数 当我们想在函数里加个断点的时候,一般会选择这么做: 在Inspector中找到指定行,然后添加一个断点 在脚本中添加一个debugger调用 不过这两种方法都存在一个小问题就是都要到对应的脚本文件中然后再找到对应的行,这样会比较麻烦。这边介绍一个相对快捷点的方法,就是在console中使用debug(funcName)然后脚本会在指定到对应函数的地方自动停止。这种方法有个缺陷就是无法在私有函数或者匿名函数处停止,所以还是要因时而异: [JavaScript]纯文本查看复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 var func1 = function() { func2(); }; var Car = function() { this.funcX = function() { this.funcY(); } this.funcY = function() { this.funcZ(); } } var car = new Car(); 禁止不相关的脚本运行 当我们开发现代网页的时候都会用一些第三方的框架或者库,它们几乎都是经过测试并且相对而言Bug较少的。不过当我们调试我们自己的脚本的时候也会一不小心跳到这些文件中,引发额外的调试任务。解决方案呢就是禁止这部分不需要调试的脚本运行。 在较复杂的调试情况下发现关键元素 在一些复杂的调试环境下我们可能要输出很多行的内容,这时候我们习惯性的会用console.log, console.debug, console.warn, console.info, console.error这些来进行区分,然后就可以在Inspector中进行过滤。不过有时候我们还是希望能够自定义显示样式,你可以用CSS来定义个性化的信息样式: [JavaScript]纯文本查看复制代码 ? 01 02 03 04 05 06 07 08 09 10 <font style="color:rgb(51, 51, 51)"><font size="3">console.todo = function(msg) { console.log(‘ % c % s % s % s‘, ‘color: yellow; background - color: black;’, ‘–‘, msg, ‘–‘); } console.important = function(msg) { console.log(‘ % c % s % s % s’, ‘color: brown; font - weight: bold; text - decoration: underline;’, ‘–‘, msg, ‘–‘); } console.todo(“This is something that’ s need to be fixed”); console.important(‘This is an important message’); 在console.log()中你可以使用%s来代表一个字符串 ,?%i?来代表数字, 以及?%c?来代表自定义的样式。 监测指定函数的调用与参数 在Chrome中可以监测指定函数的调用情况以及参数: [JavaScript]纯文本查看复制代码 ? 1 2 <font style="color:rgb(51, 51, 51)"><font size="3">var func1 = function(x, y, z) { }; 这种方式能够让你实时监控到底啥参数被传入到了指定函数中。 Console中使用$进行元素查询 在Console中也可以使用来进行类似于querySelector那样基于CSS选择器的查询,(‘css-selector’) 会返回满足匹配的第一个元素,而$$(‘css-selector’) 会返回全部匹配元素。注意,如果你会多次使用到元素,那么别忘了将它们存入变量中。 Postman 很多人习惯用Postman进行API调试或者发起Ajax请求,不过别忘了你浏览器自带的也能做这个,并且你也不需要担心啥认证啊这些,因为Cookie都是自带帮你传送的,这些只要在network这个tab里就能进行,大概这样子: DOM变化检测 DOM有时候还是很操蛋的,有时候压根不知道啥时候就变了,不过Chrome提供了一个小的功能就是当DOM发生变化的时候它会提醒你,你可以监测属性变化等等:

优秀的个人博客,低调大师

layui 2.6.8 发布,原生态前端 UI 框架

更新日志: # 2.6.8 [重写] sort 方法,以便对数字、非数字及混合类等所有内容的排序进行支持 [新增] dropdown 组件的 align 参数,用于控制下拉菜单水平对齐方式(支持 left、center、right) [新增] table 组件的 escape 参数,用于是否开启 xss 字符过滤(默认 false) [加强] table 组件的自定义模板功能,返回 LAY_COL 字段,可得到当前列的表头配置信息 [加强] form 组件对验证不通过的表单项自动定位到可视区域,不再是只对输入框自动获焦定位 #I3O5TC [加强] form 组件对 url 的验证 [修复] form 相关 css 的 layui-checkbox-disabled 书写错误(之前为 disbaled) #I1NGDC [修复] form 组件的 select option 内容出现换行时的样式异常问题 #I3T5ZC [修复] colorpicker 颜色选择组件在 Firefox 下选择颜色时的若干兼容问题 #I3POP2 [加强] colorpicker 组件的坐标定位计算方式 [修复] 低版本 ie 若干报错问题 该版本是 2.6.x的一个收尾版,基本很稳定,推荐官网下载升级(www.layui.com)。 那么下一个版本 2.7也将会开启另外一个篇章

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册