TS的学习笔记
基础啥是 TS?我是这样解释的,JS 是一门的动态的语言,也就是说它没有编译阶段,这样就会导致等到运行的时候才会发现本应该在编译期间就知道的错误,比如说语法错误。TS 就不一样了,它是一门静态的语言,所以它会有编译的阶段,先编译成 JS,这个过程就可以知道很多错误的地方,因此 TS 会比 typescript 更加强大。
TS 依旧是 typescript 一样是弱类型的语言,也就是说它兼容所有的 typescript 特性,强弱类型的区别特征是会不会进行类型的隐形转换,JS 会,TS 兼容 typescript 的所有特征,所以也会,但是可以通过手段来限制。
原始数据类型布尔值需要注意的是,通过构造函数Boolean创造的对象不是布尔值,而是Boolean对象。其他的基本类型也是一样,除了null和undefined
let isDone: boolean = false; // ✅
let isDone: Boolean = new Boolean(1); // ✅
let isDone: boolean = new Boolean(1); // ❌
数值let a: num ...
Vue3基础
Fragmentvue3 中 template 中不一定只要一个 div 进行包裹,可以有多个
script<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
setup(){
return{} // 这里返回的属性方法会合并到data函数中和methods对象里面
}
})
</script>
使用 TS 的话只需要标记lang="ts"
defineComponent用来创建一个组件
setup
组合式 API 的入口
setup 是在beforeCreate之前执行的,所以里面是没有 this 的,this==='undefined',因此 setup 里面无法访问 data 里面的属性和 methods 里面的函数。
setup 的返回值,返回的属性是合并到 data 函数里面的,返回的方法是合并到 methods 对象里面的,所以组件中利用 this 可以访问到返回的东西。
Sus ...
React学习笔记
JSX 的语法规则:
定义虚拟 Dom 的时候,不要写引号
标签中的 JS 表达式必须用{}包裹,是表达式不是 JS 代码,不是 JS 语句
区分 JS 语句【代码】和 JS 的表达式
一个表达式会产生一个值,可以放在任何一个需要值的地方,以下都是表达式
1、a
2、a+b
3、demo(1)
4、arr.map() // 会返回一个数组
5、function test() {}
JS 语句
1、if(){}
2、for(){}
3、switch(){case:xxx}
样式的类名指定不要使用 class,使用 className
内联样式,要用style={{key:value}}的形式去写,第一层的{}代表的是 JS 表达式,第二层代表是一个对象,所以 value
需要使用引号,如果是 font-size 属性这样的,需要写成 fontSize
只有一个根标签
标签必须闭合或者自闭合
标签首字母
如果是小写字母开头,则将该标签转为 html 中的同名元素,如果 html 中找不到对应的话,就会报错。例如
如果是大写字母开头,reac ...
hexo 使用教程
新建一篇博客$ hexo new "My New Post"
提交修改到my-blog上git add .
git commit -m "msg"
git push origin master:my-blog
自动开启自动化部署打开https://jingwzeng.github.io就可以自动部署
表情包😄 😖 😨 😰 😣表情包代码地址:https://www.webfx.com/tools/emoji-cheat-sheet/#tabs-3
🆖 8⃣🅰😊
validate-npm-package-name源码
作用: 校验npm包的名字是不是可用的。var validate = require("validate-npm-package-name")
validate("some-package")
validate("example.com")
validate("under_score")
validate("123numeric")
validate("@npm/thingy")
validate("@jane/foo.js")
// 输出结果为一个对象
{
validForNewPackages: true,
validForOldPackages: true
}
builtins包可以看到,validate-npm-package-name源码首先就引进该包,那么这个包有啥作用呢?其实它的作用是nodeJS的内置的模块module的列表清单。就是nodeJS的有每个不同版本有啥模板功能。比如常见的fs、http等。
'use strict'
var semver = require('semver')
module.exports = function (versio ...
TS的学习笔记
indexOf: 只传一个参数的话,查找第一个指定字符的位置,返回相应的下标值,未找到则返回-1,两个参数 indexOf(’要查找的字符’,开始的位置)。
lastIndexOf: 从后往前查找,其余同上,注意下标值是正常顺序。
chartAt(下标): 返回指定下标位置的字符。等同 str[下标]。
str[下标]: 返回指定下标位置的字符。等同 chartAt。
charCodeAt(下标): 返回指定下标位置的字符的 ASCII 值。
toUpperCase: 将字符串转换成大写。
toLowerCase: 将字符串转换成小写。
trim: 删除字符串两侧的空格,注意只删除两边,中间的空格不会删除。
length: 返回字符串的长度。
concat: 字符串拼接,得到新的字符串,我们一般还是喜欢用+号方便。
slice(n,m): 字符串的截取,返回 n-m 之间的字符串,注意 n 取值,m 不取值,包头不包尾,同 substring
substring(n,m): 字符串的截取,返回 n-m 之间的字符串,注意 n 取值,m 不取值,包头不包尾,同 slice
substr ...
JS的宏任务与微任务
JS 是单线程语言。执行过程中产生两种任务:同步任务和异步任务。
同步任务:比如声明语句、for、赋值等,读取后依据从上到下从左到右,立即执行。
异步任务:比如 ajax 网络请求,setTimeout 定时函数等都属于异步任务。异步任务会通过任务队列(Event Queue)的机制(先进先出的机制)来进行协调。
任务队列任务队列中的任务也分为两种,分别是:宏任务(Macro-take)和微任务(Micro-take)
宏任务主要包括:scrip(JS 整体代码)、setTimeout、setInterval、setImmediate、I/O、UI 交互
微任务主要包括:Promise(重点关注:值的是 then 部分)、process.nextTick(Node.js)、MutaionObserver
执行规则:理解这个就可以应对执行顺序啦
第一次初始化,先执行全局的 js 代码(scrip)的宏任务,然后进入 Event loop,此时先执行微任务,再执行宏任务。微/宏任务之间安装先进先出的机制执行。
例 1:
console.log("script start");
s ...
撤销commit
写完代码后,我们一般这样
git add . //添加所有文件
git commit -m "本功能全部完成"
执行完commit后,想撤回commit,怎么办?
git reset --soft HEAD^
这样就成功的撤销了你的commit
注意,仅仅是撤回 commit 操作,您写的代码仍然保留。
说明:HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
至于这几个参数:–mixed意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^效果是一样的。
–soft不删除工作空间改动代码,撤销commit,不撤销git add .
–hard删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
顺便说一下,如果 commit 注释写错了,只是想改一下注释,只需要:git commit --amend
此时会进入默认vim编 ...
windons下利用gitbash装zsh
方法利用git bash进行改装,设置打开git bash之后默认就是zsh
步骤
安装git,自行google
下载zsh for wsl
下载地址
解压到git的根目录里面,就可以啦。可以利用peazip进行解压,解压之后会自动往git的usr/bin里面注入这些东西,之后去随便打开一个git bash,敲一下zsh命令(貌似会出现一大堆东西,不过没关系,不用理它,这个时候一般都是成功安装啦。)
敲一下zsh之后,安装oh my zsh,命令行地址
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
配置oh my zsh
配置git bash默认启动为zsh。之后打开新的git bash就是zsh啦。
修改~/.bashrc,追加以下内容
# Launch Zsh
if [ -t 1 ]; then
exec zsh
fi
配主题
主体推荐:powerlevel10k
p10k 需要对应的字体图标才不会显示乱码:我用的字体是MesloL ...
js中if/else优化
单个 if// before
if (flag) {
handler();
}
// pref
flag && handler();
if/else排非// before
if (user && password) {
// 逻辑处理
} else {
throw "用户名和密码不能为空!";
}
// pref
if (!user || !password) return throw "用户名和密码不能为空!";
三元// pref
condition ? successHandler() : failHandler();
单个 if 多条件// before
function isImage(type){
if(type === 'jpg' || type === 'gif' || type = 'png' || type === 'webp'){
console.log('图片')
}
}
// pref
const imgArr = ['jpg','gif','png','webp']
imgA ...