前端
文章平均质量分 62
盼盼盼
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用Refine构建项目(1)初始化项目
以上步骤将为你创建一个基础的Refine项目结构,你可以在此基础上进行开发和定制。如果你需要进一步的定制或添加特定的功能,Refine提供了丰富的API和Hooks来支持你的开发需求。更多详细信息和高级配置,可以参考Refine的官方文档。在初始化过程中,你可以选择需要的特性,如React Router、数据提供者(例如simple-rest或GraphQL)、UI库(例如Ant Design、Material UI等)和其他选项。这将启动你的Refine项目,你可以开始根据需要添加页面、组件和逻辑了。原创 2024-09-19 21:53:56 · 648 阅读 · 0 评论 -
状态管理库之Redux
Redux 是一个流行的 JavaScript 状态管理库,它被设计用来为应用程序提供可预测的状态容器。Redux 通常用于大型前端应用程序,尤其是那些需要跨组件共享复杂状态的应用程序。Redux 通过这些机制提供了一个强大且灵活的方式来管理应用的状态,使得状态的跟踪、调试和维护变得更加容易。假设你正在开发一个待办事项列表应用,你需要管理待办事项的添加、删除和标记完成状态。原创 2024-09-18 11:44:52 · 513 阅读 · 0 评论 -
如何避免在使用 Context API 时出现状态管理的常见问题?
在使用 React 的 Context API 时,确实存在一些常见的问题和潜在的性能风险。原创 2024-09-18 11:09:44 · 721 阅读 · 0 评论 -
在 React 中,如何使用 Context API 来实现跨组件的通信?
在 React 中,Context API 提供了一种方式,允许你在组件树中传递数据,而无需在每个层级手动传递 props。这对于实现跨组件通信非常有用,特别是当你需要在多个组件间共享状态或函数时。原创 2024-09-13 10:15:01 · 959 阅读 · 0 评论 -
React组件通信方式(父传子,兄弟组件,子传父)
在 React 中,组件间的通信是构建交互式应用的核心。原创 2024-09-13 10:14:42 · 572 阅读 · 0 评论 -
React 项目中,如何实现有效的内存管理和防止内存泄漏?
在 React 项目中,实现有效的内存管理和防止内存泄漏是确保应用性能和用户体验的关键。原创 2024-09-12 18:11:20 · 1618 阅读 · 0 评论 -
React开源框架之Refine
Refine 是由 Retax 演变而来,它提供了一套完整的解决方案,用于构建 CRUD(创建、读取、更新、删除)应用程序,同时也支持更复杂的后台管理功能。:虽然 Refine 提供了许多预构建的组件,但它也支持高度定制,开发者可以根据自己的需求来定制组件和页面。:Refine 使用了 React Query 作为其数据同步和缓存的解决方案,提供了高效的数据获取和管理。:Refine 提供了一系列预构建的组件和页面,如列表、表单、编辑器等,这些可以帮助开发者快速启动项目。原创 2024-09-04 22:02:37 · 1224 阅读 · 0 评论 -
在 Vue 3 中,如何使用 Teleport 来优化组件的 DOM 结构?
是一个内置组件,它允许你将组件的 DOM 输出到组件外部的 DOM 节点中。这在某些情况下可以优化组件的 DOM 结构,例如当你需要将弹窗、侧边栏、对话框等组件渲染到 body 标签的直接子元素中,而不是嵌套在当前组件的 DOM 结构中时。是一个非常强大的工具,可以帮助你更好地控制组件的 DOM 输出,特别是在构建复杂的 UI 组件时。// 假设有一个方法来控制模态框的显示。这个 DOM 节点中,而不是嵌套在。在 Vue 3 中,原创 2024-09-04 16:14:52 · 897 阅读 · 0 评论 -
Vue 3 的性能提升具体体现在哪些方面?
这些性能提升使得 Vue 3 在大型应用和复杂场景中表现出更好的性能和更高的开发效率。原创 2024-09-03 16:40:40 · 772 阅读 · 0 评论 -
如何将npm 升级到最新版本
这将会把最新版本的npm安装到当前项目中,并且将其作为一个开发依赖项保存到package.json文件中。这将会全局安装(-g)最新版本的npm。原创 2024-09-03 16:24:59 · 4303 阅读 · 0 评论 -
如何使用useMemo来优化React组件的性能?
是 React 提供的一个 Hook,它可以用来记忆复杂计算的结果,避免在每次渲染时都进行重复计算,从而优化组件的性能。并不保证所记忆的值不会被丢弃。在React的将来的重渲染过程中,可能会清除这些值以释放内存。主要用于性能优化,而不是作为缓存机制。变化时,才会重新计算。原创 2024-09-02 15:22:27 · 1234 阅读 · 0 评论 -
在使用React Hooks中,如何避免状态更新时的性能问题?
依赖项中的值发生变化,直接更新状态可能导致无限循环。通过这些策略,可以减少不必要的渲染和副作用,提高React应用的性能。如果某些值不应该触发组件渲染,但又需要在组件内部保持,可以使用。确保副作用逻辑不在渲染路径中同步执行,这可能会导致性能瓶颈。Hook,这样只有相关的状态部分发生变化时才会触发更新。Hook来集中管理状态更新,这有助于避免组件内的多个。来记忆回调函数,避免因引用变化导致的子组件重新渲染。来避免组件或其子组件进行不必要的渲染。来避免组件树不必要的渲染。对于复杂的状态逻辑,使用。原创 2024-08-28 15:41:09 · 1177 阅读 · 0 评论 -
React Hooks 的使用场景有哪些?
React Hooks是React 16.8引入的一项特性,它允许你在不编写类组件的情况下使用state和其他React特性。Hook来处理更复杂的状态逻辑,它接收一个reducer函数和初始状态,并返回当前状态和派发action的函数。React Hooks提供了一种更声明式和灵活的方式来构建组件,使函数组件能够处理原本需要类组件才能完成的任务。:虽然不是直接的Hook,但React的懒加载组件通常与。:React 18引入的并发模式和新的Hooks,如。来记忆组件或计算结果,避免不必要的渲染和计算。原创 2024-08-27 22:26:25 · 682 阅读 · 0 评论 -
高级前端工程师React面试题
React是一个用于构建用户界面的JavaScript库,由Facebook维护,主要用于构建单页应用。React使用JSX和基于组件的架构,而Vue使用基于HTML的模板。React没有提供像Vue那样的双向数据绑定,且React的生态系统更侧重于大型应用。React组件的生命周期包括挂载(mounting)、更新(updating)、卸载(unmounting)三个阶段,每个阶段都有相应的钩子函数。JSX是一种JavaScript的语法扩展,它允许你在JavaScript代码中写类似HTML的标记。st原创 2024-08-26 16:43:31 · 1335 阅读 · 0 评论 -
高级前端工程师Vue面试题
原型链是JavaScript对象之间基于原型的继承链。每个对象都有一个内部属性[[Prototype]],指向它的原型,可以是另一个对象或null。生命周期钩子是Vue实例在不同阶段会调用的函数,如createdmountedupdateddestroyed等。XSS是攻击者将恶意脚本注入到网页中,当其他用户访问该页面时,脚本在用户的浏览器中执行。CSRF是攻击者利用用户的登录状态发起恶意请求。前端性能优化包括减少HTTP请求、使用CDN、压缩文件、图片优化、代码分割、懒加载、预加载等技术。原创 2024-07-12 14:53:56 · 1566 阅读 · 0 评论 -
VueCLI4打包时清除console.log
1.在项目中下载依赖包npm install babel-plugin-transform-remove-console -g2.在项目babel.config.js中配置let transformRemoveConsolePlugin = [];// 生产环境清除console.log的信息if (process.env.NODE_ENV === "production") { transformRemoveConsolePlugin = ["transform-remove-consol原创 2020-12-02 16:48:37 · 1342 阅读 · 3 评论 -
Vue源码分析之Vue入口文件
文章目录1.1 Flow1.2 Vue.js源码目录Vue.js 的源码都在 src 目录下,其目录结构如下:compilercoreplatformsserversfcshared1.3 Vue.js构建方式1.4 Vue.js入口1.1 FlowFlow是facebook出品的JavaScript代码的静态类型检查器。Vue.js 的源码利用了 Flow 做了静态类型检查。Flow的工作方式:类型推断:通过变量的使用上下文来推断,然后根据这些推断来判断类型。类型注释:事先注释数据类型,Flo原创 2020-10-10 16:10:55 · 1249 阅读 · 1 评论 -
前端基于WebSocket封装
1.无心跳,短开连接之后重新连。class webSocketClass { constructor(name) { this.lockReconnect = false; this.localUrl = "ws://XXXXXX"; this.wsUrl = ""; this.globalCallback = null; this.userClose = false; this.createWebSocket(name); } createW原创 2020-09-16 14:39:17 · 1342 阅读 · 0 评论 -
后台管理系统的权限控制------前端权限管理
1.权限管理的相关概念1.1 什么是权限管理权限管理是一个几乎所有后台系统的都会涉及的一个重要组成部分,主要目的是对整个后台管理系统进行权限的控制,而针对的对象是员工,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,数据泄露等问题。1.2 权限分类后端权限管理权限管理的核心在于服务其中的数据变化,所以后端是权限管理的关键后端是如何知道该请求是哪个用户发过来的cookie:Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方原创 2020-09-09 15:14:18 · 5843 阅读 · 1 评论 -
前端面试题及答案汇总
闭包是能够读取其他函数内部变量的函数要理解闭包,首先必须理解Javascript特殊的变量作用域闭包的特性:1.封闭性:外界无法访问闭包内部的数据,如果在闭包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口;2.持久性:一般的函数,调用完之后,系统会自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包依然存在。1.创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。2.属性和方法被加到this引用的对象中。原创 2020-03-26 14:39:55 · 65955 阅读 · 14 评论 -
angular6调试报Uncaught Error: Can't resolve all parameters for ApplicationModule错
angular6调试报Uncaught Error: Can’t resolve all parameters for ApplicationModule错解决方法:在angular项目polyfills.ts中添加import 'core-js/es7/reflect';原创 2020-01-06 13:46:38 · 1718 阅读 · 0 评论 -
ionic4踩坑记
用了ionic4 四个月了,遇到的坑今天整理一下1.标题栏的返回按钮ion-back-button,在页面刷新后不显示目前解决办法是重新写返回按钮<ion-buttons class="backIcon" slot="start"> <ion-button (click)="canGoBack()"> <ion-icon slot="icon-on...原创 2019-11-20 13:21:51 · 573 阅读 · 0 评论 -
angular8版本父子组件传参报错 @ViewChild()
ERROR in src/app/component/refresh/refresh.component.ts(14,4): error TS2554: Expected 2 arguments, but got 1.解决办法//加上{static: false}@ViewChild('divContent',{static: false}) divContent: ElementRe...原创 2019-08-01 16:27:06 · 1947 阅读 · 1 评论 -
ionic4学习笔记(三)--项目目录结构分析
项目目录结构:项目结构分析:e2e端对端的测试文件node_modules 项目依赖src 项目开发文件app 项目模块,组件,服务assets 项目静态资源文件environments 项目环境,可以配置项目的运行环境theme 主题文件,可配置主题global.scss 全局样式文件index.html 项目入口karma.conf.js 测试配...原创 2019-08-06 13:44:33 · 867 阅读 · 0 评论 -
ionic4学习笔记(四)--自定义公共模块
在angular中,我们都是自定义组件来使用,但是ionic4之后,沿用了angular的模块化思想,使用懒加载的方式加载页面,每个页面都是一个模块,要是继续创建组件的话,不能在多个模块中引用同一组件,所以我们要把模块创建为组件,让模块来引用模块。创建一个tabs项目,在项目中执行命令ionic g module module/listionic g component module/lis...原创 2019-08-06 16:04:20 · 996 阅读 · 0 评论 -
vue封装Radio单选组件(有禁用选项、默认选项的单选框)
1.效果展示2.组件代码radio.vue代码:<template> <div class="radio"> <label class="title">{{title}}</label> <a href="#" v-for="(item, index) in options" :key="...原创 2019-07-04 16:55:51 · 7313 阅读 · 1 评论 -
H5刘海屏 刘海的高度计算 JS
何为刘海屏计算刘海屏的大致思路屏幕的可用高度:屏幕的可用宽度 = 16:9 刘海高度 = window.screen.availHeight - window.screen.availWidth * 16 / 9原创 2019-03-27 17:51:21 · 4841 阅读 · 0 评论 -
ionic4学习笔记(二)-- 创建页面,ion-back-button属性
1.创建user页面ionic g page userionic提供了用命令生成界面的功能:在命令行输入ionic g如下:PS D:\item\ionic-test> ionic g? What would you like to generate? (Use arrow keys)pagecomponentservicemoduleclassdirective...原创 2019-08-05 18:20:11 · 1874 阅读 · 0 评论 -
ionic4学习笔记(一)--创建项目
1.首先要更新或者安装ionic clinpm install -g ionic2.创建项目ionic start ionic-testionic-test是创建的项目名称安装后会提示选择1.blank: 只有一个页面的空项目2.tabs: 带了下方切换页面按钮的项目3.sidemenu: 带了侧边菜单的项目3.项目跑起来npm run start打开 http://...原创 2019-08-05 16:06:11 · 720 阅读 · 0 评论 -
angular6页面刷新时报HTTP Status 404 – Not Found
错误信息:HTTP Status 404 – Not FoundType Status ReportDescription The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.Apache...原创 2019-05-14 10:05:31 · 1796 阅读 · 0 评论 -
JS字符串操作
JS字符串操作1.字符串转换2.获取字符串长度3.字符串切割4.字符串拼接5.字符串截取6.字符串替换7.字符串大小写转换8.字符串去空格9.查询子字符串10.返回指定位置的字符或字符编码1.字符串转换var num = 12;var str = num.toString() //"12"var num = 12;var str = String(num) //"12"var nu...原创 2019-05-08 15:45:56 · 402 阅读 · 0 评论 -
agular6组建之间监听@Input传值变化
文章目录1.引入OnChanges2.继承接口3.声明ngOnChanges4.整体代码1.引入OnChangesimport { Component, OnInit, Input, OnChanges } from '@angular/core';2.继承接口export class AlertComponent implements OnInit, OnChanges {}3...原创 2019-04-02 11:33:30 · 835 阅读 · 0 评论 -
angular6基本语法 *ngFor *ngIf 获取dom元素 绑定事件
1.创建组件创建组件//创建一个header组件ng generate component header (简写 ng g c header)//创建自定义服务serviceng generate service header (简写 ng g s header)//创建路由ng generate module app-routing --flat --module=app使...原创 2019-03-20 14:02:28 · 2506 阅读 · 1 评论 -
angular6引入jsrsasign,使用RSA加密
1.npm安装依赖包npm install jsrsasign2. 在项目中引用import { jsrsasign } from 'jsrsasign'原创 2019-03-28 14:14:06 · 2530 阅读 · 0 评论 -
angular6引入CryptoJS,使用HmacSHA1加密
1.npm安装CryptoJSnpm install crypto-js2.在项目中引用import CryptoJS from 'crypto-js' //注意,没有{ }getSign() { var data = new Date().getTime() var value = "123456"; var key = "GBSJSNKKM@hsdjdkm...原创 2019-03-28 13:59:10 · 3826 阅读 · 0 评论 -
angular6使用ElementUI
1.npm 安装npm i --save element-angular2.引入CSS在styles.css中引入@import "~element-angular/theme/index.css";3.引入ElModuleimport { ElModule } from 'element-angular';4.无障碍使用<div class="page">...原创 2019-04-04 11:37:21 · 5733 阅读 · 2 评论 -
angular6-Routing
文章目录1.使用angular CLI生成AppRoutingModule1.使用angular CLI生成AppRoutingModuleng generate module app-routing --flat --module=app–flat将文件放在src / app而不是新建的文件夹中。–module = app告诉CLI将其注册到AppModule的imports数组中。...原创 2019-03-26 17:17:40 · 1191 阅读 · 0 评论 -
angular6-Http
1.在app.module.ts中引入HttpClientModuleimport { HttpClientModule} from '@angular/common/http'imports: [ BrowserModule, AppRoutingModule, HttpClientModule ],2.在调接口的文件中引入HttpClientimport...原创 2019-03-29 18:03:50 · 453 阅读 · 0 评论 -
angular6开发steps步骤条组件
1.先展示步骤条效果2.使用angular命令快速创建组件ng g c component/steps创建的组件在component文件夹下面打开steps.component.ts文件,可以看到selector的值是app-stepsimport { Component, OnInit} from '@angular/core';@Component({ selector...原创 2019-03-22 17:52:08 · 2083 阅读 · 4 评论 -
angular6-service
文章目录1.为什么创建服务2.创建服务1.为什么创建服务组件不应直接获取或保存数据,并且它们不应故意呈现假数据。他们应该专注于呈现数据并委托对服务的数据访问。2.创建服务使用angular CLI命令行创建一个名叫hero的服务ng generate service hero...原创 2019-03-25 13:27:52 · 589 阅读 · 0 评论
分享