自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 复盘打码功能

后端会把我需要的打码入参返回给我,前端需要做的是:引入厂家提供的js文件,调用提供的js方法初始化打印机,从后台获取打码参数,调用打码机打印方法,即可完成打码功能。其中,步骤1,2可以返回Promise实例,但步骤3仍然是一个xhr原生方法,所以决定在打印方法定义的地方(及下方的send方法)使用Promise进行改写。获取打印机时,会把能识别的所有设备都拿到,有可能存在超过两个设备的情况(比如安装了多个打印设备的驱动等等),这时需要提供一个弹框,可以选择待使用的打印机。循环这个参数list,并逐个打印。

2023-12-28 17:24:25 829

原创 vite定制需求打包

开发的管理系统需要应用在多个医院。产品提了一个需求,针对某一家医院,需要将登录页的logo去掉,其它的医院保留。由于未登录状态无法获取医院信息,因此采用定制打包的方案。技术栈:vue3+vite。

2023-12-27 10:48:55 363

转载 移动端适配方案

postcss-px-to-viewport’: { // options unitToConvert: ‘px’, // 需要转换的单位,默认为"px" viewportWidth: 750, // 设计稿的视窗宽度 unitPrecision: 5, // 单位转换后保留的精度 propList: [‘*’, ‘!如 devicePixelRatio = 2,表示在相同长度的直线上,设备像素的数量是 CSS 像素数量的 2 倍,因此 CSS 像素的边长是设备像素的 2 倍。处理前后截图如下所示。

2023-10-18 09:25:24 151

原创 pdfjs解决ie浏览器预览pdf问题

针对这个报错,一查发现是因为浏览器设置的默认文档模式是7,导致虽然我的浏览器是ie11,但实际是按照ie7来解析网页,而我的网页是不兼容ie7地,这可不就会报错嘛。要注意把viewer.js中的defaultUrl清空(这个变量的名称可能不同版本不一样,我当时的变量名是DEFAULT_URL,DEFAULT_URL = ‘compressed.tracemonkey-pldi-09.pdf’)。数据请求的问题完成了。官网已经不提供ie的下载渠道,搜索了一圈,发现用edge模拟是一个比较好的选择。

2023-09-12 14:38:22 1852 1

原创 Map和Object,Set和Array

二叉树是有序的,但同时查找效率很高,js新增的Map结构背后就是根据二叉树设计的。数据分为有序和无序,一般来说,无序查找效率高于有序。但有些场景只能用有序。Map的key可以是任意类型的数据,而Object的key只能是字符串。Map的特点是有序,且查找效率高。定义一个Map的方法。

2023-09-01 15:00:15 140

原创 requestAnimationFrame和setTimeout

和setTimeout(callback,16.7)实现的功能类似,区别在于前者RAF在浏览器进入后台或iframe隐藏时会暂停,对性能和体验更友好,而setTimeout依然执行。requestAnimationFrame()告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。浏览器重绘频率一般是60帧/秒,即16.7ms重绘一次,这样可以让动画流畅。

2023-08-31 11:01:36 68

原创 手写深拷贝方法

【代码】手写深拷贝方法。

2023-08-31 10:32:15 74

转载 跨域解决方式之一-JSONP

JSONP 不是一门编程语言,也不是什么特别的技术,它更像一个漏洞,程序员可以利用这个漏洞,实现跨域(可以简单理解为跨域名)传输数据。在介绍 JSONP 之前,先来介绍一下浏览器的同源策略。通过 jsonp,我们可以避开浏览器的同源策略,从而进行跨域请求。jsonp 是利用 HTML 标签的 src 属性引用资源不受同源策影响的特性来实现的,实现步骤如下:通过动态创建 script 标签,其 scr 指向非同源的 url,并传递一个 callback 参数给服务端。

2023-08-02 10:19:08 70

原创 Promise需要知道的

rejected是rejected处理后的状态,用catch来接reject的结果。但是catch执行后,如果内部没有报错, 没有reject操作,则仍然会返回一个resoved状态的promise。’resolve处理后是resolved状态,then会返回一个resolved状态的promise。4.await相当于promise的then,如果想要捕获错误,可以使用 try catch。2.Promise共三种状态,pending,fullfilld,rejected。

2023-07-18 14:09:52 44

转载 ie下不打开控制台js无法执行

解决:把js里面的console都干掉。原因不明,后续需查找。

2023-07-13 10:30:34 55

原创 http-server实现跨域

跨域处理方法

2023-03-13 10:42:24 1311

转载 【无标题】

npm install报错

2022-12-12 09:53:39 84

原创 开发插件并发布

项目开发中不同的系统经常遇到重复的自定义指令、组件等,直接复制代码比较冗杂,且如果需要改动,需要每个系统都改动一遍,非常不灵活。而将这些共通的部分封装成一个插件,使用时直接引用即可,大大减少冗余代码,优化代码结构。vue开发插件要暴露一个install方法,这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象。以下是Vue官方提供的不同插件的开发方式。MyPlugin.install = function (Vue, options) { // 1. 添加全局方法或 proper

2021-06-03 17:29:06 181 5

原创 数组排序,空值一直排最后

数组排序希望实现:不论升序还是降序,怎样实现空值始终排在最后;如下数组let arr = [null,"a", "b", null, "d",undefined,""]希望排列结果是:// 升序["a", "b", "d", "", null, null, undefined]// 降序["d", "b", "a", "", null, null, undefined]实现方法:onChangeOrder(list,order){ list.sort((a,b)=&gt

2021-06-02 11:29:36 1950

原创 生成一个元素值为‘a’,长度为100的数组

测试一个问题时,希望创建一个数组变量,长度为100,每个元素值为‘a’。思路就是先创建一个length为100的数组,再用map方法把每个元素转为’a’,写法如下:let arr = Array(100).map(item=>item='a')结果瞬间打脸,得到的数组是这样的[empty × 100],根本不是需要的。为啥会这样呢,查map在mdn中的定义,发现了一段关键的话:callback is invoked only for indexes of the array which ha

2021-04-08 14:51:30 628

原创 js数组基础方法-slice

根据ECMA标准,简单模拟出slice方法的定义:function ArraySlice(start, end) { var array = Object(this); var len = array.length; var start_i = Number(start); var end_i = len; if (!IS_UNDEFINED(end)) end_i = TO_INTEGER(end); if (start_i < 0) { start_i += le

2021-03-25 17:38:07 151

原创 由一道题看push方法的实现原理

最近同事分享了一道题let obj = { 2:3, 3:4, length:2, push:Array.prototype.push } obj.push(1) obj.push(2) console.log(obj)obj是一个类数组,其中引入了Array原型链上的push方法,关键就是要搞清楚Array.prototype.push的方法定义。经过查看资料,发现push的方法可以用js如下模拟:Array.prototype.push = function(.

2021-03-18 16:06:24 328

原创 浏览器下载文件的方法总结

背景在lims3项目中,遇到了导入导出的需求,导入较简单,导出分两种,一种是由当前已经拿到的数据生成excel文件,这部分前端借助插件也比较容易完成。但另一种导出,由后台生成文件流,前端接收并下载,我们在这里耗费了较多时间。我们的框架是vue,http请求使用的是axios,很自然地,我们按照后台提供的API进行请求,期望可以返回一个文件地址,或者开始下载文件,并且可以正常打开。然而我们拿到的返回结果很奇怪。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oTWQiNRL

2021-03-04 15:24:35 4374 3

原创 Vue的一点总结

Vue实现双向绑定的原理当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是 Vue 不支持 IE8 以及更低...

2020-05-08 09:48:21 269

转载 防抖解析

先简单介绍一下debounce,从最简单的一个场景入手,当用户不断点击页面,短时间内频繁的触发点击事件,只有在用户触发事件后的ns时间内,没有再触发事件,真正的监听函数才会执行,如果在这段时间内再次触发了事件,就需要重新计算这个ns时间。debounce最主要的作用是把多个触法事件的操作延迟到最后一次触法执行,在性能上做了一定的优化。这幅图算是很形象地展示了debounce的作用。正常,移...

2019-08-26 15:21:56 321

转载 移动端Click300毫秒点击延迟的来龙去脉(转)

原文地址:What Exactly Is….. The 300ms Click Delay快速响应是所有 UI 实现的重中之重。研究表明,当延迟超过 100 毫秒,用户就能感受到界面的卡顿。 然而,出于对手指触摸滑动的区分,移动端页面对于触摸事件会有 300 毫秒的延迟,导致多数用户感觉移动设备上基于 HTML 的 web 应用界面响应速度慢。 本文主要讨论上述延时的来历,浏览器生产商的考虑,以...

2019-07-08 16:19:49 767

原创 面试必备系列(一):原型链与继承

js的继承没有多么神秘,本质上,它的存在就是为了帮助我们复用属性和方法,并将所有对象联系起来。一切为了简化Brendan Eich开始设计js的时候,正值面向对象编程兴盛,受此影响,js里面的所有数据类型都是对象(准确地说,是所有引用类型)。由于最初对js的定位就是一种脚本语言,Brendan Eich希望设计得简单一点,在设计继承机制时,没有引入类的概念,而是使用new + 构造函数的方式,...

2019-06-21 22:14:58 739

转载 小程序的底层双线程框架解析

原文地址一切始于双线程技术选型上一节《小程序的诞生》中,我们也提到了小程序的双线程设计。目前来说,页面渲染的方式主要有三种:Web 渲染。Native 原生渲染。Web 与 Native 两者掺杂,也即我们常说的 Hybrid 渲染。前面也说过,小程序最终的呈现形式,是 WebView + 原生组件,Hybrid 方式。我们结合之前对小程序的期望来看:开发门槛:Web 门槛低...

2019-05-29 17:14:38 1572

原创 Vue中$attrs和inheritAttrs的理解

开发过程中我们有时就遇到这样的场景:1).我们需要在引用的父组件中,根据需要添加一些属性,而这些属性我们又不希望在组件中一一利用props传递;2).我们怎样确定父组件中添加的这些属性会添加到子组件的哪个元素中官方文档讲解组件的属性传递时,讲到$attrs和inheritAttrs这两个属性,且两个属性结合会比较好用。乍一看没看懂,结合代码演示才搞清楚。在此记录,也供有同样困惑的朋友分享。...

2019-05-26 16:21:47 1215 1

原创 移动端兼容问题

1.input占位符在iOS中显示不全位置偏下,解决方案:input::placeholder{ font-size:95%; line-height:100%;}

2018-12-20 11:46:32 440

原创 css常见问题解决方案总结

1.清除浮动较好的方法::after伪类+content内容生成兼容性:大部分浏览器支持(Firefox 1.5+, Safari 3.5+, IE 8+, Opera 9.2+, Chrome 0.2+)// 兼容IE6/7,因其不支持:after伪类。设置该属性可以触发IE的haslayout属性,从而清除浮动.fix{*zoom:1;} .fix:after{display:blo...

2018-12-13 21:38:57 405

转载 Mac环境下 Chrome 浏览器 快捷键

一直习惯于用Chrome浏览器,但Win下的和Mac下的快捷键不一样,整理一下Mac下的Chrome浏览器快捷键以便备用,吐槽下明明想选择地址栏总是加入收藏栏,win下是D,Mac下是L,历史分别是H和Y,有点儿分裂的感觉…1. 标签页和窗口快捷键⌘-N打开新窗口。⌘-T打开新标签页。⌘-Shift-N在隐身模式下打开新窗口。按&nbsp;⌘-O,然后选择文件...

2018-12-04 11:00:04 241

转载 mac终端下svn常用命令

svn基本的操作流程就是:  你刚刚进入一个新的公司,让你接手一个正在进行的项目,你打开终端写下了:svn co&nbsp;svn://192.168.1.1/pro/domain然后就可以在当前目录里面找到一个叫domain的项目,cd domain,你浏览了几行代码,太特么的竟然有bug,你忍不住改了,你要提交了,svn ci -m 'something' &nbsp;,成功。你又在dom...

2018-12-04 10:56:13 274

原创 Tomcat端口被占用解决办法

由于以前使用nginx,并且端口号使用默认的8080,因此打开localhost:8080 显示的是nginx的欢迎界面。这样,首先需要禁掉nginx进程,接着需要重启tomcat1.禁掉被占用进程找到占用端口的进程号sudo lsof -i -n -P | grep 8080禁掉该进程号sudo kill -9 4212.重启tomcat进入tomcat 的bin文件路径...

2018-12-04 10:48:06 389

原创 Mac环境下 安装MySQL / 设置环境变量 / 修改密码 等常见问题

登录Mysql:“输入mysql -u帐号 -p密码 这是登陆mysql退出:mysql &amp;amp;gt; exit;以下是实例参考下:登录Mysql:“输入mysql -uroot -p -P3306 -h127.0.0.1”表示超级用户名root,密码稍后输入,端口号3306(不输入P默认为3306),主机地址127.0.0.1(若使用本机作为主机,h默认127.0.0.1)mysql退出...

2018-11-29 13:01:59 332

原创 iOS上线app中遇到的问题

最近一直在做混合开发app。app打包过程中遇到的问题等记录于此除了同事撰写的发布步骤,中间还遇到了不少问题;咨询了同事,原来这是Xcode的bug,不影响项目运行;使用模拟器运行正式包的过程中出现以下报错按照提示删除了node_modules依然不行,再次求助龚宇,将项目打包出来就可以正常运行,真是奇怪;command+逗号, 检查账号身份,删掉当前的账号,重新登...

2018-11-28 15:07:45 421

转载 React Native 指定文字行数,超出行数显示更多

纯属于工具类,简单的说一下原理, 1、在不给text设置numberOfLines的时候计算出text的高度。 2、给text一个特定的numberOfLines,然后再次计算高度。 3、比较两次获取的高度,如果第二次获取的高度&lt;最大高度,说明需要换行,回调给页面。 4、页面通过回调知道需不需要显示“加载更多操作”。用法:&lt;MutiRowText ...

2018-09-28 14:57:05 7437

原创 webpack踩坑

1.使用提取公共模块 webpackJsonp is not defined 解决办法: webpack.config.js中所申明的打包文件名,必须在index.html中引用,不引用完全则会报错。

2018-08-25 09:51:08 179

转载 如何查看文件夹被什么程序使用

windows系统中当我们在删除某个文件或文件夹时有时会提示该文件有程序在使用不能被删除,这时相当惆怅。那么可以用这个方法来找到是哪个进程在占用该文件:&nbsp;&nbsp;1:打开任务管理器选择“性能”&nbsp;&nbsp;2:单击下部的“资源监视器”&nbsp;&nbsp;3:选择“CPU”,在下部可以看到“关联的句柄”搜索框&nbsp;&nbsp;4:在该搜索框中输入要删除的文件名回...

2018-05-16 11:09:48 3140

原创 Android环境搭建

在学习用RN写app。 实现emulator命令行启动模拟器,一定注意将emualtor.exe文件加入系统环境变量

2018-05-05 21:26:36 191

转载 细说react-native中的SectionList

RN官网文档有点过于简洁,花了点时间才搞清楚sectionlist的用法。重点关注:renderSectionHeader的传值方式。 1、在说SectionList之前,我们先来讲讲ScrollView、ListView/FlatList和SectionList几者之间的区别?ScrollView和ListView/FlatList应该如何选择?...

2018-04-23 20:15:58 1229

转载 video禁止自动全屏

video自动禁止全屏 在微信浏览器、苹果等其他浏览器,里面使用video标签,会自动变成全屏,改成下面就好了,起码可以在video标签之上加入其他元素&nbsp;&nbsp;webkit-playsinline&nbsp;playsinline&nbsp;x5-playsinline&nbsp;x-webkit-airplay=”allow”;&nbsp;如:...

2018-04-16 17:38:07 7156 3

转载 js中的extend

1.&nbsp;&nbsp;&nbsp; JS中substring与substr的区别之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为这两种方法的使用时一样的。这样就直接按照在C#中使用Substring的方式,直接在js中用了substring,在实际的项目中,有时候能得到正确的结果,但是有时候得...

2018-04-15 18:59:21 682

原创 RN第三方库汇总

1.mobx:状态管理工具文档用法场景: 1.交互的数据不需要使用setState来改变; 2.跨组件交互对什么做出反应: MobX基本上做的是记录你在函数中使用的是哪个箭头。之后,只要这些箭头中的其中一个改变了(它们开始引用别的东西了),它就会重新运行。mobx常用的标签@observable: 使用此标签监控要检测的数据; @observer: 使用此标签监...

2018-03-22 10:47:23 735

原创 嵌套Swiper出现的问题

一.嵌套swiper 1.内部嵌套swiper没有及时更新, 注意添加监控器Observer. 2.切换外部swiper,内部嵌套swiper没有归位到第一个页面:var parentSwiper = new Swiper('.sdetilModal.swiper-container', { .... onSlideChangeStart: function(swiper){ ...

2018-03-15 15:12:41 3497

空空如也

空空如也

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

TA关注的人

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