
JavaScript
文章平均质量分 92
前端筱园
专注于前端技术领域,定期分享个人原创作品
个人网站:www.dengzhanyong.com
微信公众号:【前端筱园】不错过我的每一篇推送
展开
-
AI对话的逐字输出:流式返回才是幕后黑手
在现代AI对话系统中,逐字输出效果已经成为提升用户体验的关键手段。通过流式返回,AI能够逐字或逐块生成响应,模拟人类对话的自然节奏,减少用户等待时间,并提供更流畅的交互体验原创 2025-03-05 15:17:20 · 1691 阅读 · 0 评论 -
前端视频帧截图:如何实现视频封面选择
在这样一个图像化极其重要的时代,从视频中提取精彩瞬间,即视频帧截图的技术,已成为前端开发中的一个亮点。JavaScript作为网页动态效果和交互的主力军,其在视频处理领域能力逐渐被挖掘和重视,尤其是视频帧截图技术的应用,为网站和应用程序提供了更为丰富和直观的用户体验。原创 2024-06-03 14:39:45 · 3007 阅读 · 0 评论 -
音频可视化:原生音频API为前端带来的全新可能!
音频API是一组提供给网页开发者的接口,允许他们直接在浏览器中处理音频内容。这些API使得在不依赖任何外部插件的情况下操作和控制音频成为可能原创 2024-05-06 18:07:30 · 1689 阅读 · 0 评论 -
不要只会用conosle.log了,这几个console命令,让你的调试效率翻倍
console在前端开发中是最常用到的语法之一,在开发和调试过程中是不可缺少的工具,可以打印调试信息、查看对象内容、性能分析、错误定位等作用原创 2024-04-29 13:48:06 · 2371 阅读 · 1 评论 -
前端手写Promise.all,你不知道的多个知识点,比想象中更精彩!
本文将通过知识问答、手写实现、知识扩展几个环节,让你彻底摸透promise.all原创 2024-04-25 09:43:46 · 1479 阅读 · 0 评论 -
10分钟掌握HTML拖放API!让你的网页元素瞬间拥有拖拽功能,轻松提升用户体验!
在日常开发中,拖拽功能无疑是一个常见的需求场景。为了更好地满足这一需求,HTML5提供了一套便捷的拖放API。这些API不仅能够帮助开发者轻松实现拖拽效果,还可以提高排查拖拽问题的效率,甚至可以让我们更加灵活地自定义拖拽场景和设计能力原创 2024-04-09 17:34:36 · 2502 阅读 · 0 评论 -
JavaScript同步与异步
JavaScript的运行机制运行栈JavaScript的执行环境是 单线程 的,所谓单线程,就是每次都只能做一件事,后面的事必须等前面的执行完才可以进行。console.log(1);console.log(2);console.log(3);console.log(4);// 1, 2, 3, 4但是这有一个弊端,如果中途遇到某个操作长时间无法执行完成,那么后面的任务就必须排队等待,这严重影响了整个执行过程,会导致浏览器无响应。为了解决这个问题,JavaScript将任务分为了 .原创 2021-08-09 19:54:28 · 1109 阅读 · 2 评论 -
你用过Object.is() 方法吗?
方法说明Object.is() 方法用来判断两个值是否相等,它接收两个参数,分别是需要比较的两个值。返回一个 Boolean 值标示这两个值是否相等。Object.is(123, 123); // trueObject.is(123, '123'); // falseObject.is([], []); // falseObject.is(NaN, NaN); // true我们在开发中,基本上都是使用 == 与 === 来判断两个值是否相等,可能有的人会问了,他们与 Object.i原创 2021-07-21 09:01:10 · 4107 阅读 · 2 评论 -
React + Koa 实现文件断点续传
断点续传什么是断点续传断点续传,指的是在上传/下载的过程中,由于网络或其他原因导致上传/下载终断。可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传/下载。用户可以节省时间,提高速度。整体思路流程1. 选择文件-解析文件先来一个选择文件的input和一个上传按钮<div> <input type="file" ref={InputRef}/> <Button type="primary" onClick={uploadFil原创 2021-06-22 13:32:49 · 934 阅读 · 0 评论 -
关于JavaScript数据类型,你知道多少?
JavaScript的数据类型是每一个前端开发者必须要掌握的内容,也是最基础最重要的角色之一,关于JavaScript数据类型你知道多少?JavaScript一共有7种数据类型:String、Number、Null、Undefined、Boolean、Object、Symbol(ES6新增)。他们可以分为两大类:值类型和引用类型。在文章最后会讲解他们的区别。undefinedundefined未找到的意思,它的值只有一个,也就是undefined,我们可以通过以下几种方式得到undefined:.原创 2020-09-04 17:40:51 · 257 阅读 · 0 评论 -
JavaScript模块机制
commonJS规范模块引用你可以通过require来引入你所需要的模块,这个方法接收模块标识,以此引入一个模块的API到当前上下文中。const fs = require('fs');模块定义一个模块就是一个文件,文件中你可以定义或处理任何方法,但你必须要有一个出口, 用于导出你想要暴露的方法,上下文提供了exports对象就是用来导出的,它也是唯一的出口。在模块中,还存在一个module对象,它代表模块本身,而exports是module的属性。// common.jsfunction原创 2020-08-28 11:38:00 · 457 阅读 · 0 评论 -
如何灵活运用JavaScript中的this
JavaScript中的this面对对象的语言中,this表示当前对象的一个引用,但在JavaScript中,this不是固定不变的,它会随之执行环境的改变而改变。一般情况下this指向全局变量window作为对象方法调用时,this指向上级对象作为构造函数调用时,this指向new出的对象在函数中,非严格模式下this指向全局对象,但是在严格模式下this指向undefined[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LwMy7ONK-15946141原创 2020-07-13 13:31:28 · 371 阅读 · 0 评论 -
从0开始学习webpack打包,效率与性能“快的飞起”
前言本篇文章我会带你从0开始学习webpack,这是webpack系列文章的第一篇,后续会持续更新。为什么会出现模块化开发模块化,可以说是当下最重要的前端开发范式之一。随着前端应用的日益复杂化,我们的项目已经逐渐膨胀到了不得不花大量时间去管理的程度。而模块化就是一种最主流的项目组织方式,它通过把复杂的代码按照功能划分为不同的模块单独维护,从而提高开发效率、降低维...原创 2020-04-21 21:37:10 · 647 阅读 · 0 评论 -
3道题考察你对JavaScript函数、变量、对象、作用域的理解程度
小试牛刀本篇文章从一道题开始,后面会逐步的在这道题的基础上进行拓展,先思考一下执行完下面的代码后输出的是什么getAge()var getAge = function(){ console.log(18);}function getAge(){ console.log(20);}getAge()这道题考到了两个知识点,一点是在JavaScript中的变...原创 2020-03-30 15:19:35 · 318 阅读 · 0 评论 -
用JavaScript实现排序算法动画【第三期】选择排序
算法概述选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。主要参数平均时间复杂度 最好情况 最坏...原创 2020-03-26 22:11:12 · 848 阅读 · 0 评论 -
在express中进行token认证
什么是TokenToken 是在服务端产生的,当客户端传来的用户名/密码验证通过时,就会在服务器端生成一个Token返回给客户端,这个Token中包含了用户信息、过期时间等信息。客户端接收到返回的token后将其保存,在有效时间内客户端向服务器端发送请求时只需要带上这个token即可,无需再带上用户名和密码。express中进行Token认证1.安装jsonwebtoken...原创 2020-03-25 22:11:54 · 5503 阅读 · 5 评论 -
用JavaScript实现排序算法动画【第二期】插入排序
算法概述插入排序(Insertion sort)是一种简单直观且稳定的排序算法。将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序!主要参数平均时间复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性 ...原创 2020-03-24 14:10:45 · 834 阅读 · 0 评论 -
用JavaScript实现排序算法动画【第一期】冒泡排序
算法概述冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成主要参数平均时间复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性...原创 2020-03-23 11:55:41 · 1068 阅读 · 0 评论 -
Chrome的小恐龙被我“开挂”了,看我如何用一行代码让它拥有不死之身
个人网站:www.dzyong.top微信公众号:关注《前端筱园》,不错过每一篇推送作为一个开发人员,用到的最多的就是Chrome浏览器。当没有网的时候打开浏览器就会看到下面这个界面。当按下空格键键时,猛然发现,这竟然是一个游戏。作为一个程序员的我,如何忍受得了规规矩矩的去玩呢,如果给它一个不死之身,那岂不是可以一直快乐下去。那该从何下手呢,它的本质是一个网页,...原创 2020-03-17 16:06:05 · 15340 阅读 · 7 评论 -
用原生JS搞懂VUE的响应式原理,这篇文章就够了
在实现之前我们先了解下VUE的响应式是什么;它是Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。博主网站:www.dzyong.top微信公众号:《前端筱园》原理是什么VUE中实现响应式运用到了JavaScript中object的一个很重要的属性Object.defineProper...原创 2020-03-12 18:17:15 · 3194 阅读 · 8 评论 -
JavaScript 中比Object更强大的Map
Map对象保存键值对,并且能够记住键的原始插入顺序,最为主要的一点是可以以任意值作为键。语法new Map([iterable])iterable:可以是一个数组或者其他iterable对象,其元素为键值对(如:[[1: 'a'],[2: 'b']])。每个键值对都会被添加到Map中。当为null时会被当做undefined。let map = new Map([[ 1,...原创 2020-02-24 17:31:07 · 594 阅读 · 0 评论 -
ES6之数组的扩展(ES6对于数组的新增方法)
扩展运算符(...)扩展运算符(spread)是三个点(...),他如同rest参数的逆运算,将一个数组转为逗号分隔的参数序列console.log(...[1, 2, 3]) //1 2 3console.log(0, ...[1, 2, 3], 4) //0 1 2 3 4该运算主要用于函数调用function push(array. ...items){ ...原创 2018-11-12 16:31:58 · 892 阅读 · 0 评论 -
在ES6中引入了JavaScript的第7中基本数据类型你知道吗
概述ES5的对象名都是字符串,这很容易造成命名冲突。ES6引入了一种原始的数据类型Symbol,表示独一无二的值。它是JavaScript语言的第7中数据类型。Symbol值通过Symbol函数生成。也就是说属性名可以有两种类型:一种是原有的字符串,另一种就是新增的Symbol类型。let s = Symbol();typeof s //”symbol”注:Symbo...原创 2018-11-13 22:52:29 · 755 阅读 · 2 评论 -
ES6之对象的扩展(ES6对于对象的新增方法)
属性的简介表示法ES6允许在对象中只写属性名,不写属性值。这是,属性值等于属性名所代表的变量。function f(x, y){ return {x, y}};等价于 function f(x, y){ return {x: x, y: y}};·除了属性,方法也可以简写var o = {method() {.....}} 等价于 var o = {method: f...原创 2018-11-12 21:31:25 · 2902 阅读 · 0 评论 -
十分钟带你解读什么是Promise异步编程
Promise的含义Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理且更强大。Promise对象具有以下两个特点:对象的状态不受外界影响。Promise对象代表一个异步操作,有3中状态:Pending(进行中)、Fulfilled(已成功)和Rejected(已失败)。 一旦状态改变就不会再变,任何时候都可以得到这个结果。Promise也有一些缺...原创 2018-11-14 21:18:15 · 1855 阅读 · 0 评论 -
十分钟带你解读Generator函数的基本语法
简介基本概念 Generator函数是ES6提供的一种异步变成解决方案,语法行为与传统函数完全不同。Generator在形式上是一个普通函数,但是有两个特征:一是function命令与函数名之间有一个星号;二是函数体内部使用yield语句定义不同的内部状态。function* helloGenerator() { yield ‘hello’; yield...原创 2018-11-20 19:43:48 · 376 阅读 · 0 评论 -
10分钟带你熟悉ES6的代码规范
块级作用域let取代varES6提出了两个新的声明变量的命令:let和const。其中,let完全可以取代var,因为两者语义相同,而let没有副作用。 ‘use srict’if( true ) { console.log( x ); //ReferenceError let x = ‘hello’;}上面的代码如果用var代替let,那么consol...原创 2018-11-21 18:10:37 · 1228 阅读 · 0 评论 -
JavaScript设计模式(1)—— 面对对象的编程
原文出自于本人个人博客网站:https://www.dzyong.com(欢迎访问)本文链接地址: https://www.dzyong.com/#/ViewArticle/85(转载请标注来源)设计模式系列博客:JavaScript设计模式系列目录(持续更新中)面对对象编程是一种程序设计范型。它将对象作为程序的基本单元,将程序和数据封装其中,以提高程序的重用性、灵活性和扩展性。...原创 2019-08-21 22:01:25 · 379 阅读 · 0 评论 -
JavaScript设计模式(2)—— 多种继承方式的实现及原理
原文出自于本人个人博客网站:https://www.dzyong.com(欢迎访问)本文链接地址: https://www.dzyong.com/#/ViewArticle/89(转载请标注来源)设计模式系列博客:JavaScript设计模式系列目录(持续更新中)什么是继承继承是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别...原创 2019-08-27 20:42:03 · 425 阅读 · 0 评论 -
JavaScript设计模式(5)—— 结构型设计模式【1】
原文出自于本人个人博客网站:https://www.dzyong.com(欢迎访问)转载请注明来源: 邓占勇的个人博客 - 《JavaScript设计模式(5)—— 结构型设计模式【1】》本文链接地址: https://www.dzyong.com/#/ViewArticle/90设计模式系列博客:JavaScript设计模式系列目录(持续更新中)结构型设计模式关注于...原创 2019-09-18 13:47:37 · 525 阅读 · 0 评论 -
布尔运算符
一、概述布尔运算符用于将表达式转为布尔值,一共包含四个运算符。 取反运算符:! 且运算符:&& 或运算符:|| 三元运算符:?: 二、具体描述1.取反运算符(!)取反运算符是一个感叹号,用于将布尔值变为相反值,即true变成false,false变成true。对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取...原创 2018-10-11 09:21:21 · 2346 阅读 · 0 评论