【踩坑记事】关于我被switch语句折腾的3小时
0. 前言记一次这周在项目上遇到的一个问题,为解决这个问题我和朋友研究了大概两三个小时。我们都是第一次遇到这种问题,请大佬勿喷,下面我来讲一下这个问题的成因和解决的办法。
直接说结果[问题结论](#4. 问题解决)
1. 问题来源在目前这个项目中有一个函数需要根据后端返回返回的数据,分别进行不同操作。因为要执行不同的操作的判断有点多,所以决定使用switch语句来进行判断。
一般来说switch语句是长这样的:
12345678910111213141516171819202122switch (expr) { case "Oranges": console.log("Oranges are $0.59 a pound."); break; case "Apples": console.log("Apples are $0.32 a pound."); break; case "Bananas": console.log("Ba ...
vs-code安装和配置ESLint
安装ESLint
全局安装: npm install -g eslint
项目安装: npm install eslint --save-dev
如果你想你所有项目都使用eslint,请全局安装;如果你想当前项目使用,请局部安装。
局部安装时请使用 –save-dev,因为 eslint 是适用于开发环境(Software Development Environment,SDE)的插件,请不要添加到生产环境中。
初始化ESLint
eslint --init
1234? How would you like to use ESLint? (Use arrow keys) // 你想怎样使用eslint To check syntax only // 只检查语法> To check syntax and find problems // 检查语法、发现问题 To check syntax, find problems, and enforce code style // 检查语法、发现问题并执行代码样式
1234? What type of modules d ...
mklink命令创建软硬目录链接与删除链接
1. mklink链接的创建“mklink” 命令在 Windows 系统中用于创建硬链接、符号链接和目录链接。以下是 “mklink” 命令的常用参数:
/D:用于创建目录软链接。当使用该参数时,需要指定目标目录的路径。
/H:用于创建硬链接(硬链接只适用于文件)。当使用该参数时,需要指定目标文件的路径。
/J:用于创建目录链接。与 /D 相似,但它创建的是一个目录联接,而不是目录软链接。
/I:用于创建符号链接(默认为符号链接)。当使用该参数时,需要指定目标文件或目录的路径。
/Y:在创建链接之前,自动确认覆盖现有目标。
下面是一些示例:
创建文件软链接:
1mklink 软链接文件 目标文件
创建目录软链接:
1mklink /D 软链接目录 目标目录
创建符号链接(默认):
1mklink 软链接 目标文件或目录
创建硬链接:
1mklink /H 硬链接 目标文件
创建目录链接:
1mklink /J 目录链接 目标目录
请注意,在创建链接时,确保 “mklink” 命令的参数和路径正确无误,并具有足够的权限。
2. 软链接、硬链接、目录链接区别软链接、硬链接和目 ...
【杂谈】浅谈社会公信力的丧失
0. 前言:在开始之前我想先说说什么是社会公信力。社会公信力是指一个个体、组织或机构在社会中获得的信任和声誉程度。它反映了人们对其行为、承诺和道德准则的信任程度。社会公信力是建立在诚信、透明度和责任感基础上的,它对于个人、企业、政府和其他组织来说都非常重要。
一个具有良好社会公信力的个体或者组织,通常表现出以下几个特征:
诚信和守信:他们言行一致,信守承诺,不欺骗他人。
诚信和守信:他们言行一致,信守承诺,不欺骗他人。
透明度:他们公开信息,对外界保持开放和公正。
责任感:他们对自己的行为负责,并愿意承担应有的责任和后果。
反馈和改进能力:他们重视他人的反馈和意见,积极改进自身不足之处。
社会参与:他们积极参与社会公益事业,关注社会问题并为之做出贡献。
1. 群众里面有坏人啊其实我对社会公信力逐渐丧失有比较直观的感受是在19年疫情开始的时候。
【算法】JS实现斐波那契数列
斐波那契数列,又称黄金分割数列,是一种递归的数列,以它的递推公式和美丽的数学性质得到了广泛的应用。本文将介绍使用 JS 实现斐波那契数列的几种方法,包括递归和循环,以及优化方案等。
1. 斐波那契数列定义斐波那契数列(Fibonacci sequence)是一种递归的数列,以它的递推公式和美丽的数学性质得到了广泛的应用。它的定义如下:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)。也就是说,第 n 个斐波那契数就是第 n-1 个和第 n-2 个斐波那契数之和。通常用 F(n)表示斐波那契数列中的第 n 个数。斐波那契数列是一个由 0 和 1 开始,后续的每一项都是前两项之和的数列。
2. 以终为始——递归实现2.1 普通递归对于普通递归我的总结就是:以终为始,套娃计算,适时终止。
以始为终:用倒推的方式来思考。
套娃计算:找到套娃的公式。
适时终止:递归到能直接得到结果的地方就停并返回结果。
下面我们来开始倒推。从后往前倒推就是 :
123456f(n) = f(n-1) + f(n-2)f(n-1) = f(n-2) - ...
WebSockets的简单使用
0. 前言:自从HTML5里的WebSocket出现后,彻底改变了以往Web端即时通讯技术的基础通道这个“痛点”(在此之前,开发者们不得不弄出了诸如:短轮询、长轮询、Comet、SSE等技术,可谓苦之久矣…),如今再也不用纠结到底该用“轮询”还是“Comet”技术来保证数据的实时性了。
1. 什么是WebSocketWebSocket 协议在2008年诞生,2011年成为国际标准,所有浏览器都已经支持了。其是基于TCP的一种新的网络协议,是 HTML5 开始提供的一种在单个TCP连接上进行全双工通讯的协议,它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
WebSocket特点:
WebSocket可以在浏览器里使用
支持双向通信
使用简单
支持扩展。ws协议定义了扩展,用户可以扩展协议,或者实现自定义的子协议。(比如支持自定义压缩算法等)
较少的控制开销。连接创建后,ws客户端、服务端进行数据交换时,协议控制的数据包头部较小。
协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。
与 HTTP 协议有着良好的兼容性。默 ...
彻底搞懂HTTP缓存策略
0. 前言:在web中,http请求一般都是浏览器发起的,所以我们这里所说的http的缓存策略,其实也就是浏览器端的缓存策略,因为http本身只是一种协议,真正实现缓存还是要靠浏览器(其实就是浏览器指定存储在硬盘下。)
我们使用 HTTP 缓存,通过复用缓存资源,减少了客户端等待时间和网络流量,同时也能缓解服务器端的压力。可以显著的提升我们网站和应用的性能。虽然 HTTP 缓存不是必须的,但重用缓存的资源通常是必要的,HTTP 缓存是一个 web 性能优化的重要手段。
要想实现一个完整的缓存,需要考虑很多因素。例如:
请求的资源发生改变的时候,如何让浏览器去获取新的资源。
设置缓存失效时间之后,如果服务器资源没有发生改变,浏览器如何判断。
什么样的HTTP响应会被客户端缓存?
默认情况下,请求方法如 GET、HEAD的响应内容是可缓存的,在包含新鲜度信息的情况下,POST的响应内容也可以被缓存;
默认情况下,响应码如 200、206、300、301、302、404 等的响应内容可以被缓存;
响应头和请求头没有指明不使用缓存,如 Cache-Control: no-stor ...
一文搞懂pinia状态管理
1. Pinaia
Pinia是一个全新的Vue状态管理库,是Vuex的代替者,尤雨溪强势推荐。
如果你学过Vue2,那么你一定使用过Vuex。我们都知道Vuex在Vue2中主要充当状态管理的角色,所谓状态管理,简单来说就是一个存储数据的地方,存放在Vuex中的数据在各个组件中都能访问到,它是Vue生态中重要的组成部分。
在Vue3中,可以使用传统的Vuex来实现状态管理,也可以使用最新的pinia来实现状态管理,我们来看看官网如何解释pinia的。
官网解释:
Pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态。从上面官网的解释不难看出,pinia和Vuex的作用是一样的,它也充当的是一个存储数据的作用,存储在pinia的数据允许我们在各个组件中使用。
Pinia优势:
支持Vue2和Vue3(Vue 版本大于 2.7)
抛弃传统的 Mutation ,只有 state, getter 和 action ,简化状态管理库
良好的Typescript支持,毕竟我们Vue3都推荐使用TS来编写,这个时候使用pinia就非常合适
不需要嵌套模块,符合 Vue3 ...
微信小程序自定义tabbar栏【中间突出样式】
这两天开发一个微信小程序,需要让底部导航栏中间图标往上突出一点来。之前都是用组件或者直接原生没有太多定制样式,所以记录一下完成步骤。
1. 自定义tabbar栏配置
在 app.json 文件中的 tabBar 中指定 custom 字段为 true(意思是允许使用自定义 tabBar);
在 app.json 中全局开启使用组件,或者在所有涉及的 tab 页 json 中申明usingComponents 项;
在 app.json 中添加作为 tabBar 栏的页面;
12345678910111213141516171819202122232425262728293031323334353637383940"tabBar": { "custom": true, "color": "#cccccc", "selectedColor": "#eb585b", "borderStyle": "black&quo ...
微信小程序搭配wechat-http,实现封装http请求响应拦截器和Promise
代码部分1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071// http.js// 导入 http 模块import http from 'wechat-http'/** * 配置接口基础路径 */http.baseURL = 'https://live-api.itheima.net'/** * 挂载方法到全局 */wx.http = http/** * 配置请求拦截器 */http.intercept.request = (config) => { console.log('config -----> ', config); const app = getApp() if (app.token) { config.header = { Autho ...