- 博客(720)
- 资源 (3)
- 收藏
- 关注
原创 前端基础之《Vue(20)—移动端REM布局》
摘要:WebApp是一种交互类似App但无需安装的H5页面。移动端布局方案包括rem、vw/vh等相对单位布局,不使用绝对单位px。通过rem.js动态设置根字体大小(屏幕宽度的1/10),实现适配不同屏幕。CSS中rem单位基于根字体尺寸,em基于父元素字体。UI稿尺寸转换示例(如750px→10rem),推荐使用pxtorem插件简化计算。文中还介绍了布局类型比较和常用CSS单位。
2025-06-18 15:18:34
282
原创 前端基础之《Vue(19)—状态管理》
Vue状态管理核心要点:1、版本匹配(Vue2+Vuex3/Vue3+Vuex4或Pinia);2、状态管理本质是数据共享与缓存;3、安装使用三步骤:注册插件、创建Store实例、导出;4、主要解决组件间数据共享和响应式更新问题;5、Store配置包含state等核心概念。通过建立store目录并在main.js导入实现全局状态管理。
2025-06-06 17:15:18
421
原创 前端基础之《Vue(18)—路由知识点》
本文介绍了两种前端路由模式:hash路由(带#号,基于onhashchange事件,部署无404问题)和history路由(无#号,需服务器重定向避免404)。重点讲解了Vue路由的两个全局组件:<router-view>(视图容器,支持命名视图)和<router-link>(导航链接,支持多种属性和写法)。还解释了路由栈概念,即浏览器通过堆栈记录访问历史,支持前进后退导航。全文简明扼要地概括了前端路由的核心知识点。
2025-06-03 17:15:53
381
原创 前端基础之《Vue(17)—路由集成》
本文介绍了单页面应用程序(SPA)与多页面应用程序(MPA)的区别,并详细讲解了在Vue项目中集成路由系统的步骤。主要内容包括:1. SPA与MPA的定义和特点;2. Vue路由系统安装配置方法,包括版本选择、插件调用和全局组件使用;3. 路由规则定义和模式选择(hash/history);4. 路由与主程序的关联方式;5. 在App.vue中放置路由视图容器和导航链接的实践。通过10个步骤详细说明了从安装到使用的完整流程,帮助开发者快速掌握Vue路由的基本使用方法。
2025-05-30 17:38:28
410
原创 前端基础之《Vue(16)—Vue脚手架介绍》
本文介绍了在Windows 10环境下搭建Vue.js开发环境的步骤。首先,推荐使用Node.js和Vue CLI(基于webpack)作为开发工具。接着,通过命令行验证Node和npm的安装是否成功。Vue CLI作为脚手架工具,能够生成项目的基本结构,包括入口文件和配置。常用的包管理器有npm、yarn和cnpm(淘宝镜像)。安装Vue CLI后,可以通过命令行创建Vue项目,支持Vue 2或Vue 3版本。此外,还提供了可视化界面创建项目的方式,但通常不推荐使用。
2025-05-12 15:14:38
524
原创 前端基础之《Vue(15)—组件通信(2)》
const bus = new Vue(),不给选项就是事件总线,给选项就是组件了。(2)bus.$emit('频道', '消息'):向指定“频道”上发送消息。(1)bus.$on('频道', callback):监听一个“频道”在Vue的背后源码中的Dep类也是一种“订阅-发布”模式。(4)bus.$once():对某个“频道”只监听一次。(3)bus.$off():取消订阅“频道”这里的事件总线,就是一种“订阅-发布”模式。“订阅-发布”模式,也叫做“观察者模式”。2、什么是“订阅-发布”模式。
2025-05-08 16:46:43
311
原创 前端基础之《Vue(14)—组件通信(1)》
在Vue中,组件树(Component Tree)指的是一个由多个嵌套的Vue组件组成的层级结构。借助$parent/$children这两个API,可以实现在任一组件中访问组件树中的其它任意组件实例。当兄弟组件之间需要共享数据时,我们通常的做法是把这个数据定义在它们的共同的父组件中,再通过自定义属性实现数据共享。注意:provide提供声明式变量numf,如果在父组件中修改了app.num的值,子组件中不会改变!所以下面在例子代码里,更新父组件中的provide数据,子组件不会更新!
2025-05-06 15:27:35
363
原创 前端基础之《Vue(13)—重要API》
set操作代码是同步的,但是代码背后的行为是异步的。set操作修改声明式变量,触发re-render生成新的虚拟DOM,进一步执行diff运算,找到脏节点集合,交给Vue背后的更新队列去执行循环更新。在更新队列中每一个更新任务都是一个更新单元,nextTick表示下一个更新单元(更新周期)。1、Vue.$nextTick()或者this.$nextTick()代码是同步的,任务是异步的,打印出来肯定不是3。什么是nextTick?
2025-04-30 15:52:04
242
原创 前端基础之《Vue(12)—插件封装》
插件是一种更加高级的代码复用技术,可以以插件的方式为我们提供可复用的组件、混入、指令、过滤器原型链API等等。1、在Vue生态中,除了Vue本身,其它所有的与Vue相关的第三方包,都是插件。调用插件上的install方法,并传入Vue实参。2、如何封装Vue插件。Vue.use(插件)
2025-04-25 17:12:50
397
原创 前端基础之《Vue(11)—自定义指令》
(1)使用Vue.directive('指令名', function() {})定义全局指令。如果有一些DOM功能经常用,但是Vue没有提供相关指令,建议自己封装。使用directives: {}定义局部指令,只能在当前组件中使用。指令本质上就是DOM功能的一种抽象封装。binding:绑定的值/表达式。el:指令所对应的DOM节点。vnode:当前的虚拟DOM。
2025-04-25 11:29:50
315
原创 前端基础之《Vue(10)—过滤器》
使用Vue.filter('名称', val=>{return newVal})定义。6、过滤器还可以链式调用{{num | f1 | f2}},过滤器是有顺序的。使用选项,filters: {}定义,只能在当前组件中使用。5、过滤器只能用在{{}}和v-bind中,不支持其他指令。4、过滤器在Vue 3.0中已经淘汰了。在任何组件中都可以直接使用。
2025-04-24 17:39:59
523
原创 前端基础之《Vue(9)—混入》
比如我封装两个组件,一个是A组件,一个是B组件,发现它里面有相同的选项,就可以用混用的方式来复用它。4、当一个组件同时有全局混入、局部混入、自有选项时,它们的优先级。Vue组件是由若干选项组成的,向组件中混入可复用的选项。当前Vue程序中,所有组件都拥有了这些被混入的选项。使用mixins:[{},{}]选项,进行局部混入。1、当混入用的多了,选项来历不明,代码不易维护。注意:尽量不要用全局混入,偶尔会用到局部混入。只有当前组件才有这些被混入的选项。1、是一种代码复用的技巧。3、一般混入的内容是。
2025-04-24 15:49:57
296
原创 前端基础之《Vue(8)—内置组件》
(3)mounted()只执行一次,activated()、deactivated()可以执行多次。有种v-if的感觉,根据指定条件渲染目标组件,它的is属性等于哪个组件,就显示哪个组件。(2)还会多两个生命周期钩子:activated()、deactivated()。exclude:包含在exclude里面的组件会死,其他都不死。include:包含在include里面的组件不会死。它经常配合<keep-alive>一起使用。它的is属性,is等于谁就显示谁。二、keep-alive组件例子。
2025-04-23 16:21:22
292
原创 前端基础之《Vue(7)—生命周期》
循环递归运算,找出两个虚拟DOM的差异(找出最小的脏节点集合),通过一个队列更新,重新渲染DOM。调用render方法,创建虚拟DOM。组件上下文数据的注入,对data调用遍历,把data中所有的数据放在this中。当虚拟DOM被destroy()方法调用,路由切换的时候,组件会销毁。销毁阶段:beforeDestroy、destroyed。beforeMount:到派出所办户口(生成虚拟DOM)加set、get钩子。再次调用render,生成一个新的虚拟DOM。......一岁一岁长大......
2025-04-21 16:51:21
475
原创 前端基础之《Vue(6)—组件基础(2)》
2、在组件中,v-model='num' 等于 v-bind:value='num' + v-on:input='num = $event'(2)对checkbox和radio选择框,v-model 等于 v-bind:checked + v-on:change。(1)对text和textarea文本表单,v-model 等于 v-bind:value + v-on:input。(3)对select下拉框,v-model 等于 v-bind:value + v-on:change。1、在组件中,可以把。
2025-04-18 13:47:57
220
原创 前端基础之《Vue(5)—组件基础(1)》
一个组件,你可以理解成是由一组选项构成的,在封装自定义组件时,你可以使用大多数的Vue选项属性,比如:data、template、methods等。组件封装后,必须要注册(局部注册,或,全局注册)才能在Vue的地盘中使用,注册自定义组件时,组件名称必须由多个单词用中划线连接。对一个组件来讲,你可以使用this.$emit('自定义事件','数据')触发父组件给的自定义事件,并回传数据给父组件。对Vue组件来讲,最重要的是视图结构,所以我们在封装Vue组件时,可以使用大多数的Vue选项。
2025-04-16 16:26:47
522
原创 前端基础之《Vue(4)—响应式原理》
当获取、修改obj2属性的时候,会触发钩子函数。obj2对象多了get和set函数。当你get/set一个变量时,你有办法可以“捕获到”这种行为。2、一个普通对象和一个响应式对象对比。1、响应式英文reactive。
2025-04-11 16:31:49
485
原创 前端基础之《Vue(3)—计算属性》
(3)计算属性本质上是一个函数,vue会分析函数体中使用到了哪些声明式变量,有且仅有这些声明式变量发生变化时,计算属性才会重新执行。(1)用于优化指令的表达式,当指令的表达式比较复杂,我们建议使用计算属性来优化,提升视图模板中代码的可阅读性、可维护性。5、在视图模板中把计算属性直接当作变量直接使用,在vue逻辑代码使用this访问计算属性,默认只有get功能。可以,计算属性要有set功能,拆成get/set写法。语法:在computed选项中,定义计算属性方法,在方法体使用声明式变量进行若干计算。
2025-04-10 15:53:50
365
原创 git分支合并信息查看
1、选择"Revision graph"灰色字母串:代表一次merge提交。TortoiseGit工具。黄色部分:代表一个tag。红色部分:代表当前分支。橙色部分:代表远程分支。绿色部分:代表本地分支。2、勾选view中的。
2025-04-08 10:27:01
342
原创 前端基础之《Vue(2)—指令基础》
以后自定义指令也要用v-开头,因为vue编译器看到v-开头,知道是指令,而指令绑的表达式,编译器就会去编译表达式。1、指令是vue内置的一套“模板”(都是以v-开头的){{}}:文本插值,在以前前后端不分离的项目中常见到。3、每一个Vue组件都有个id,“_uid: 0”4、$开头的符号,是vue官方提供的内置api。4、指令实际上是DOM功能的抽象。我 -> 指令 -> DOM操作。用于在视图节点上动态绑定变量的。5、指令等号右边的值是表达式。3、指令可以理解成一套符号。背后也是在做DOM操作。
2025-04-03 15:58:45
70
原创 前端基础之《Vue(1)—简介》
声明式思想,先在data选项中声明一个合适的变量,再在交互事件中改变这个声明式变量即可,视图自动更新。当声明式变量变化时,它所对应的视图节点自动更新,这就是所谓的响应式。DOM开发思想,当我们需要在交互事件中改变视图时,使用DOM选择器选中目标节点,再使用DOM方法直接改变视图。(5)基于选项的(templete、data、computed、watch、methods)选项:固定的东西放在固定的位置(react没有选项所以更灵活更难)(4)丰富的指令(DOM功能的抽象)(6)vue文档集中(官网都有)
2025-04-02 17:34:08
431
原创 数据结构基础之《(24)—动态规划》
规定机器人必须走K步,最终能来到P位置(P也是1~N中的一个)的方法有多少种?1、某一个暴力递归,有解的重复调用,就可以把这个暴力递归优化成动态规划。(5)规定好严格表的大小,分析位置的依赖顺序,然后从基础填写到最终解。(1)你已经有了一个不违反原则的暴力递归,而且的确存在解的重复调用。2、任何动态规划问题,都一定对应着某一个有解的重复调用的暴力递归。假设有排成一行的N个位置,记为1~N,N一定大于或等于2。开始时机器人在其中的M位置上(M一定是1~N中的一个)(3)参数间的所有的组合数量,意味着表大小。
2025-03-27 15:48:25
242
原创 数据结构基础之《(23)—暴力递归》
方法二,hanoi2函数,忘掉左中右,只有from、to、other,考虑1到N层圆盘怎么从from到to。不记录子问题的解就是暴力,记录子问题的解就是动态规划。(1)第一步,1到N-1层圆盘从from移动到other。(3)第三步,1到N-1层圆盘从other移动到to。(3)第三步,1到N-1层圆盘,从中间移动到右边。(1)把问题转化为规模缩小了的同类问题的子问题。(2)第二步,N层圆盘自己从左边移动到右边。(2)第二步,N层圆盘从from移动到to。(1)第一步,1到N-1个圆盘移动到中间。
2025-03-24 14:44:52
304
原创 数据结构基础之《(22)—图》
2、虽然存在有向图和无向图的概念,但实际上都可以用有向图来表达。1、由点的集合和边的集合构成。3、边上可能带有权值。
2025-03-20 17:38:16
183
原创 数据结构基础之《(21)—并查集》
void union(V x, V y),把x和y各自所在集合的所有样本合并成一个集合(x和y所在的集团,合并在一起)boolean isSameSet(V x, V y),查询样本x和样本y是否属于一个集合(问x和y联通了没有)a在自己的集合里只有a,b在自己的集合里只有b...,每个样本单独是一个集合,它和谁都不联通。找到a,根据指针往上找,往上到不能再往上,这个代表点不一样,说明不在一个集合。1、有若干个样本a、b、c、d...类型假设是V。2、在并查集中一开始认为每个样本都在单独的集合里。
2025-03-18 17:32:36
274
原创 数据结构基础之《(20)—贪心策略》
给你每一个项目开始的时间和结束的时间,你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。3、对于能举出反例的策略直接跳过,不能举出反例的策略要证明有效性。2、用一种局部最功利的标准,总是做出在当前看来是最好的选择。这往往是特别困难的,要求数学能力很高且不具有统一的技巧性。1、实现一个不依靠贪心策略的解法X,可以用最暴力的尝试。3、用解法X和对数器,用实验的方式得知哪个贪心策略正确。2、脑补出贪心策略A、贪心策略B、贪心策略C...2、根据业务逻辑找到不同的贪心策略。4、不要去纠结贪心策略的证明。
2025-03-07 17:42:38
248
原创 数据结构基础之《(19)—矩阵处理》
左上角有A、B两个点,A往右一步一步走,B往下一步一步走。打印顺序:1,2,7,13,8,3,4,9,14...写一个函数从左下往右上打印,调度问题交给点A和B来移动。核心技巧:找到coding上的宏观调度。一、zigzag打印矩阵。
2025-03-05 17:25:38
366
原创 数据结构基础之《(18)—打表技巧》
3、一个大的问题中总是牵扯到一个小问题,它每一次数据返回固定不变的,如果规模比较小,可以先把这张表做好,以后这个问题不用现场调函数去执行返回,只要从表里面拿具体的数据就可以了。24是因为每次8换6都会多出2个,如果换了3次(也就是多凑了一个3*2=6)都无法整除6,说明一开始余下的数不可能被整除,也就是说不可能是0,或6。2、一个大问题解决时底层频繁使用规模不大的小问题的解,如果小问题的返回值满足条件1,可以把小问题的解列成一张表,作为程序的一部分。(2)剩下的苹果超过24个,不需要试了,返回-1。
2025-02-27 14:42:49
397
原创 数据结构基础之《(17)—二叉树》
因为递归很强,递归可以让一个东西来到3次,所以可以随便加工先序、中序、后序。(3)第一次到达一个节点就打印就是先序、第二次打印即中序、第三次打印即后序。先序:任何子树的处理顺序都是,先头节点、再左子树、然后右子树(中左右)中序:任何子树的处理顺序都是,先左子树、再头节点、然后右子树(左中右)后序:任何子树的处理顺序都是,先左子树、在右子树、然后头节点(左右中)(2)先序、中序、后序都可以在递归的基础上加工出来。5、非递归方式实现二叉树的先序、中序、后序遍历。4、递归方式实现二叉树的先序、中序、后序遍历。
2025-02-11 17:15:52
365
原创 数据结构基础之《(16)—链表题目》
2、对于面试,时间复杂度依然放在第一位,但是一定要找到空间最省的方法。3、输入链表头节点,奇数长度返回中点前一个,偶数长度返回上中点前一个。4、输入链表头节点,奇数长度返回中点前一个,偶数长度返回下中点前一个。1、输入链表头节点,奇数长度返回中点,偶数长度返回上中点。2、输入链表头节点,奇数长度返回中点,偶数长度返回下中点。1、对于笔试,不用太在乎空间复杂度,一切为了时间复杂度。当快指针走完的时候,慢指针应该来到中点的位置。
2025-01-22 17:45:09
427
原创 数据结构基础之《(15)—排序算法小结》
潜伏》里说同样两个一百元大钞,你能告诉我哪一个是高尚的那一个是龌龊的么。第一个5和1交换,第一个5会跑到后面几个5的后面,原序列中两个5的相对前后顺序就被破坏了。4、有些排序算法可以实现成稳定的,而有些排序算法无论如何都实现不成稳定的。排完之后,如果排序有稳定性的,在1班的学生内部,年龄是从小到大排序的。1、稳定性是指同样大小的样本再排序之后不会改变相对次序。没有稳定性,因为它是从0到n-1中找最小值,然后交换。5、什么算法是稳定的,什么算法是不稳定的。得到一个序列,年龄是从小到大的。
2025-01-22 14:44:57
424
原创 数据结构基础之《(14)—桶排序》
怎么生成有序的数组呢?从左往右看词频表,0岁的人有2个,写2个0,依次类推(它叫计数排序)员工年龄不会超过200岁,建个help数组[201],对年龄在0~200之间做词频统计。2、桶排序是一个大思想,计数排序是桶排序的一种体现。2、桶排序思想下的排序有:计数排序 & 基数排序。4、应用范围有限,需要样本的数据状况满足桶的划分。桶就是一个容器,例子里的桶是一个词频统计的值。3、只有最小值到最大值很窄的情况下,才有价值。1、桶排序思想下的排序都是不基于比较的排序。有一个数组,里面是员工的年龄,如何排序。
2025-01-21 14:10:00
235
原创 数据结构基础之《(13)—前缀树》
1、前缀树(Trie),又称字典树或单词查找树,是一种用于存储字符串集合的数据结构。(4)沿途节点的pass值增加1,每个字符串结束时来到的节点end值增加1。(2)字符放在路上,节点上有专属的数据项(常见的是pass和end值)intend:在我加字符的过程中,这个节点,称为了多少字符串的结尾。intpass:在一个一个节点加入的过程中,当前节点通过了几次。(3)所有样本都这样添加,如果没有路就新建,如有路就复用。(1)单个字符串中,字符从前到后的加到一棵多叉树上。
2025-01-08 16:05:53
282
原创 数据结构基础之《(12)—比较器》
(3)返回0的情况,就是o1=o2的情况,谁在前面无所谓。(1)返回负数的情况,就是o1排在前面的情况(o1小)(2)返回正数的情况,就是o2排在前面的情况(o2小)3、比较器可以很好的应用在根据特殊标准排序的结构上。2、比较器可以很好的应用在特殊标准的排序上。4、写代码变得异常容易,还用于泛型编程。1、比较器的实质就是重载比较运算符。
2024-12-24 17:52:01
268
原创 git提交时出现merge branch main of xxx
1、在show log里面,跳到commit A修改之前的版本,右键选择Reset "main" to this,然后选择Hard。3、同事因为后续的commit有冲突,把A这个commit回退了,然后合并到了B、C上,又commit了B、C这两个变更。2、我把这个修改直接pull了下来(pull是fetch+merge的操作,自动合并到本地workspace)4、我再做pull的时候,就会有merge branch main of xxx的提示。1、同事commit了一个修改A,push到remote。
2024-12-09 14:25:26
746
原创 数据结构基础之《(11)—堆》
假设它是最小的数,将它挪到顶,就必然要对每棵子树的头结点进行判断。大根堆:其特点在于每个节点的值都大于或等于其子节点的值。小根堆:其每个非叶子节点的值都小于或等于其子节点的值。若原堆是大根堆,最后一个数它肯定是整个堆里最小的数。1、堆在结构上是一颗完全二叉树。4、调整后为什么还是大根堆。3、树调整的代价logN。5、自己实现堆结构代码。
2024-12-05 15:41:17
285
原创 数据结构基础之《(10)—快速排序》
i留在原地,第三个数是2,小于num,自己和自己交换,小于区右移一个位置,i++(2)i位置的数区左扩,i不动。第一个数3,小于num,自己和自己交换,小于区右移一个位置,i++第二个数5,大于num,5和2交换,大于区左移一个位置,i不动。第四个数0,大于num,0和4交换,小于区右移一个位置,i++第六个数6,大于num,6和7交换,大于区左移一个位置,i不动。
2024-12-02 17:32:09
435
原创 数据结构基础之《(9)—归并排序》
1、整体是递归,左边排好序+右边排好序+merge让整体有序。说明:在arr上,从L到R范围上让它变成有序的。3、利用master公式来求解时间复杂度。2、让其整体有序的过程里用了排外序方法。(2)f(M+1, R)之间有序。(1)先f(L, M)之间有序。4、当然可以用非递归实现。1、首先有一个f函数。
2024-11-28 16:34:41
599
原创 数据结构基础之《(8)—哈希表和有序表》
5、使用哈希表增(put)、删(remove)、改(put)和查(get)的操作,可以认为时间复杂度为O(1),但是常数时间比较大。4、有无伴随数据,是HashMap和HashSet唯一的区别,底层怎么组织,实际结构是一样的。6、放入哈希表的东西,如果是基础类型,内部按值传递,内存占用是这个东西的大小。7、放入哈希表的东西,如果不是基础类型,内部按引用传递,内存占用是8个字节。3、如果既有key,又有伴随数据value,可以使用HashMap结构。AVL树,SB树,红黑树,跳表。二、哈希表和有序表区别。
2024-11-27 16:54:27
183
gitflow工作流程.pdf
2020-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人