1. 场景unapp-vue2 app上预览pdf,并且需要可以下载pdf文件。
2.问题uniappapp上并不能直接操作dom,导致不能直接使用 html2canvas 或者 jsPDF 这类库来生成pdf文件。
3. 解决方案找了很久,在uniapp的插件商店上找到了可以使用的插件,sp-html2pdf-render 文档地址
本来以为问题可以解决了,预览PDF发现,分页没有做适配,当项数据在当前页放不下时,直接另一半在下一页出来了,正常来说,当前项数据在这一页放不下时,应改放到下一页渲染的,而不是上一页渲染一半,下一页又渲染一办,这样及其不美观
后来打算在组件源码上解决
4.修改代码找到组件 sp-html2pdf-render.vue 的代码 ,找到 <script module="h2pRender" lang="renderjs"> 里面的renderDom()方法在1234if(!el) { console.error('dom盒子未加载成功,请先确保dom渲染完成,再检查你的 ...
1. 场景 当 el-input 的 type 为 text 时,我们需要限制输入框只能输入数字和小数。
2. 解决方案方法一:
123456789<el-input v-model="sjje" oninput ="value=value.replace(/[^0-9.]/g,'')" class="money sjje"> <span slot="suffix">/ 元 </span></el-input> <!--oninput = “value=value.replace(/[^\d]/g,‘’)” //只能输入数字oninput = “value=value.replace(/[^0-9.]/g,‘’)” //只能输入数字和小数-->
方法二
1234567<el-input v-model="sjje" class="money sjje" @input="i ...
1. 场景 当 el-input 的 type 为 number 时,右侧的加减号会显示,但是有时候我们不需要这个加减号,比如只需要输入数字,不需要加减号,这时我们需要隐藏加减号。另外,当 el-input 的 type 为 number 时,输入中文时,光标会偏移,这时我们需要解决这个问题。
2. 解决方案 添加一下样式即可解决上述两个问题:1234567891011121314::v-deep .el-input { input[type="number"] { padding-right: 0px; -moz-appearance: textfield; -webkit-appearance: textfield; // 解决el-input设置类型为number时,中文输入法光标上移问题 line-height: 1px !important; } input[type="number"]::-webkit-inner-spin-button, input[type=&q ...
1. 场景el-dialog 隐藏遮罩并且可以控制弹窗后的元素、点击、滚动、其他事件操作,比如一个弹窗打开了,我要能控制弹窗后面的滚动、点击等等一系列事件。
2. 解决方案 一、去掉遮罩层 添加 :modal=”false”、:close-on-click-modal=”false” 两个属性去掉遮罩层 1234567 <el-dialog v-model="DialogVisilble" :width="360" title="示例" :modal="false" :close-on-click-modal="false"></el-dialog> 二、正常操作底层页面 当添加上述的属性后,发现仍然无法正常操作底层页面,这时我们需要添加如下代码:12345678<el-dialog v-model="DialogVisilble&quo ...
brew常用命令1、brew的安装https://brew.sh/
2、常用命令1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465//查看brew的版本brew -v//更新homebrew自己,把所有的Formula目录更新,并且会对本机已经安装并有更新的软件用*标明brew update//查看命令帮助:brew -help//查看那些已安装的程序需要更新brew outdated//更新单个软件:brew upgrade [包名]例:brew upgrade git//更新所有软件:brew upgrade //安装软件brew install [包名]@版本例:brew install git//卸载brew uninstall [包名]例:brew uninstall git//清理所有包的旧版本 (安装包缓存)brew cleanup 例:brew cleanup -n //显示要删 ...
warning
ban
你不知道的JavaScript(上)为什么读(解决那些问题)JavaScript语言本质上有许多复杂的概念,但是却用一种看起来比较简单的方式体现出来,比如回调函数,因此JavaScript开发者通常只是简单的使用这些特性,并不会关心语言内部的实现原理
如果每次遇到JavaScript中出乎意料的行为时,你的反应就是把他加入黑名单,那么用不了多久就会把JavaScript语言真正的多样性全部排除
作用域是什么储存和访问变量的值的能力将状态带给了程序,这些变量储存在哪里?程序如何找到它们,这个查找规则被称为作用域
编译原理尽管通常将js归类为动态或解释执行语言,但事实上它是一门编译语言。与传统的编译语言不同,它不是提前编译的,编译结果不能再分布式系统中进行移植
传统语言的编译原理
分词/词法分析将由字符组成的字符串分解为有意义的代码块,这些代码块被称为词法单元
解析/语法分析 将词法单元转换为AST
代码生成 将AST转换为可执行的代码
JavaScript引擎要复杂的多(也会在执行前进行编译),不会有大量的时间来进行优化,因为JS编译过程不是发生在构建 ...
唐诗诗歌的起源诗词,其实就是古代的流行歌曲,它们记录着一个个时代的变迁;如果史书事国家视角,记录的是帝王将相史,那么诗歌就是个人视角,记录的是个人的喜怒哀乐。比起历史的过眼云烟,诗歌包含着诗人丰富的个人情感,这些情感史永恒的,所以诗歌是一种表达情感的高级方式
诗歌的起源于干活时候的口号,中国第一首诗叫做《弹歌》,讲的是原始社会打猎的是,全诗一共八个字 断竹,续竹,飞土,逐肉 (其实这首诗就是个口号,干活的时候一块喊喊,大概类似于做操时候喊的节拍)
西周,周公搞了一套礼乐制,把礼节、音乐、舞蹈上升到国家高度。还特意设置了一个采诗官的机构,专门收集各地的民歌,交给朝廷专门的歌舞图谱曲。
这些诗歌流传下来,据说孔子把它们又整理了一遍,这就是中国的第一本诗歌总集《诗经》,《诗经》共有诗歌305首,所以后人又称为《诗三百》,
《诗经》拢共有三种类型
风:又称国风,就是各地民歌
雅 :大部分是贵族音乐,比如开宴会时的曲子
颂:特别重大的正式场合演奏的音乐,比如祭祀时用的曲子
里面的诗,基本是四个字一小句,实际上是两组词拼在一块组成的,读起来是‘二/二’的形式,这就是四言诗 例如:( ...
算法复杂度怎么理解算法呢?
简单说就是,同一个功能
别人写的代码跑起来占内存100M,耗时100毫秒
你写的代码跑起来占用内存500M,耗时1000毫秒,甚至更多
所以
衡量代码好坏有两个非常重要的标准: 运行时间(时间复杂度)和占用空间(空间复杂度)
时间复杂度举个例子
12345function fn1(){ console.log("我吃了一颗糖") console.log("我又吃了一颗糖") return "再吃一颗糖"}
调用这个函数,里面总执行次数就是3次
下面这个例子
123456function foo2(n){ for( let i = 0; i < n; i++){ console.log("我吃了一颗糖") } return "一颗糖"}
这个函数总执行次数会根据我们传进去的值不一样,执行次数也不一样,大概次数如下
12345let i = ...
1.unknownunknownunknown类型,任何类型都可以赋值为unknown类型。 它是 any 类型对应的安全类型
123let unknown:unknown;unknown = 'zf';unknown = 11;
不能访问unknown类型上的属性,不能作为函数、类来使用
联合类型中的unknown
1type UnionUnknown = unknown | null | string | number
联合类型与unknown都是unknown类型
交叉类型中的unknown
1type inter = unknown & null
交叉类型与unknown都是其他类型
unknown特性
never是unknown的子类型
1type isNever = never extends unknown ? true : false;=
keyof unknown 是never
1type key = keyof unknown;
unknown类型不能被遍历
1unknown类型不能被遍历
unknown类型不能 ...
1. 泛型 (generic)文档解释介绍软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。
在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。
泛型之Hello World下面来创建第一个使用泛型的例子:identity函数。 这个函数会返回任何传入它的值。 你可以把这个函数当成是echo命令。
不用泛型的话,这个函数可能是下面这样:
123function identity(arg: number): number { return arg;}
或者,我们使用any类型来定义函数:
123function identity(arg: any): any { return arg;}
使用any类型会导致这个函数可以接收任何类型的arg参数,这样就丢失了一些信息:传入的类型与返回的类型应该是相同的。 如果我们传入一个数 ...





























