自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 前端代码提交规范-vue

为什么我们要规范提交git提交时每个开发者提交信息不统一,更有甚者提交信息为魔法数字提交统一的、有规则的信息;更容易看懂是什么意思,文件更改了什么可以提供更加明朗的历史信息,便于后续快速定位问题、代码回滚等的操作可以自动化生成changelog一. 修改类型feat:提交新功能fix:修复了bugdocs:只修改了文档style:调整代码格式,未修改代码逻辑(比如修改空格、格式化、缺少分号等)refactor:代码重构,既没修复bug也没有添加新功能。

2024-04-16 00:56:27 850

原创 前端单元测试

为什么要做单元测试需求变更频繁需求中永远不变的是: 需求永远在变.需求不一定完善产品关心的是: 需求的重点业务.比如说想要建个农场养鸡, 产品只要求能按质按量正常生产小鸡, 小鸡的存活养大概率满足预期(80%)即可, 至于农场是建在草原,沙漠,还是火山;农场发生火灾, 发生瘟疫怎么应对, 怎么预防, 他们可能不会去关注提测质量不高,bug多提测后的1-3天, BUG井喷式出现;测试同学抱怨, 改完bug A,以前修复的bug B又复现了;或者说出现了新的bug C。

2024-04-07 22:34:56 964

原创 前端代码规范

随着团队人数的增加,每个人的代码编写喜好不同,代码风格也迥然不同。问题导致熟悉对方的代码时,我们需要浪费不必要的时间,所以总体一套代码规范,一能解决维护成本,也能提高代码质量,所以大家一起规范起来吧。

2024-04-06 21:55:56 273 1

原创 JavaScript基础

class b { constructor(ecutor){ ecutor(this) } } let a = new b(()=>{ console.log(this) // window })数组和字符方法 parseInt(5.11) // 取整 Math.floor(5.92) // 5 向下取整 Math.ceil(5.0244) // 6 向上取整 ...

2021-11-11 18:33:31 694

原创 vue3+vite+TS项目搭建

使用 Vite 创建项目npm init vite@latest参考Vite 官方指南√ Project name: ... lagou-shop-admin√ Select a framework: » vue√ Select a variant: » vue-tsScaffolding project in C:\Users\lpz\Projects\lagou-shop-admin...Done. Now run: cd lagou-shop-admin npm instal

2021-10-26 23:08:19 2378

原创 数据结构与算法

为什么要学习数据结构与算法1.数据结构+算法=程序2.代码化繁为简3.提高代码性能4.提高面试通过率栈栈的概念栈是一种遵从后进先出原则的有序集合添加新元素的一端称为栈顶,另一端称为栈底操作栈的元素时,只能从栈顶操作(添加、移除或取值)栈的实现push()入栈方法pop()出栈方法top()获取栈顶值size()获取栈的元素个数clear()清空栈class Stack { constructor () { // 存储栈的数据 this.data =

2021-10-12 18:25:15 642

原创 webgl用法(第二章)

点击画布绘制点上例只是实现了一个静态点的绘制,但真正的 WebGL 应用是需要通过网页和用户进行交互,从而改变画面。实现一个简单交互程序:在画布上,鼠标点击的位置上绘制一个点,且这个点的颜色是随机的。要求:通过 JavaScript 往着色器程序中传入顶点位置和颜色数据,从而绘制点的位置和颜色。着色器程序1、顶点着色器<!-- 顶点着色器 --><script type="shader-source" id="vertexShader"> // 浮点数设置为中等精度

2021-08-26 18:32:37 371

原创 webgl用法和简介

WebGL 的基本图元包括:点、线段、三角形。三角形图元分类基本三角形(TRIANGLES)基本三角形是一个个独立的三角形。假如:提供给着色器 6 个顶点,WebGL 会绘制 2 个三角形,前三个顶点绘制一个,后三个顶点绘制另一个,互不相干。例如:[v1, v2, v3, v4, v5, v6] 采用基本三角形图元进行绘制,绘制完如下图所示[v1, v2, v3] 为一个三角形、[v4, v5, v6] 为另一个三角形。绘制三角形的数量 = 顶点数 / 3三角带(TRIANGLE_STR

2021-08-26 18:23:47 8583

原创 手写 Vue Router、手写响应式实现、虚拟 DOM 和 Diff 算法

vue原理剖析基础结构模板 :界面展示代码逻辑业务功能:美化布局:生命周期语法和概念差值表达式指令计算属性和侦听器class和style绑定条件渲染/列表渲染表单输入绑定组件:可复用的vue实例插槽插件混入mixin深入响应式原理模拟vue-router hash模式的实现// 具体代码在目录code/homework_test文件夹下,// src/router/index.js路由配置文件中修改配置模式const router = new VueRoute

2021-01-31 18:56:32 175

原创 前端监控系统设计

前端异常监控汇总一.为什么需要做前端监控通过对客户端环境信息以及用户行为信息收集, 在研发侧,能够对系统的运行情况做异常报警,快速定位异常问题,确保线上服务能够正常运行; 在用户端,能够通过对用户行为进行分析,结合定制的指标,去衡量产品功能的使用率、服务性能、用户行为偏好等,为用户提供更好的产品体验; 在产品侧,能够根据用户行为偏好,驱动产品迭代优化; 在运营侧,能够确认运营活动以及广告投放的效益二.异常错误原因分类错误类型1.ECMAScript 2015中定义的错误构造函数

2021-01-07 16:55:45 1914 1

原创 模块化开发与规范化标准

概述1.模块化演变过程2.模块化规范3.常用的模块化打包工具4.基于模块化工具构建现代web应用5.打包工具的优化技巧模块化演变过程1.污染全局作用域2.命名冲突问题3.无法管理模块依赖关系模块化规范的出现1.CommonJS一个文件就是一个模块每个模块都有单独的作用域通过module.exports导出成员通过require函数载入模块是以同步模式加载模块(在浏览器中 加载缓慢)2.AMD(Asynchronous Module Definition) Require.j

2021-01-04 20:46:50 462

原创 开发脚手架及封装自动化构建工作流

前端工程化概述1.多人协作开发,无法硬性统一大家的代码风格 从仓库中pull回来的代码质量无法保证2.部分功能开发时需要等待后端服务接口提前完成3.传统语言或语法的弊端4.无法使用模块化/组件化5.重复的机械式工作6.整体依赖后端项目脚手架工具概要1.创建项目基础结构、提供项目规范和约定相同的组织结构相同的开发范式相同的模块依赖相同的工具配置相同的基础代码2.常用脚手架工具react项目:create-react-appvue项目:vue-cliangular项目:ang

2020-12-27 17:14:59 212

原创 vue 2.0-3.0 设计原理

vue面试题什么是MVVM1.MVVM是一种设计思想,Model层代表数据模型,也可以在model中定义数据修改和操作的业务逻辑;view代表UI组件,它负责将数据模型转化成UI展现出来,viewModel是一个同步view和model的对象2.在MVVM架构下,view和Model之间没有直接的联系,Model和viewModel之间的交互是双向的,因此View数据的变化会同步到Model中,而Model数据的变化也会立即反应到View上。响应式数据的原理是什么1.核心是通过 ES2015 的

2020-12-03 10:17:04 609

原创 【1-2习题】ES 新特性、TypeScript、javascript性能优化

简答题请说出下列最终的执行结果,并解释为什么。var a = [];for(var i = 0;i<10;i++){ a[i] = function (){ console.log(i) }}a[6]() 答:因为for循环中的 i 用var来声明会提升变量,并且循环体内的函数并不是每次循环都会执行,当所有循环结束时 i已经变成了10,所以无论a数组中的哪个元素,执行结果都是10。解决方案:将var改为let声明方式 形成块级作用域请说出下列最终的执

2020-11-29 14:35:48 334

原创 JavaScript 垃圾回收和代码优化实例

JavaScript 性能优化内容概要1.内存管理2.垃圾回收与常见GC算法3.V8引擎的垃圾回收4.Performance 工具5.代码优化实例JavaScript 内存管理1.内存:由可读写单元组成,表示一片可操作空间2.管理:人为的去操作一片空间的申请、使用和释放3.内存管理:开发者主动申请空间、使用空间、释放空间4.管理流程:申请-使用-释放// 申请let obj = {}//使用obj.name = 'lg'//释放obj = nullJavaScript

2020-11-27 15:41:03 328

原创 TypeScript 讲解

TypeScript 语言概述1.解决JavaScript类型系统的问题2.大大提高代码的可靠程度3.语言本身多了很多概念4.项目初期,TypeScript会增加一些成本(适合长期大项目)类型系统1.强类型与弱类型(类型安全)(1)语言层面限制函数的实参类型必须与形参类型相同(2)强类型有更强的类型约束,而弱类型中几乎没有什么约束(3)强类型语言中不允许任意的隐式类型转换 而弱类型允许2.静态类型与动态类型(类型检查)(1)静态类型:一个变量声明时它的类型就是明确的 声明过够,它的类

2020-11-22 18:25:10 242 1

原创 构造函数和原型以及实例之间的关系

构造函数和原型以及实例之间的关系一、构造函数和普通函数的区别1.构造函数的函数名首字母大写 来与普通函数进行区分2.构造函数 通过new来调用3.构造函数中的this指向这个构造函数  而普通函数中的this指向windowvar dog = function(){ //普通函数的定义 console.log("我是一个普通函数"); }dog();

2020-11-22 16:57:46 627 1

原创 ES 新特性解析

ECMAScript 新特性概述1.通常看作JavaScript的标准化规范2.实际上JavaScript是EVMAscript的扩展语言3.ECMAscript只提供了最基本的语法 约定了方法 变量 语句等 不能应用实际功能开发4.JavaScript语言本身指的就是ECMAscript5.解决原有语法上的一些问题或不足6.对原有语法进行增强7.全新的对象、全新的方法、全新的功能8.全新的数据类型和数据结构9.ES6是表示泛指 准确叫ES2015 根据版本来迭代let1.产生作用域

2020-11-19 02:58:08 793

原创 函数式编程 JS异步编程 手写Promise对象

函数式编程+JS异步编程+手写Promise对象一、谈谈你是如何理解 JS 异步编程的,EventLoop、消息队列都是做什么的,什么是宏任务,什么是微任务?1. JS异步编程JavaScript 语言的执行环境是单线程的,一次只能执行一个任务,多任务需要排队等候,这种模式可能会阻塞代码,导致代码执行效率低下。为了避免这个问题,出现了异步编程。一般是通过 callback 回调函数、事件发布/订阅、Promise 等来组织代码,本质都是通过回调函数来实现异步代码的存放与执行。2. EventLoop

2020-11-17 17:25:05 222

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除