1、VueUse
more >> VueUse 是 Anthony Fu 大佬的一个开源项目,它为Vue的开发者提供了大量用于 Vue2 和Vue3 的基本 Composition API 实用工具函数。
它有几十个用于常见开发人员用例的解决方案,如跟踪
ref
更改,检测元素可见性,简化常见Vue模式,键盘/鼠标输入等。 这是真正节省开发时间的好方法,因为我们不必自己亲手添加所有这些标准功能,拿来主义,用就对了(再次感谢大佬的付出)。
前端小趴菜
唯一的区别在于 Rect.Component 没有实现 shouldComponentUpdate() *一个不太常用的生命周期方法*, 而 React.PureComponent 中以浅层对比 prop 和 state 的方式来实现了该函数。
more >>注意
React.PureComponent 中的 shouldComponentUpdate() 仅作对象的浅层比较。如果对象中包含复杂的数据结构,则可能无法检查到深层的差别,产生错误的对比结果。所以只在props 和 state 比较简单时使用这个,或者在深层数据结构发生变化时调用forceUpdate()来确保组件被正确地更新。也可以使用immutable 对象加速嵌套数据的比较。
此外,React中 的 shouldComponentUpdate() 将跳过所有子组件树的 prop 更新。因此,确保所有子组件也是“纯的”组件。
这是应为 组件内 在加载前和加载中是一个类名为el-image__placeholder的div标签,在加载后和加载出错后的处理分别是一个div和img标签。
解决方法:在加载前和加载后的样式上做更改,可以重写覆盖类名el-image__placeholder和el-image__error来自定义自己想要的效果了
1 | // 将默认的白色背景去除 |
预置三种动画
- opacity-scale
- switch-right
- switch-left
1 | /** |
设置路由
通过设置路由属性 meta.sort 来记录路由位置
1 | const routers = [ |
监听路由变化
1 | { |
本质上就是路由重复注册导致的提示,我们可以在每次登出时,清除注册路由
在 router 文件中
1 | import Vue from 'vue' |
退出登录时调用
1 | loginOut() { |
需要在 axios 响应拦截时处理
1 | if(code == 401) { |
在全局路由前置守卫合适的地方添加判断
1 | let redirect = new URLSearchParams(location.hash.slice(7)).get('redirect'); |
需求:通过变量形式加载img。
1 | const getAssetsFile = (url) => { |
此方式引入图片开发环境没问题,但是打包图片404
解决方式1
直接导入再使用
1 | import icon_1 from '@/assets/icon/1.png' |
1 | <div v-for="(item, index) in array"> |
解决方式2
全部导入,通过路径去匹配
1 | const getAssetsFile = (name) => { |
之前替换背景样式总是不免一番大改,如果背景图空白较大,还得调整下弹窗的布局。可谓麻烦之极。所以突发奇想,有啥办法可以一劳永逸,至少不会影响弹窗的布局,比如让背景图在弹窗后面出现。这样只需将弹窗背景设置为透明就没有其他问题了。
1 | .el-dialog { |
利用伪类将弹窗等大扩展一下将原来的弹窗包裹进去,这样就可以简单的实现替换弹窗风格了
伪类支持url, 但是这样会有个问题,缩放时图片的尺寸不受控。如果做了 px2rem 不起作用
1 | .box { |
修改如下
1 | .box { |
目的是滚轮滚动一下就实现翻页效果,不分页的表格数据展示中
1 | <el-table |
1 | let testTable = ref(null); |
iconfont只有 fontawesome 的css文件,没有其他用法,但是图标比 fontawesome 多,全免费,但是风格不都统一需要筛选
图标较少(6.7 free版本有2060个图标,包括实体,常规,网站图标三种类别),pro版本不是免费,相比较于 iconfont 这里得图标尺寸风格统一不需要调整
1 | |-/css/ # 用于web开发时候使用,一般情况下只需引用这里的all.min.css即可正常使用fontawesome字体图标了) |
跳转
1 | const SkipPage = (row) => { |
接收
1 | onMounted(()=>{ |
此方式传参页面刷新有效,且不能清空。除非修改history
1 | // 清空当前页面的 history.state |
在全局状态中使用 theme 变量存储主题,这样就不用一个个得去修改相关得 element ui 组件了
theme.js
1 | // 处理主题样式 |
初始化时加载主题, 如果还有配置页面也可以加上这个动作
1 | import useSettingsStore from '@/store/modules/settings' |
思路,先有一个全国范围到县级(3级)的地图名称编码映射下载地址,然后去下载每个省份的地图(市级),及县级地图数据,每个省两个json数据【之前有想下载一个全国的地图作为省级,但是全国地图省级没有市级的范围,其实是可行的🧓🏽】,然后默认显示对应省份地图,每次点击后动态组装下级地图(例如:点击合肥市,就将合肥市下边所有县区级地图组装,县级就直接渲染),然后渲染出来
1 | <!-- |
1 | <template> |
netstat
是一个命令行工具,可以提供有关网络连接的信息。
要列出正在侦听的所有TCP或UDP端口,包括使用端口和套接字状态的服务,请使用以下命令:
1 | sudo netstat -tunlp |
此命令中使用的选项具有以下含义:
vue + sacc 项目, 公用样式 common.scss 样式嵌套写法导入不生效
现象:样式表只有最外层样式生效,嵌套样式不生效(没有解析嵌套语法)
下面这种方式导入,样式不能嵌套写。 必须使用 层级选择器方式
1 | @import url('@/style/common.scss'); |
解决:
1 | @import '@/style/common.scss'; |
rem 自适应方案
1 | (function(doc, win) { |
patch-package 这个库来解决这类问题。一方面,它能记录第三方库代码的改动,另一方面也能将改动同步到团队每个成员。
1 | npm install patch-package -D |
more >>注意: 要改动的包在 package.json 中必须声明确定的版本,不能有~或者^的前缀。
number
,
string,
boolean,
symbol、bigint、object,
null或
undefined
any 类型
any 类型可以赋值任何类型,同样 any 类型可以赋值给其他类型造成污染
unkonwn 为避免any类型污染问题,unknown类型作用与any一致,但是它只能赋值到unknown/any类型的变量上
要想使用 unknown 类型,必须缩小范围,否则无法使用
uknouwn运算有限, 只能进行比较运算(运算符==
、===
、!=
、!==
、||
、&&
、?
)、取反运算(运算符!
)、typeof
运算符和instanceof
运算符这几种
1 | let a:unknown = 1; |
1 | let a:unknown = 1; |
never
为了保持与集合论的对应关系,以及类型运算的完整性,TypeScript 还引入了“空类型”的概念,即该类型为空,不包含任何值。
由于不存在任何属于“空类型”的值,所以该类型被称为never
,即不可能有这样的值。
1 | 1、函数抛出错误,不可能有返回值 |
object 类型
大写的Object
类型代表 JavaScript 语言里面的广义对象。所有可以转成对象的值,都是Object
类型,这囊括了几乎所有的值。除了 Null / undefined
1 | let obj:Object; |
undefined/null
既是值,又是类型。
作为值,它们有一个特殊的地方:任何其他类型的变量都可以赋值为undefined
或null
。
1 | const str: string = 'hello there' |
判断一个对象是否为数组,兼容 哪些旧版本浏览器。
如果 不需要兼容旧版浏览器,建议直接使用 数组的 isArray 方法
安装
1 | $ npm install isarray |
示例
1 | var isArray = require('isarray'); |
简单的展示其原理
1 | const isArray = Array.isArray || list => ({}).toString.call(list) === '[object Array]' |
1 | $ npm install depcheck -g |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true