01、three.js 的基础使用。 安装:npm install --save three为了真正能够让你的场景借助 three.js 来进行显示,我们需要以下几个对象:场景(scene)、相机(camera)和渲染器(renderer),这样我们就能透过摄像机渲染出场景。我们现在建立了场景、相机和渲染器。three.js 里有几种不同的相机,在这里,我们使用的是 PerspectiveCamera(透视摄像机)。第一个参数是视野角度(FOV)。视野角度就是无论在什么时候,你所能在显示器上看到的场景的范围,它的单位是角度(与弧度区分开)
TypeScript 装饰器的理解?应用场景 后面的使用场景中,借助装饰器的特性,除了提高可读性之后,针对已经存在的类,可以通过装饰器的特性,在不改变原有代码情况下,对原来功能进行扩展。装饰器是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上。求值后必须也是一个函数,它会在运行时被调用,被装饰的声明信息做为参数传入。上述可以看到,当装饰器作为修饰类的时候,会把构造器传递进去。同样的,本质也不是什么高大上的结构,就是一个普通的函数,的三个参数,如果是类的属性,则没有传递第三个参数。是一个实验性特性,若要使用,需要在。
vue3 hook的理解?如何封装一个hook?。 Vue3 官方文档是这样定义组合式函数的。,一个利用 Vue 的组合式 API 来封装和复用具有状态逻辑的函数。在开发中,我们经常会发现一些可以重复利用的代码段,于是我们将其封装成函数以供调用。这类函数包括工具函数,但是又不止工具函数,因为我们可能也会封装一些重复的业务逻辑。以往,在前端原生开发中,我们封装的这些函数都是“无状态”的。
Loader和Plugin的区别?编写Loader,Plugin的思路。 事件发生时,代表源文件的转换和组装已经完成,可以读取到最终将输出的资源、代码块、模块及其依赖,并且可以修改输出资源的内容。基于发布订阅模式,在运行的生命周期中会广播出许多事件,插件通过监听这些事件,就可以在特定的阶段执行自己的插件任务。,实质是一个转换器,将A文件进行编译形成B文件,操作的是文件,比如将。函数中有异步操作或同步操作,异步操作通过。的过程中,保持功能单一,避免做多种功能。运行的生命周期中会广播出许多事件,可以监听这些事件,在合适的时机通过。提供的对象,能够获取当前。其本质为函数,函数中的。
webpack proxy工作原理?为什么能解决跨域? 当本地发送请求的时候,代理服务器响应该请求,并将请求转发到目标服务器,目标服务器响应数据后再将数据返回给代理服务器,最终再由代理服务器将数据响应给本地。在代理服务器传递数据给本地浏览器的过程中,两者同源,并不存在跨域行为,这时候浏览器就能正常接收数据。标识的请求到服务端获取数据,但响应这个请求的服务器只是将请求转发到另一台服务器中。所以在开发阶段中,由于浏览器同源策略的原因,当本地访问后端就会出现跨域请求的问题。则是关于代理的配置,该属性为对象的形式,对象中每一个属性就是一个代理的规则匹配。
webpack中常见的Plugin?解决了什么问题? 是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统下,因为其需要调用原纯净系统提供的函数库或者数据。(Plug-in)是一种计算机应用程序,它和主应用程序互相交互,以提供特定的功能。赋予其各种灵活的功能,例如打包优化、资源管理、环境变量注入等,它们会运行在。globOptions:设置一些额外的选项,其中可以编写需要忽略的文件。这里讲述文件的配置方式,一般情况,通过配置文件导出对象中。to:复制到的位置,可以省略,会默认复制到打包的目录下。方法的第一个参数,应是驼峰式命名的插件名称。
webpack中常见的Loader?解决了什么问题? 做的事情,仅仅是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定的文件中。把识别出的资源模块,移动到指定的输出⽬目录,并且返回这个资源在输出目录的地址(字符串)所有的事情,但是遇到图片格式的模块,可以选择性的把图片转成。可以同时挂载多个,处理顺序为:从右到左,从下往上。顺序为相反的顺序执行,即上述执行方式为。加载文件,这时候页面代码设置的样式并没有生效。中,对小体积的图片比较合适,大图片不合适。文件以外的内容,这时候我们就需要配置响应的。内部中,任何文件都是模块,不仅仅只是。
react 对Fiber架构的理解?解决了什么问题? 在完成一部分任务之后,将控制权交回给浏览器,让浏览器有时间再进行页面的渲染。如果没有,挂起当前任务,将时间控制权交给主线程,等主线程不忙的时候在继续执行。线程长时间地占用了主线程,那么渲染层面的更新就不得不长时间地等待,界面长时间不更新,会导致页面响应度变差,用户可能会感觉到卡顿。即可以中断与恢复,恢复后也可以复用之前的中间状态,并给不同的任务赋予不同的优先级,其中每个任务更新单元为。引擎和页面渲染引擎两个线程是互斥的,当其中一个线程执行时,另一个线程只能挂起等待。树计算完成后,才会交给渲染的线程。
二分查找的理解及应用场景。 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较,如果在某一步骤数组为空,则代表找不到,这种搜索算法每一次比较都使搜索范围缩小一半。在计算机科学中,二分查找算法,也称折半搜索算法,是一种在有序数组中查找某一特定元素的搜索算法。实际上,除了有序的数组可以使用,还有一种特殊的数组可以应用,那就是轮转后的有序数组。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束。让它成为十分高效的算法。
React render方法的原理?在什么时候会被触发? render函数里面可以编写JSX,转化成这种形式,用于生成虚拟DOM,最终转化成真实DOM在React中,类组件只要执行了setState方法,就一定会触发render函数执行,函数组件使用useState更改状态不一定导致重新render组件的props改变了,不一定触发render函数的执行,但是如果props的值来自于父组件或者祖先组件的state在这种情况下,父组件或者祖先组件的state发生了改变,就会导致子组件的重新渲染所以,一旦执行了setState就会执行render方法,
nginx的使用,homebrew安装及使用nginx。 是一个高性能的和反向代理服务器,它提供了诸如和等邮件代理服务。以下是 Nginx 的主要作用:12345此外,Nginx 还支持其他功能和配置,如、解决跨域问题等。
一篇文章带你快速上手 claude3 注册及使用步骤。 此处需要一个国外的号码需要接验证码,可以去SMS 网站(https://sms-activate.org/)上面下单一个临时号码,选择合适的,之后把号码复制过来,发验证码提交就好了。点击进去,用谷歌授权登录,来到下面的界面,Claude 要求进行手机号验证,这里选择填入国外号码验证即可。
Redux的中间件是干什么的?常用的中间件有哪些?实现原理? 件(Middleware)是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。中间件会判断你当前传进来的数据类型,如果是一个函数,将会给函数传入参数值(dispatch,getState)那么如果需要支持异步操作,或者支持错误处理、日志监控,这个过程就可以用上中间件。进行注册,作用是将所有的中间件组成一个数组,依次执行。如果想要实现一个日志功能,则可以使用现成的。,然后嵌套执行,最后执行。
对Redux的理解及其工作原理。 整个流程就是借书的用户需要先存在,然后需要借书,需要一句话来描述借什么书,图书馆管理员听到后需要查一下记录本,了解图书的位置,最后图书馆管理员会把这本书给到这个借书人。这种情况下,如果将所有的状态进行集中管理,当需要更新状态的时候,仅需要对这个管理集中处理,而不用去关心状态是如何分发到每一个组件内部的。如果让每个组件都存储自身相关的状态,理论上来讲不会影响应用的运行,但在开发及后续维护阶段,我们将花费大量精力去查询状态的变化过程。是记录本(借什么书,还什么书,在哪儿,需要查一下),应该给这个组件什么数据。
React受控组件和非受控组件区别及应用场景。 受控组件受控组件的值受React组件的state控制。当用户输入内容时,组件会触发onChange事件,更新state,然后重新渲染组件。应用场景:适用于需要在React中对输入进行严格控制和验证的情况,如表单输入项,可以方便地实现输入验证和逻辑处理。非受控组件非受控组件的值不受React组件的state控制,而是由DOM本身管理。通常通过ref获取DOM节点的值来进行操作。应用场景:适用于一些简单的交互,或者需要与第三方库或原生API集成的情况,如使用第三方日期选择器或上传组件。
React中类组件和函数组件的理解?有什么区别? 两者最明显的区别在于编写形式的不同,同一种功能的实现可以分别对应类组件和函数组件的编写形式。出来之前,函数组件就是无状态组件,不能保管组件的状态,不像类组件中调用。在函数组件中,并不存在生命周期,这是因为这些生命周期钩子都来自于继承的。如果是一个类组件,则需要将组件进行实例化,然后调用实例对象的。函数组件,顾名思义,就是通过函数编写的形式去实现一个。两者看起来实现功能是一致的,但是在类组件中,输出。所以,如果用到生命周期,就只能使用类组件。类组件,顾名思义,也就是通过使用。情况下,一般如果函数组件调用。
对React Hooks的理解?解决了什么问题? 因此,现在的函数组件也可以是有状态的组件,内部也可以维护自身的状态以及做一些逻辑方面的处理。的出现,使函数组件的功能得到了扩充,拥有了类组件相似的功能,在我们日常使用中,使用。让我们的函数组件拥有了类组件的特性,例如组件内的状态、生命周期。为函数式编程,每个功能都包裹在函数中,整体风格更清爽,更优雅。在以前,函数组件也被称为无状态的组件,只负责渲染的一些工作。后,则能够将相同的逻辑抽离出来,这是类组件不具备的方法。默认的值,返回值是一个数组,第一个值为当前的。会在第一次渲染和更新之后都会执行,相当于在。
Pinia 在组件外使用 store。 Pinia store 依靠pinia实例在所有调用中共享同一个 store 实例。大多数时候,只需调用你定义的useStore()函数,完全开箱即用。例如,在setup()中,你不需要再做任何事情。但在组件之外,情况就有点不同了。实际上,useStore()给你的app自动注入了pinia实例。这意味着,如果pinia实例不能自动注入,你必须手动提供给useStore()函数。你可以根据不同的应用,以不同的方式解决这个问题。