JavaScript作为一种编程语言,经历了多次发展与演变,以下是其主要历史里程碑: 1.诞生与早期发展(1995-1999) 1995年:JavaScript由BrendanEich在网景公司(Netscape)发明,最初被称为Mocha,后来改名为LiveScript,最终定名为JavaScript。这种命名是为了利用当时Java语言的流行。 1996年:NetscapeNavigator2.0中首次包含了JavaScript。微软很快注意到JavaScript的潜力,并在其InternetExplorer3.0中推出了JScript,这是JavaScript的一个变体。 1997年:E...
在现代应用开发中,数据处理的效率和资源管理尤为重要。NodeJS作为一种高效的JavaScript运行时环境,通过其强大的流(Stream)功能,提供了处理大规模数据的便捷方式。流式数据处理不仅能够优化内存使用,还可以提高数据处理的实时性和效率。下文将介绍NodeJS中的流概念、流的类型以及如何利用流来进行数据传输和处理。 流的基本概念 流式数据的特点是将数据分成一个一个的chunk,每次操作只针对其中的一小部分。 因此流式数据的读写操作不需要将整个数据保存在内存中(处理完就丢掉)。 常用于视频这种包含大量数据的应用场景,也可以在时间和空间角度上更有效地处理数据: 时间:从开始读到流就可以处...
NodeJS的基本组成 NodeJS是JavaScript运行时,主要由V8引擎和libuv组成,其中V8使用javascript和c编写,而libuv是纯c编写的,二者都是开源的。 V8引擎用于将javascript代码转换为计算机可以执行的机器码; 而libuv则负责完成异步IO、与操作系统交互(文件系统和网络模块)、事件循环、线程池等等。 Node还有其它模块: http-parser:用于解析http; c-ares:用于处理DNS请求; OpenSSL:用于加密和安全编程; zlib:与压缩有关。 总而言之,NodeJS相当于Javascript和操作系统之间的一个抽象层,为开...
今天按照原计划应该已经将实战视频,学习完毕。总结需要总结,学习,复习的地方有,主页面的设计,前后端的连接,图标的引用,页面的布局,以及一些基础函数的认识和运用。通过视频还了解到一些点击栏,状态栏的设置。刚学完可能进度太快导致记忆不牢固,所以利用休闲时间可以过一遍学习的内容。把基础框架整理写下俩来,实在记不住也无伤大雅,慢慢来。总的来说把自己看懂记忆模糊的部分过一遍。
Promise是JS中用于处理异步操作的方法,支持链式调用从而解决了地狱回调问题。 Promise的基础用法 状态 promise有三种状态: Pending(待定):初始状态,既不是成功也不是失败。 Fulfilled(已成功):操作成功完成。 Rejected(已失败):操作失败。 constpromise=newPromise((resolve,reject)=>{ //异步操作 if(成功){ resolve(value); }else{ reject(error); } }); 实例方法 Promise有三个实例方法,分别是then,catch,和finally。 t...
一、简介 该JS为省市区选择插件,当前最新版本为1.0,插件中地区数据更新于2024年07月02日,插件不依赖第三方JS,可独立使用。 github地址:https://github.com/TammyViola/cityAreaSelect 二、CSS和JS引用 PS:样式可根据项目实际情况进行调整 <linkhref="./dist/css/cityAreaSelect.css"rel="stylesheet"type="text/css"/> ... <scripttype="text/javascript"src="./dist/js/cit...
Babel是什么 Babel是一个通用的多功能的JavaScript编译器。主要用于将采用ECMAScript2015+语法编写的代码转换为向后兼容的JavaScript语法,以便能够运行在当前和旧版本的浏览器或其他环境中。 常见的用途有: 语法转换 通过Polyfill方式在目标环境中添加缺失的功能(通过引入第三方polyfill模块,例如core-js) 源码转换(codemods) 例如我们在React经常使用JSX语法,由于这不是JS原生语法,所以不能直接被JS引擎编译执行。在代码被执行之前,需要使用编译器进行转译,转换成JS代码。 Babel的工作原理 从代码到代码的过程,也是...
JavaScript诞生于1995年,一开始只是用于编写简单的脚本。 随着前端开发任务越来越复杂,JavaScript代码也越来越复杂,全局变量冲突、依赖管理混乱等问题变得十分突出,模块化成为一个必不可少的功能。 模块化发展史与方案对比 YUI与JQuery 2006年,雅虎开源了组件库YUILibrary,使用类似于Java的命名空间的方式来管理模块: YUI.util.module.doSomthing(); 同年,JQuery发布,使用IIFE和闭包的方法创建私有作用域,避免全局变量污染,这种管理模块的方法流行了一段时间。 (function(root){ //模块内部变量和函数 va...
在JavaScript中,对象是一种非常重要且灵活的数据结构,用于存储多个值(属性)和方法(函数) 对象的创建和拷贝是日常开发中经常涉及的操作,对于业务逻辑的准确实现有着重要的作用 本文将简要概括JavaScript中对象的创建和拷贝方式,都是一些非常基础的知识,大家看个乐就好 目录 对象的作用 创建对象 对象字面量 使用newObject()方法 构造函数 Object.create() 类(ES6+) 对象的拷贝 深拷贝与浅拷贝的区别 如何实现深拷贝 展开运算符是深拷贝还是浅拷贝 补充知识点:JS中有哪些数据类型? 面试问题合集 对象的作用 JavaScript中的对象是一种复...
JavaScript共有8种数据类型,可以分为两类:基本数据类型和复杂数据类型。 1.基本数据类型(PrimitiveTypes) 这些数据类型是不可变的,意味着一旦创建了它们的值,就无法更改。 Number:用于表示整数和浮点数。例如:42,3.14,-7 BigInt:用于表示任意精度的大整数。例如:1234567890123456789012345678901234567890n String:用于表示文本数据(字符串)。例如:"Hello,World!",'JavaScript' Boolean:只有两个值:true和false。用于逻辑判断。 Undefined:当一个变量被声明但...
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习🤭 题目 题目一:二维数组中的查找:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 functionsortList(array,num){ //解法一.循环indexOf查询有返回下标,没有则返回-1 //for(leti=0;i<array.length;i){ //if(array[i].index...
转自简书,原文地址,本文介绍window.crypto关于RSA方面的API。cryptoAPI支持常用的rsa、aes加解密,这边介绍rsa的应用。 浏览器兼容性 window.crypto需要chrome37版本,ie11,safari11才支持全部API而基本的加解密在safari7就可以。 生成公私钥 crypto.subtle.generateKey(algorithm,extractable,keyUsages),其中:1.algorithm参数根据不同算法填入对应的参数对,rsa需要填入RsaHashedKeyGenParams对象包含有: name,可选RSASSA-PKCS...
今天依旧是按照计划看视频!主要学习的内容是通过手机,微信,QQ等方式发送验证码,进行页面登陆,并且让其中的一些数据与后端连接。总体来说有点蒙圈,看不懂,希望通过之后的实战练习可以巩固一下。其中运用的很多程序语言有点难以理解,感觉如果上手的话!依旧仅限于复制粘贴。看不懂某些逻辑语言。后续自己上手操作一下。以下是视频中所设计的页面。 条件和时间允许的情况下建议一边看一边做,不会也不要由于记下来实战解决也可以。
电梯导航也被称为锚点导航,当点击锚点元素时,页面内相应标记的元素滚动到视口。而且页面内元素滚动时相应锚点也会高亮。电梯导航一般把锚点放在左右两侧,类似电梯一样。常见的电梯导航效果如下,比如一些官方文档中: 之前可能会用getBoundingClientRect()判断元素是否在视口中来实现类似效果,但现在有更方便的方法了,那就是IntersectionObserver+scrollIntoView,轻松实现电梯导航。 scrollIntoView()介绍 scrollIntoView() 方法会滚动元素的父容器,使元素出现在可视区域。默认是立即滚动,没有动画效果。 如果要添加动画...
今天遇到一个问题,在使用codemirror对两条文本内容进行对比时,有同事反馈在它的电脑上会显示成:前面一半是正常显示差异内容,而后面就变成了全部是新增的。 像这样: 预期的对比结果是这样: 我们观察用于对比的两个文本,实际上上面的文本都是去掉后面括号中的内容,对比结果不应该表现成全部删除全部新增。 于是我开始在本地尝试复现,很不幸,有时候可以,有时候不行 接着我开始查找codemirror使用的对比库,diff-match-patch,这个库的对比方法的构造函数如下: / Classcontainingthediff,matchandpatchmethods. @constructor /...
1import{Box,Matrix3,Vector2}from'./Utils.js'; 2import{Shape,ShapeUtils,SplineCurve}from'./TwoUtils.js'; 3 4constBlendEquationAdd=[0,-1]; 5 6constBlendDefault=[6,7,-1,-1], 7BlendAdd=[1,1,-1,-1], 8BlendSub=[0,3,0,1], 9BlendMultiply=[0,2,0,6]; 10 11constModePoints="POINTS", 12ModeLineStrip="LINE_ST...
随着互联网的发展,前后端分离的架构在现代web开发中越来越流行。然而,数据安全性始终是一个重要的问题。在前后端分离的架构中,数据在前端和后端之间的传输和处理过程中需要采取有效的安全措施,以确保数据的机密性、完整性和可用性。本文将介绍一些常见的方法和最佳实践,以帮助确保前后端数据的安全性。 1.HTTPS加密 为什么使用HTTPS HTTPS(HyperTextTransferProtocolSecure)是HTTP协议的加密版本,它通过SSL/TLS加密数据传输,防止数据在传输过程中被窃取或篡改。使用HTTPS是保护数据传输安全的第一步。 如何实现HTTPS 获取SSL/TLS...
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路 前序遍历(根左右)和中序遍历(左根右) 思路就是使用递归把他分化为每个小的二叉树,然后都根据前序遍历(根左右)和中序遍历(左根右)的特性,前序的首元素就是根,然后再找到中序的根,根的左边就是左右边就是右,再进行递归,直到前序为null的时候...
先来看结果图(转.gif掉帧了): 完整源码分享网址:https://share.weiyun.com/Vpkp5KP3 1首先初始化用到的所有图片: 1constimages=[ 2"./img/girls.jpg", 3"./img/ball.png", 4"./img/water.jpg", 5"./img/spriteX8.png", 6 7//8张雪碧图,在main()中合成一张图 8"./img/sprites/0.png", 9"./img/sprites/1.png", 10"./img/...
01. Dart介绍 02. Dart开发环境搭建和开发工具的配置 03. Dart语言的基础语法 04. Dart数据类型 05. Dart运算符 06. Dart条件表达式 07. Dart类型转换 08. Dart循环语句 09. Dartbreak和continue语句 10. Dart集合类型ListsetMap详解以及相关循环语句 11. Dart函数、箭头函数、匿名函数、立即执行函数及闭包讲解 12. Dart中的对象类 13. Dart中的类静态成...