表格
- vxe-table
用户指引
- Intro.js/Driver.js
css学习
github上的icss项目
样式效果库
- 源码 github.com/hepengwei/v…
- gitee: git clone gitee.com/hzy45/visua…
- 效果 hepengwei.cn/#/html/visu…
- uiverse.io/cards
- csscoco.com/inspiration…
- github.com/chokcoco/iC…
css技巧库
qishaoxuan.github.io/css_tricks/…
js常用方法
monsterwx.gitee.io/blog/docs/a…
js练习
js数字范围
(2^53 - 1)= 9,007,199,254,740,991 //16位
(-(2^53 - 1))
客服聊天工具
移动端网页开发调试工具//////待实践
import Devtools from 'vue-vconsole-devtools' 1.0.9 //可结合vconsole 3.15.1使用,有vue项目栏
import eruda from 'eruda' //可选择页面元素 3.0.1
身份认证小知识
-
前后端分离推荐使用 JWT(JSON Web Token)
-
Session 认证的局限性:
- Session 认证机制需要配合 Cookie 才能实现。由于 Cookie 默认不支持跨域访问,所以,当涉及到前端跨域请求后端接口的时候,需要做很多额外的配置,才能实现跨域 Session 认证。
- 当前端请求后端接口不存在跨域问题的时候,推荐使用 Session 身份认证机制。
- 当前端需要跨域请求后端接口的时候,不推荐使用 Session 身份认证机制,推荐使用 JWT 认证机制
ts争议
- 替代品:js-doc
转json时会被丢弃的值
undefined
、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成null
(出现在数组中时)。函数、undefined 被单独转换时,会返回 undefined,如JSON.stringify(function(){})
orJSON.stringify(undefined)
.
JSON.stringify({name:undefined})
'{}'
JSON.stringify({name:12})
'{"name":12}'
拦截并修改请求响应
- 拦截列表下面的小黑窗,输入 bpafter url (www.abc.com/abc 这种形式)即可拦截该请求
- 可以修改响应的返回值,然后点绿色按钮,该请求就被修改并返回接受到
- 小黑窗里再次输入 bpafter 并回车,即取消所有响应拦截
快速从文件夹处打开cmd
- 地址栏,空格前加cmd回车即可
Alfred/utools工作流(待考究)
搜索关键字高亮
- vue项目里拉出来列表,通过输入框输入关键字,匹配筛选的方案
-----template--------
<el-input size="mini"
placeholder="请输入关键字"
v-model="searchText"
@input="searchChange"
class="search">
<div :class="item"
v-for="(item,index) in showList"
:key="index"
@click="selItem(item)">
<span class="name"
v-html="light(item.name)"></span>
</div>
----methods-------
light(val) {
if (!this.searchText) {
return val
}
let reg = new RegExp(this.searchText, 'i')
let matchList = val.match(reg)
var keyWord = `<span style="color:red;">${matchList[0]}</span>`
return val.replace(reg, keyWord)
},
emoji统计字数出错
- emoji是utf-16,注意split并不能把emoji拆出来
pre标签
HTML <pre>
元素表示预定义格式文本。在该元素中的文本通常按照原文件中的编排,以等宽字体的形式展现出来,文本中的空白符(比如空格和换行符)都会显示出来。
Unicode和utf-8的关系
- Unicode是字符集,制定了每个字符的二进制,但是符号具体如何存储它并没有规定
- Unicode 字符集的编码范围是 0x0000 - 0x10FFFF,因此需要 1 到 3 个字节来表示
- UTF-8、UTF-16、UTF-32 中的 "UTF" 是 "Unicode Transformation Format" 的缩写,意思是"Unicode 转换格式",后面的数 字表明至少使用多少个比特位来存储字符, 比如:UTF-8 最少需要8个比特位也就是一个字节来存储,对应的, UTF-16 和 UTF-32 分别需要最少 2 个字节 和 4 个字节来存储
- utf-8 就是对unicode进行编码转换,实现可变长1~4字节存储
UTF-8 的编码规则:
- 对于单字节的符号,字节的第一位设为 0,后面 7 位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的, 所以 UTF-8 能兼容 ASCII 编码,这也是互联网普遍采用 UTF-8 的原因之一
- 对于 n 字节的符号( n > 1),第一个字节的前 n 位都设为 1,第 n + 1 位设为 0,后面字节的前两位一律设为 10 。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码
- UTF-32 是固定长度的编码,始终占用 4 个字节,足以容纳所有的 Unicode 字符,所以直接存储 Unicode 码即可,不需要任何编码转换。虽然浪费了空间,但提高了效率。//用的不多
策略模式
先来看下策略模式的定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
简单来说就是有多种选择
,然后一般只会选择一种
。从代码的角度来说就是,定义一系列的if
和elseif
,然后只会命中其中一个。
const strategies = {
"high": function (workHours) {
return workHours * 25
},
"middle": function (workHours) {
return workHours * 20
},
"low": function (workHours) {
return workHours * 15
},
}
const calculateSalary = function (workerLevel, workHours) {
return strategies[workerLevel](workHours)
}
console.log(calculateSalary('high', 10)) // 250
console.log(calculateSalary('middle', 10)) // 200
vscode写51/32程序
- 寄生在keil之上,利用它的能力 mp.weixin.qq.com/s/aIidfGLhw…