自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 问答 (1)
  • 收藏
  • 关注

原创 uniapp开发WebRTC语音直播间支持app(android+IOS)和H5,并记录了所有踩得坑

1. 创建自己的语音直播间2. 查询所有直播间列表3.加入房间4.申请上位5.麦克风控制6.声音控制7.赠送礼物(特效 + 批量移动动画)8.退出房间。

2024-01-12 14:45:48 2530 2

原创 Uniapp APP手机本地缓存图片、svga、视频等文件

Uniapp APP手机本地缓存图片、svga、视频等文件

2023-07-03 17:04:08 548

原创 微信小程序自研图片上传组件

微信小程序自研图片上传组件,支持图片上传 + 回显,上传成功后自动弹出下一个上传区域,组件化拿来即用,组件会将上传结果返回给父组件

2023-06-14 17:25:21 337

原创 Vue3组件化学习总结二

人处理问题的方式人面对复杂问题的处理方式:任何一个人处理信息的逻辑能力都是有限的所以,当面对一个非常复杂的问题时,我们不太可能一次性搞定一大堆的内容。但是,我们人有一种天生的能力,就是将问题进行拆解。如果将一个复杂的问题,拆分成很多个可以处理的小问题,再将其放在整体当中,你会发现大的问题也会迎刃而解。认识组件化开发组件化也是类似的思想:如果我们将一个页面中所有的处理逻辑 全部放在一起,处理起来就会变得非常 复杂,而且不利于后续的管理以及扩展;但如果,我们讲一个页面拆分

2021-08-16 22:57:12 206

原创 Vue3中Options-API 学习总结一

复杂data的处理方式我们知道,在模板中可以直接通过插值语法显示一些data中的数据。但是在某些情况,我们可能需要对数据进行一些转化后再显示,或者需要将多个数据结合起来进行显示;比如我们需要对多个data数据进行运算、三元运算符来决定结果、数据进行某种转化后显示;在模板中使用表达式,可以非常方便的实现,但是设计它们的初衷是用于简单的运算;在模板中放入太多的逻辑会让模板过重和难以维护;并且如果多个地方都使用到,那么会有大量重复的代码;我们有没有什么方法可以将逻辑抽离出去呢?可以

2021-08-16 22:33:25 4176 1

原创 TypeScript语法探究六

TypeScript枚举类型枚举类型是为数不多的TypeScript特性有的特性之一:枚举其实就是将一组可能出现的值,一个个列举出来,定义在一个类型中,这个类型就是枚举类型;枚举允许开发者定义一组命名常量,常量可以是数字、字符串类型;枚举类型的值枚举类型默认是有值的,比如上面的枚举,默认值是这样的:当然,我们也可以给枚举其他值:这个时候会从100进行递增;我们也可以给他们赋值其他的类型:认识泛型软件工程的主要目的是构建不仅仅明确和一致的API...

2021-08-15 23:29:36 360

原创 用TS封装了一个axios,支持全局拦截、实例拦截、单个请求拦截、loading等待功能

先给拍一张结构图最外层 index.ts统一出口request文件夹中的 config.ts进行了baseurl和响应时间等基础配置request文件夹中的index.ts就是我们主要的axios封装问加啦最外层 index.ts// service统一出口import HYRequest from './request'import {BASE_URL,TIME_OUT} from './request/config'const hyRequest = new HYR..

2021-08-15 09:26:40 1726 1

原创 TypeScript语法探究五

接口的声明在前面我们通过type可以用来声明一个对象类型:对象的另外一种声明方式就是通过接口来声明: 他们在使用上的区别,我们后续再来说明。接下来我们继续学习一下接口的其他特性。可选属性接口中我们也可以定义可选属性:只读属性接口中也可以定义只读属性:这样就意味着我们再初始化之后,这个值是不可以被修改的;索引类型前面我们使用interface来定义对象类型,这个时候其中的属性名、类型、方法都是确定的,但是有时候我们会遇 到类似下面的对象:...

2021-08-15 00:00:40 117

原创 TypeScript语法探究四

类型缩小什么是类型缩小呢?类型缩小的英文是 Type Narrowing;我们可以通过类似于 typeof padding === "number" 的判断语句,来改变TypeScript的执行路径;在给定的执行路径中,我们可以缩小比声明时更小的类型,这个过程称之为 缩小;而我们编写的 typeof padding === "number 可以称之为 类型保护(type guards);常见的类型保护有如下几种:ptypeof 平等缩小(比如===、!==) ...

2021-08-13 23:59:25 210

原创 TypeScript语法探究三

函数的参数类型函数是JavaScript非常重要的组成部分,TypeScript允许我们指定函数的参数和返回值的类型。参数的类型注解声明函数时,可以在每个参数后添加类型注解,以声明函数接受的参数类型:函数的返回值类型我们也可以添加返回值的类型注解,这个注解出现在函数列表的后面:和变量的类型注解一样,我们通常情况下不需要返回类型注解,因为TypeScript会根据 return 返回值推断函数的返回类型:某些第三方库处于方便理解,会明确指定返回类型,但是这个看个人喜好;

2021-08-13 23:28:52 190

原创 TypeScript语法探究二

认识TypeScript虽然已经知道TypeScript是干什么的了,也知道它解决了什么样的问题,但是我们还是需要全面的来认识一下TypeScript到底是什么?我们来看一下TypeScript在GitHub和官方上对自己的定义:GitHub说法:TypeScript is a superset of JavaScript that compiles to clean JavaScript output. TypeScript官网:TypeScript is a typed superset o

2021-08-12 23:33:13 130

原创 TypeScript 语法探究一

我始终相信:任何新技术的出现都是为了解决原有技术的某个痛点JavaScript是一门优秀的编程语言吗?每个人可能观点并不完全一致,但是从很多角度来看,JavaScript是一门非常优秀的编程语言;而且,可以说在很长一段时间内这个语言不会被代替,并且会在更多的领域被大家广泛使用;著名的Atwood定律:Stack Overflow的创立者之一的 Jeff Atwood 在2007年提出了著名的 Atwood定律。 any application that can be written in Ja.

2021-08-12 22:49:30 112

原创 Vue中组件之间8种通信方式

最近在学习Vue3(可能有点晚),在学习之前复习了一边Vue2中的知识,现做一个简单的组件间通信(数据穿透)总结一、props/$emit父组件通过props的方式向子组件传递数据,而通过$emit子组件可以向父组件通信。1. 父组件向子组件传值下面通过一个例子说明父组件如何向子组件传递数据:在子组件article.vue中如何获取父组件section.vue中的数据articles:['红楼梦', '西游记','三国演义']// section父组件<template&...

2021-08-11 21:28:14 330

原创 JavaScript精度丢失问题

javaScript中臭名昭著的BUG就是0.1+0.2 !== 0.3,因为精度问题,导致所有浮点数运算都是不安全的。 正如下面的计算结果,它们并不是我们所预想的: 0.1 + 0.2 = 0.300000000000000041 - 0.9 = 0.09999999999999998 虽然很多人知道这个浮点数误差这个问题的,可是却不知道背后的原理以及解决方案。今天我们就通过上面两个例子看看JavaScript浮点数误差问题背后的原理以及解决方案吧! 那我们先..

2021-08-04 08:50:23 416

原创 uni-app 关于uploadFiles API的小坑 (cloudPath不可为空)

最近在写uni-app的新闻资讯项目,涉及到其中的最普普通通的图片上传功能。参考官方文档我客客气气的把uni.chooseImage 传回来的图片路径和图片名称分别传给了 filePath 和 cloudPathuni.chooseImage({ count:count, success:(res) => { // console.log(res); const tempfilepaths = res.tempFilePaths ..

2021-08-02 12:50:22 1211

转载 6 个没人讲过的 CSS 属性

1.all你是否曾经使用过 CSS 框架呢?如果是的话,我可以肯定你有好几次都想要根据自己的喜好覆盖某些元素的样式定义。最常用的方法是使用 CSS 中的!important属性来强调当前属性,而忽略所有其他设置和规则。.header{color:blue!important;font-size:14px!important;}但是,重复书写相同的关键字会让 CSS 文件看起来很混乱。而一个更简单的覆盖样式定义的方法,是使用all属性。al...

2021-07-31 12:56:55 91

原创 28个Vue知识点,必会!!!

1.Vue的优点? vue的缺点?优点:渐进式,组件化,轻量级,虚拟dom,响应式,单页面路由,数据与视图分开缺点:单页面不利于seo,不支持IE8以下,首屏加载时间长2.为什么说Vue是一个渐进式框架?渐进式:通俗点讲就是,你想用啥你就用啥,咱也不强求你。你想用component就用,不用也行,你想用vuex就用,不用也可以3. Vue跟React的异同点?相同点:1.都使用了虚拟dom2.组件化开发3.都是单向数据流(父子组件之间,不建议子修改父传下来的数据) 4.都支持服务端

2021-07-31 12:46:45 1014

原创 前端两种路由模式 hash 和 history

hash 模式url带 # 号,history则不带.... ....本文到此结束... ... (呵呵,不可能)1.hash早期的前端路由就是基于location.hash实现的,其原理很简单,location.hash的值就是URL中的#后面的内容,比如:http://www.word.com#search,他的location.hash的值就是:#searchhash路由模式的实现主要是基于下面几个特性 1. URL中的hash值只是客户端的一种状态,也就是说,当向服务...

2021-07-29 19:53:10 423

原创 使用require.context实现前端工程自动化

require.context是什么require.context是webpack的一个api,通过执行require.context函数获取一个特定的上下文,主要用来实现自动化导入模块,在前端工程中,如果遇到从一个文件夹引入很多模块的情况,可以使用这个api,它会遍历文件夹中的指定文件,然后自动导入,使得不需要每次显式的调用import导入模块分析require.contextrequire.context函数接受三个参数 directory {String} -读取文件的路径

2021-07-27 12:06:02 200

原创 模仿百度搞个好玩的东西

看起来就是 console.log()的杰作,但是没想到平时最常用的调试工具还可以这么玩~第一步,简单模仿,搞一下console.log(`每一个星球都有一个驱动核心,每一种思想都有影响力的种子。感受世界的温度,年轻的你也能成为改变世界的动力,百度珍惜你所有的潜力。你的潜力,是改变世界的动力!`)console.log('%c 加油! 兄弟们,卷起来','color: red');我的效果:...

2021-07-24 22:47:03 87

原创 egg.js 学习NO.1(记录了一个小问题and新的学习收获)

学习方法:因为有着nodejs和koa基础,在简单了解egg官网后,咱直接上手干项目,毕竟只有在项目中才能学到东西得到成长。通过各种渠道,找到了一个好课×××(开发文档:dishaxy.com/doc/7/docnav/504)使用egg脚手架创建第一个项目:npm init egg --type=simple!!!错误npm ERR! code ENOLOCALnpm ERR! Could not install from "Files\nodejs\node_cache\_

2021-07-23 15:54:33 439

原创 前端性能优化实践(流程、常见技术手段、工具)

提及 前端性能优化 ,大家应该都会想到 雅虎军规,本文会结合 雅虎军规 融入自己的了解知识,进行的总结和梳理 ,存档学习。雅虎军规首先,先来看看“雅虎军规”的35条: 尽量减少 HTTP 请求个数——须权衡 使用CDN(内容分发网络) 为文件头指定 Expires 或 Cache-Control ,使内容具有缓存性。 避免空的 src 和 href 使用 gzip 压缩内容 把 CSS 放到顶部 把 JS 放到底部 避免使.

2021-07-22 13:52:45 176

原创 记录一下几个Promise知识点

1、简单介绍下Promise。Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数解决回调地狱。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。(当然了也可以简单介绍promise状态,有什么方法,callback存在什么问题等等)2、实现一个简单的,支持异.

2021-07-20 22:43:19 133

原创 前端模块化

什么是前端模块化?一句话概括:将独立的功能代码封装成一个独立的文件,其他模块需要使用,在进行引用。有利于代码的拆分和架构上的解耦几种常见的前端模块化方式commonjs伴随nodejs而诞生的commonjs规范。commonjs 规范应用于 nodejs 应用中,在 nodejs 应用中每个文件就是一个模块,拥有自己的作用域,文件中的变量、函数都是私有的,与其他文件相隔离。CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的e...

2021-07-19 21:47:52 115

原创 移动端开发的屏幕、图像、字体与布局的兼容适配

首先,什么是响应式设计?网上对响应式设计的介绍很多,鄙人也看过不少,最终,本人所找到的认为的最佳答案是:“如果将屏幕看作容器,那么内容就像水一样”为什么要设计响应式界面?经过多方查询,总结出以下几点:1.台式机、投影、电视、笔记本、手机、平板、手表、VR……智能设备正在不断增加,“主流设备”的概念正在消失。2.屏幕分辨率正飞速发展,同一张图片在不同设备上看起来,大小可能天差地别。3.鼠标、触屏、笔、摄像头手势……不可预期的操控方式正在不断出现。4.即便是使用浏览器,用户对浏览

2021-07-18 20:39:50 3803 2

原创 常见的前端javascript方法封装

1.输入一个值,返回其数据类型function type(para) { return Object.prototype.toString.call(para)}2.数组去重function unique1(arr) { return [...new Set(arr)]}function unique2(arr) { var obj = {}; return arr.filter(ele => { if (!obj[ele]) .

2021-07-16 10:33:09 94

原创 利用缓存登录后如何拿到账号信息

感觉这是一个不可能的问题.....本人将token保存在cookie中,利用cookie缓存成功登录后,需求是想做一个欢迎页面,类似于:欢迎您×××来到×××,这样的案例。经过我灵活的小脑瓜20s的思考,初步分析了以下几个难点:1.登录页面和欢迎页面分别是两个毫不相干的路由2.两个组件无父子关系思路one:1.因为要确保账号username的正确性,所以要在第一次的登录的成功回调.then里面书写代码2.在.then中将正确的账号信息保存到vuex中3.在欢迎页面拿到保存在vue

2021-07-14 21:05:18 523

原创 如何实现登录持久化

最近在写一个前后端分离系统,主要用到的技术栈是Vue(vuex,Vuerouter)+Nodejs(Koa具体模块此处省略),在前后端的登录功能基本实现后(主要包括数据交互,账号密码信息验证,数据库连接写入等等等等.............),突然发现!!!一个问题,在Vuerouter权限限制下,基本流程还算正常,但是登录限制的只有访问权限,如何让服务器知道该用户目前处于登陆状态....经过短暂思考,初步思路:将账号信息保存到Cookie中,前端触发某些事件发送网络请求后,后端读取Cookie,如果账

2021-07-14 15:18:39 1766

原创 前端为什么操作DOM的成本是昂贵的

引起成本增加的主要原因:重绘和重排(回流)重排(回流):渲染树(render tree)的元素的内容、结构、位置或尺寸发生了变化,需要重新计算样式和渲染树重绘 :节点的一些样式(背景色,边框颜色,文字颜色等)发生改变,只需要应用新样式绘制这个元素就可以了;重排必定会引起重绘如果上面看不懂,不妨了解一下浏览器的渲染过程浏览器渲染过程在输入URL后,浏览器的执行操作:查找缓存 —> 没有找到则 查询DNS —> 封装http请求为一个TCP请求包 —&...

2021-07-12 11:48:28 470

空空如也

空空如也

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

TA关注的人

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