回望Javascript:一些Js基础

Cesium和Three.js结合的5个方案 CesiumJS是一个开源、免费的三维地图开发框架,Three.js是一个也开源、免费的3D渲染框架,两者都是基于WebGL技术、使用JavaScript开发的Web前端三维可视化框架,在国内外应用非常广泛。本篇我们来聊聊Cesium+Three.js的几种方案,结合实际应用效果来分析各个方案的优点和缺点,以便项目中快速做出技术路线和方案选择。 1、Cesium和Three.js简单对比 Cesium可视化内容以地理空间数据为主,如卫星影像、地形、城市级三维模型等,数据量和空间范围都非常大,而对精度要求更 阅读详情

1.JS访问内部数据变量的方式与哪些以及使用场景?

读取和设置对象属性的方式主要有两种:

(.) 方法: obj.attr
([])方法: obj[attr]

.语法是我们平时经常使用的方式,

[]的方式通常再以下场景下使用:

  • 属性名包含特殊字符:- 空格等
  • 变量名不确定([]内可以直接加一个变量,或者一个字符串)

使用方式:

let p={}
  let address='address'
  p.name='name'
  p['age']=12
  p[address]='安静'
  console.log(p)

2. Javascript函数调用的方式有哪四种?

  • 直接调用函数(通过window)
  • 通过对象调用
  • new 调用(使用构造函数调用函数)
  • 通过bind/call/apply调用

3.new操作符的实现原理

要想知道new操作符的原理,就得先了解new的作用是什么,我们都知道,一般将我们的构造函数实例化为对象时就要使用new操作符。

要想真正掌握并手写一个new,你需要掌握以下知识点:原型与原型链以及this绑定相关知识。

其实new的内部流程十分简单,大概就是这么几个步骤:

  1. 创建一个新的对象obj
  2. 将对象的隐式原型指向构造函数的原型对象
  3. 通过apply调用构造函数(改变this指向到obj)
  4. 返回obj,如果构造函数有返回值还需判断,如果返回值为引用类型则返回引用类型对象,如果为原始类型就返回obj

手写:

  function MyNew() {
    // 获取到形参列表,拿到构造函数以及对应参数
    let [ArgFun, ...arg] = [...arguments]
    // 定义一个空的对象
    let obj = {};
    // 原型指向
    obj.__proto__ = ArgFun.prototype;
    // 设置this指向
    let tartgetObj = ArgFun.apply(obj, arg)
    // 通过apply调用构造函数(改变this指向到obj)
    return tartgetObj instanceof Object == true ? tartgetObj : obj
  }

使用:

  function Person(name, age) {
    this.name = name;
    this.age = age;
    console.log('执行')
    return '12'
  }

  let zhangsan = MyNew(Person, '张三', 12)
  console.log(zhangsan)

4.数组有哪些原生的方法

  1. pop()和push()尾部操作,删除和增加
  2. shift()和unshift()首部操作,删除和增加
  3. sort()排序,里面跟一个函数,带两个参数,返回值是两参数相减,正序详见为升序,反序相减为降序,返回值为数组,会改变数组
  4. reserve()反转数组,也返回数组,会改变数组
  5. concat(),拼接两个数组,返回拼接后的数组,不改变原数组
  6. slice(),截取数组的一部分并返回,不影响原数组
  7. splice(),可以删除或者替换或者插入数组中的某一个或多个元素,返回数组,改变原数组
  8. filter()函数,过滤数组,返回过滤后的数组,不改变原数组
  9. map()函数,遍历数组,不改变原数组
  10. reduce(),汇总,可以操作每一个数组元素,参数为一个函数和一个默认值,函数有两个参数,分别代表上一次计算的结果个本次的值,默认值就是第一次循环函数第一个参数的值。

5.什么是DOM和BOM

回答这个问题可以将ECMAScript也纳入。

JavaScript是由三部分构成的,分别是ECMAScript、DOM和BOM。它们的功能和所负责的任务也是不一样的:

ECMAScript:规定了语言的基础,比如语法、关键字、操作符等等,规定了语言的标准,比如ES5,ES6等

DOM:文档对象模型,提供了访问和操作网页内容的方法和接口。DOM把整个页面映射成立一个多层节点的结构,每个节点被视为一个对象,最终形成一个DOM树。我们要想获取某个节点的对象,只需要一层一层的拿到对象再去操作就可以。

BOM:浏览器对象模型,提供了与浏览器之间的的方法和接口。BOM的核心是window对象。window下面还提供了一些操作浏览器的api,比如history属性,navigator和location对象等。

注:window有一个双重身份,它既是js操作浏览器窗口的一个接口,也是全局的global对象,可以操作网页中任何一个变量对象等

6.对类数组(伪数组)的的理解,如何转换为数组

类数组就是伪数组,是一种类似数组的对象,拥有length属性和若干索引属性的对象,但是不可以调用数组的方法

常见的类数组对象有argument和DOM方法返回的结果。

我们常见的将类数组转换为数组的方法有这些:

1.通过call调用数组的slice方法:

Array.prototype.slice.call(arrayLike);

2.通过call调用数组的splice方法:

Array.prototype.splice.call(arrayLike, 0);

3.通过call调用数组等concat方法

Array.prototype.splice.call(arrayLike, 0)

4.通过 Array.from 方法来实现转换

Array.from(arrayLike);

5.也可以使用es6扩展运算符

7.为什么要使用尾调用?

首先尾调用简单来说就是在一个函数执行结束时,调用另一个函数。我们知道函数的执行是基于执行栈的,所以我们当前函数的最后一步出栈,然后再去调用另外一个函数。再将这个函数入栈,这样做的好处是我们不用保留当前函数的执行栈,从而节省了内存,这就是尾调用优化

8.for…in和for…of的区别

  1. for in 获取到的是对象的键名,for of获取到的是对象的键值
  2. for in会遍历对象的原型链,性能较差不推荐使用,而for of只遍历当前对象不会遍历原型链
  3. 对于数组的遍历,for in会返回数组中所有可枚举的属性,for of会返回数组线标的对应值。

总结:for in主要是用于遍历对象,不适用于遍历数组,for of 循环可以遍历对象、数组、类数组对象等。

9.对Ajax的理解,实现一个Ajax请求

指的是JavaScript的异步通信,异步请求数据的技术,从服务器获取到json数据,再将其更新到整个页面,并且它不会刷新整个页面。这也是Ajax最大的优点。

Ajax的核心是XmlHttpRequest对象,JavaScript可以使用XmlHttpRequest对象发出请求并且处理响应而不阻塞用户。

**工作原理:**我认为Ajax就是浏览器与服务器 之间的一个中间层,客户端发送请求,请求交给xhr对象,xhr把请求交给服务器,服务器进行业务处理,服务器又将响应的数据交给xhr,再有JavaScript写入页面。

创建Ajax请求的步骤:

  1. 创建XmlHttpRequest对象
  2. 创建一个Http请求(可以设置请求方式,请求地址,是否异步)
  3. 添加一些信息和监听函数(比如添加请求头信息和监听xhr的状态)
  4. 发送请求(post时可传入参数)

我们下面使用回调函数的方式来封装一个网络请求的函数:

  function getData(url, hander) {
    let xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.onreadystatechange = function () {
      if (this.readyState !== 4) return
      if (this.status == 200) {
        hander(this.response)
      } else {
        console.error(this.statusText)
      }
    }
    xhr.onerror = function () {
      console.log(this.statusText)
    }
    xhr.setRequestHeader("Accept", "application/json")
    xhr.send();
  }

使用方式:

	getData('http://httpbin.org/get', (data) => {
    console.log(data)
  })

还可以使用promise封装:

function UseP(url) {
    return new Promise((resolve, reject) => {
      let xhr = new XMLHttpRequest();
      xhr.open('GET', url, true);
      xhr.onreadystatechange = function () {
        if (this.readyState != 4) return
        if (this.status == 200) {
          resolve(this.response)
        } else {
          reject(this.statusText)
        }
      }
      xhr.onerror = function () {
        reject(this.statusText)
      }
      xhr.responseType = 'json'
      xhr.setRequestHeader('Accept', 'application/json')
      xhr.send()
    })
  }

使用:

 UseP('http://httpbin.org/get').then((res) => {
    console.log(res)
  }).catch((err) => {
    console.log(err)
  })

10.Ajax、axios和fetch的区别

Ajax:

是一种无需重新加载网页的的情况下,能够更新部分网页的技术。通过后台与服务器进行少量的数据交换。Ajax可以实现网页的异步过呢更新操作。传统的网页如果需要更新内容需要重新加载整个网页。

Ajax有以下缺点:

  1. 本身是针对MVC编程,不符合前端MVVM的浪潮
  2. 基于原生XHR开发,而XHR本身的架构不清晰
  3. 不符合关注分离的原则
  4. 配置和调用比较混乱,而且基于事件的异步模型不友好

axios:

用于浏览器和nodejs的HTTP客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本。有以下特则:

  1. 从浏览器端发起XMLHttpRequest请求
  2. node端发起http请求
  3. 支持Promise API
  4. 客户端支持防止CSRF
  5. 提供了一些并发请求的接口
  6. 拦截请求和响应
  7. 转换请求和响应数据
  8. 取消请求
  9. 自动转为JSON格式

PS:防止CSRF:就是让你的每个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,这样,后台就可以轻松辨别出这个请求是否是用户在假冒网站上的误导输入,从而采取正确的策略。

fetch:

Ajax的替代品。基于Promise设计。Fetch的代码结构比起ajax简单多了,参数有点像jQuery ajax。但是,一定记住fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。

fetch的优点:

  • 语法简洁,更加语义化
  • 基于标准的Promise实现,支持async/await
  • 更加底层,提供的API丰富
  • 脱离了XHR

缺点:

  • 只对网络请求报错,对服务器返回的状态码不报错
  • fetch默认不会带cookie,需要添加配置项:fetch(url, {credentials: ‘include’})
  • fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费
  • fetch没有办法原生监测请求的进度,而XHR可以

11.Javascript脚本延迟加载的方法有哪些?

延迟加载就是等页面加载完成之后再去加载JavaScript 文件,js延迟加载有助于提高页面加载的速度

一般有以下几种方式:

  1. defer属性:给js脚本添加defer属性,这个属性会让脚本的加载和文档的解析同步执行,完后再文档解析完成之后再去执行这个脚本文件,这样的话可以使我们的页面的渲染不被阻塞。多个设置了defer属性的脚本按照规范来说最后是顺序执行的,但是在一些浏览器中可能不是这样(关键字:同步,顺序执行)
  2. async属性:给js脚本添加async属性,这个属性会让脚本的加载和文档的解析异步执行,不会阻塞页面的解析过程,但是当脚本加载完成之后立即执行js脚本,这个时候如果文档没有解析完成的话同样会阻塞。多个async属性的脚本的顺序是不可预测的,一般不会按照代码的顺序依次执行。(关键字:异步,可能会阻塞,乱序)
  3. 动态创建DOM的方式:动态创建DOM标签的方式,可以对文档的加载事件进行监听,当文档加载完成后再动态的创建script标签来引入js脚本
  4. 使用setTimeout延迟:设置一个定时器来延迟加载JS脚本文件
  5. 将JS文件最后加载:将js脚本放在文档底部,使js脚本尽可能的再最后来加载执行

12.CommonJS和ES6模块的异同点?

区别:

  • CommonJS是对模块的浅拷贝,ES6module是对模块的引用;即ES6不能改变值,指针的指向不能改变,相当于const
  • import接口时read-only(只读状态),不能修改其变量值。即不能修改其变量的地址指向,但是可以改变变量内部的值。可以对CommonJS重新赋值(改变指针指向)

共同点:

CommonJS和ES6 Module都可以对引入的对象进行赋值,即对对象内部属性的值进行改变

reserveLoad.js.zip 最特色的功能:可以对JS脚本设置多个备用加载地址! 目前用于AngularJS中文社区:jQuery.js和angular.js默认从Google CDN获取,如果连接失败,则切换到本地服务器获取。 reserveLoad.js 功能说明: 1.备用多网址加载JS; 2.按顺序同步加载JS; 3.同时异步加载JS/CSS; 4.所有JS加载完成后运行回调函数; 5.如果有一个JS加载失败,则将失败的JS地址传给回调函数; 6.目前IE7以上运行良好; 核心request函数copy自seajs! 可以直接嵌入html,适用于小项目,大项目请主动使用seajs 标签:reserveLoad 立即下载

相关推荐

Cheat Engine实战:多级指针逆向破解游戏内存的5个关键步骤(附C++模拟代码)

本文详细解析了使用Cheat Engine进行多级指针逆向破解游戏内存的完整流程。通过5个关键步骤,从定位动态地址到逐层追踪指针链,最终构建稳定指针路径。文章结合C++模拟代码,深入剖析了指针链的底层汇编原理,并提供了高级排查技巧,帮助读者掌握逆向工程中的核心内存追踪技术。

weixin_29239279的博客 306

js中对数组的排序方法

js中对数组的排序方法

xhdjdje的博客 1187

【图像压缩】超先验模型 《VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR》

绪论 2015年,第一个端到端图像编码方案被提出。基于深度学习的端到端图像压缩主要分为两类,一类是基于RNN的方法,一类是基于CNN的方法。本文对基于CNN的方法

hahalidaxin的专栏 1万+

javascript数组中的常用方法

javascript数组中的常用方法(菜鸟一个,按照自己的理解做的笔记,欢迎大神给我补充) 1、push在数组的最后添加一个元素或多个元素,并返回数组的长度。 push会改变原数组。 2、pop删除数组的最后一个元素并返回删除的元素。 pop会改变原数组。 3、unshift在数组的头部添加一个或多个元素,并返回数组的新长度。 unshift会改变原数组。 4、shift删除数组的第一个元素并返回删除的元素。 shift会改变原...

weixin_50161578的博客 1339

GD32F450以太网(1):ETH 外设接口简介

GD32F450以太网ETH MAC外设接口简介

Zhichao_Zhang的博客 1万+

Circos图审美拯救计划:用TBtools复刻Nature级共线性分析图谱

本文针对Circos图在共线性分析中的审美提升问题,提供了一套基于TBtools的完整优化方案。通过构建和谐的色彩体系、精细控制信息层布局以及模仿顶刊构图逻辑,详细讲解了如何从配色、透明度、标签显示到高级参数设置,将默认图表升级为具有高级学术美感的Nature级图谱,助力研究者提升论文图表质量。

cherry的博客 911

JS笔记:Array方法整理

一、增加 1.push() 语法:arrayObject.push(newele1,newele2,…,neweleX); 功能:将push中的参数添加到arrayObject的尾部 返回值:把指定的值添加到数组后的新长度 例: var arr = [8,7,5,2,8,4,3]; var arrLen = arr.push("u","r","g"); console.log...

weixin_30508309的博客 183

海康威视摄像头网线连接笔记本电脑,客户端提示:1连接设备失败。设备不在线或网络原因引起的连接超时等。(HCNetSDK.dll[7].)解决方案

1.环境 电脑:联想笔记本电脑(win10系统) 摄像头:海康威视DS-2CD3T20D-i5,4mm 连接方式:直接用网线将摄像头和摄像头连接 2.问题: 客户端出现如下提示: 3. 解决流程: 1.确认网线是否有问题:我的网线指示灯常亮,并且设备能够被搜索到,只是一直显示离线 2.按照网上教程直接配置摄像头的ip地址与电脑同一网段:登录失败。 错误码为 HCNetSDK.dll[7].(连接设备失败。设备不在【海康威视吧】_百度贴吧 失败了,没有反应 3.查看有线网卡的地

weixin_48911487的博客 3万+

Sort()函数使用+如何打乱数组(洗牌算法)

srot()如果不带参数,是将按字母顺序对数组中的元素进行排序,也就是是按照字符编码的顺序进行排序。 var arr1 = ['a', 'd', 'c', 'b']; arr.sort(); //['a', 'b', 'c', 'd'] var arr2 = [10, 5, 40, 25, 100, 1]; arr2.sort(); //[1, 10 ,100, 25, 40, 5] ...

微光的博客 926

信道估计之MMSE算法

信道估计之MMSE算法前言MMSE估计的原理总结 前言        前篇分析了LS信道估计算法,也说明了由于没有考虑SNR的影响,所以LS算法不适合在低信噪比的情况下使用。本篇来学习信道估计的另外一种常用的算法–MMSE。        为什么说LS没有考虑噪声大小的情况呢,因为LS算法使用的是实际观测量与估计观测量的误差,这并不能精确的代表估计量的真值与估计值的误

大白的博客 2万+

迟滞电压比较器电路的原理与计算

迟滞电压比较器是一种具有双阈值特性的电路,通过正反馈机制实现抗噪声干扰功能。文章详细分析了其工作原理,包括同相型和反相型两种结构的电压阈值计算与电阻设计方法,并提供了已知门限求电阻和已知电阻求门限的推导公式。工程应用中需注意输出类型匹配、电阻取值范围、噪声裕量设计等问题。该比较器在信号处理、波形转换等场景中具有重要应用价值,设计时需综合考虑供电电压、参考电压和噪声特性等因素。

硬核科技 2680

javascript函数(5)

Js函数的定义 函数:封装了一段可重复执行调用的代码块。 目的:可以让大量代码重复使用 求和 函数的命名是动词,而变量名的命名是名词 function getSum(num1, num2) { var sum = 0; for (var i = num1; i <= num2; i++) { sum = sum + i; } return sum

JNPF快速开发平台的博客 862

STM32入门教程:水位传感器应用

这是一个简单的STM32水位检测系统的入门教程。希望通过学习本教程,您能对STM32微控制器的基本应用有更深入的了解,并能成功构建一个水位检测系统。如果您需要更详细的代码实例和教程,请参考相关的STM32开发手册和应用笔记。STM32是一款功能丰富且广泛应用于嵌入式系统的微控制器系列。在本教程中,我们将介绍如何使用STM32微控制器和水位传感器构建一个水位检测系统。

wx_linying1029的博客 533

探索Node.js的过去:mysql-native,JavaScript编写的MySQL客户端

探索Node.js的过去:mysql-native,JavaScript编写的MySQL客户端 在开源世界里,总有些项目虽已废弃,但它们的历史价值和技术启发仍然值得我们回望。今天我们要探索的是mysql-native,一个曾经活跃在Node.js生态中的全JavaScript编写的MySQL客户端库。 项目介绍 在Node.js的早年,mysql-native是连接数据库的得力助手之一。虽然目前已...

gitblog_00535的博客 752

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

回望Javascript:数据类型相关

1. JavaScript有哪些数据类型,它们的区别? Javascript有八种数据类型:Number,String,undefined,null,Boolean,Symbol,BigInt,Object。 其中Symbol和BigInt是ES6中新增的数据类型: symbol代表创建后独一无二且不可变的数据类型,主要是为了解决可能出现的全局变量冲突的问题 BigInt是一种数字类型的数据,它可以表示任意精度格式的整数,适用BigInt可以安全的存储和操作大整数,即使这个数已经超过了Number能够表示

M_Edison的博客 653

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

回望Javascript:原型与原型链

文章目录1.原型对象上的constructor指向哪里2.显示原型与隐式原型3.谈一谈原型与原型链4.Function,Object与原型的关系5.原型链指向题目6.探索instanceOf(手写instanceof)7.两道面试题 1.原型对象上的constructor指向哪里 每个函数都有一个prototype属性,这是一个引用,指向了函数的原型对象,每个原型对象都有一个constructor属性,这个属性指向函数对象本身。 验证一下: function Fun(params) {} conso

M_Edison的博客 390

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

回望Javascript:ES6

1.let,var ,const的区别 回答这个问题要从一下几个方向去回答: 1.块级作用域:let和const具有块级作用域,var不存在块级作用域的概念。块级作用域解决了ES5的两个问题:内层变量可能覆盖外层变量和循环时泄露循环变量为全局变量 2.变量提升:var 存在变量提升,let和const不存在变量提升(只能在声明后使用),涉及到上下文的概念 3.给全局添加属性:在全局window下,var声明的变量是全局变量,并将变量添加到全局对象的属性上,而let和const不会。 4.重复声明:var可以

M_Edison的博客 287

关于Vue.js 学习之旅:收获、心得与实战技能

初涉 Vue.js 便领略其双向数据绑定优势,大幅简化开发流程,如实现实时时钟功能等。

xxxi12的博客 1445

python解析js_python解析js

广告关闭回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你!首先要明晰一点,json标准中,key是必须要带引号的,所以标准json模块解析不带引号的key的 json就会抛错不过有一些lib可以帮我们解析如:demjson(链接)>>>> import demjson>>>demjson.dec...

weixin_39714835的博客 1443

霸权已定,但非唯一:2026年TypeScript与JavaScript的“共生终局”

TypeScript不会成为前端的“唯一”标准,因为JavaScript是Web的血液,只要浏览器还在,JS就永远流淌其中。但TypeScript确实成为了前端工程的“唯一”通用语言。它定义了2026年及以后我们编写、思考和协作的方式。在这个时代,JavaScript是机器执行的终点,而TypeScript是人类智慧的起点。所以,别问“TS是否会替代JS”,而要问自己:“我是否已经具备了在类型安全的约束下,依然能写出灵活、优雅代码的能力?”这,才是2026年前端开发者的核心竞争力。

2603_94941239的博客 967

回望Javascript:执行上下文/作用域链/闭包

文章目录1.执行上下文2.执行上下文栈3.作用域4.作用域链5.闭包6.内存溢出与内存泄露 1.执行上下文 执行上下文是用来预处理JS代码的 执行上下文栈是用来管理执行上下文的 JS代码执行时它的代码位置分为一个全局代码和函数内的代码,因此执行上下文分为全局执行上下文和函数执行上下文, 全局执行上下文 在执行全局代码前会创建一个全局执行上下文环境将window将其确定为全局执行上下文;并且对全局数据进行一个预处理,这里面就包括: var 定义的全局变量设为undefined,并且将其添加为window

M_Edison的博客 485

Geddy.js:Node.js中被低估的开箱即用MVC框架

MVC架构是Web开发中结构化组织代码的基础范式,其核心价值在于分离关注点、提升可维护性与团队协作效率。在Node.js生态中,多数框架如Express强调灵活性,却将路由、模型、认证等关键连接点交由开发者自行决策,导致初期配置成本高、结构易失范。Geddy.js反其道而行之,以‘约定优于配置’为原则,内置Passport.js身份验证、geddy-model ORM、EJS模板及RESTful CLI生成器,将MVC从概念落地为可执行的工程实践。它不追逐前沿语法或分布式架构,而是专注解决中小团队快速交付单

weixin_30797199的博客 347

联系历史发展轨迹,如何理解HTML、JavaScript和CSS这三者之间的关系?

网页开发由HTML、CSS和JavaScript三大基础技术构成,分别负责结构、样式和行为。HTML诞生于1991年,专注于信息标记;CSS于1996年推出,实现样式与内容的分离;JavaScript开发于1995年,为网页添加动态功能。三者在现代开发中通过组件化方式协同工作,共同构建了丰富多彩的Web体验。理解这三者的分工协作关系,是学习前端开发的重要基础。

m0_69608622的博客 1298

JavaScript 我理解的闭包:概念和基础使用

能够有权限访问另一个函数作用域的变量的函数,就可以称之为闭包 函数在当前词法环境之外执行 创建闭包就是在一个函数中创建另一个函数

木子聊前端 225

JavaScript在Web开发中的框架演进

回望这段演进史,从操作DOM的“术”到管理数据状态的“道”,从解决兼容性的工具到塑造开发思维的平台,JavaScript框架的竞争从未停止。作为一名开发者,我们能做的就是保持好奇,拥抱变化,因为下一站,永远会更精彩。它的核心是“直接操作DOM”,当页面状态变得繁多且相互依赖时,数据如何同步到视图,以及视图的反馈如何更新数据,就成了一个“面条代码”式的灾难。构建工具驱动的框架:以Vite为代表的新一代构建工具,利用ES Modules的特性,实现了秒级的热更新和极速的打包,其理念正在反向塑造框架的设计。

2509_93948592的博客 346
上一篇: 回望Javascript:数据类型相关
下一篇: 回望Javascript:ES6
小牲口online
博客等级 码龄8年 116粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值