作为程序员,在平时的开发中肯定少不了一些命令行操作了。当然,简单的命令大家都是可以拿捏的,但是涉及到一些逻辑的时候还是比较头疼的。 ShellShell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。它既是一种命令语言,又是一种程序设计语言。 Shell 脚本(shell script),是一种为 shell 编写的脚本程序,一般文件后缀为 .sh。 Shell 编程跟 java、php 编程一样,蓝狮注册只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 Shell 的解释器种类众多,常见的有: sh – ...
蓝狮注册开户Vue3生命周期Hooks的原理及其与调度器(Scheduler)的关系
写在最前:本文章的目标vue3的生命周期的实现原理是比较简单的,但要理解整个Vue3的生命周期则还要结合整个Vue的运行原理,又因为Vue3的一些生命周期的执行机制是通过Vue3的调度器来完成的,所以想要彻底了解Vue3的生命周期原理还必须要结合Vue3的调度器的实现原理来理解。同时通过对Vue3的调度器的理解,从而加深对Vue底层的一些设计原理和规则的理解,所以本文章的目标是理解Vue3生命周期Hooks的原理以及通过Vue3生命周期Hooks的运行了解Vue3调度器(Scheduler)的原理。 Vue3生命周期的实现原理Vue3的生命周期Hooks函数的实 ...
蓝狮注册深入理解JSX
What is JSX ?官方定义:JSX 是 react.createElement(components, props, …children) 函数的语法糖 Click Me上方函数会被编译为下方代码: React.createElement(Mybutton,{color: ‘blue’, shadowSize: 2},‘Click Me’)打开 React 的源码,蓝狮官网找到 createElement 函数: function createElement(type, config, children) {var propName; // Reserved names are extracted var props = {};var key = null;var ref = null;var self = null;var source = null; if (config != null) {if ( ...
蓝狮注册纯CSS 斑马投影文字
效果展示 思路分析层级思路从展示的效果可以猜到这个效果由3层文字组成。 表面一层黑色文字中间一层白色文字最低的一层是斑马条纹文字要实现多层文字,我首先想到的是文字投影 text-shadow ,蓝狮注册但通常 text-shadow 只能投个纯色出来。 于是思路要改一下,黑色和白色层是投影,斑马条纹是真正的文字本身。 斑马纹思路看到这种条纹效果,我想到了背景图渐变。 直接使用图片实现斑马纹路使用 background-image 里的线性渐变 linear-gradient第一种思路不推荐,因为作为一个有追求的前端能不使用图片就尽量别使 ...
蓝狮注册JS 将伪数组转换成数组
在 JS 中,伪数组 是非常常见的,它也叫 类数组。伪数组可能会给 JS 初学者带来一点困扰。 本文将详细讲解 什么是伪数组,以及分别在 ES5 和 ES6 中将伪数组转换成真正的数组 。 什么是伪数组?伪数组的主要特征:它是一个对象,并且该对象有 length 属性 比如 let arrayLike = {“0”: “a”,“1”: “b”,“2”: “c”,“length”: 3}像上面的 arrayLike 对象,有 length 属性,key 也是有序序列。可以遍历,蓝狮官网也可以查询长度。但却 ...
蓝狮注册React 中的列表渲染为什么要加 key
大家好,我是前端西瓜哥,今天来学习 react 中的列表渲染要加 key 的原因。 在 React 中我们经常需要渲染列表,比如展示好友列表。 常用写法是用 Arrary.prototype.map 方法,将数组形式的数据映射为 JSX.Element 数组,蓝狮官网并嵌入到组件要返回的 JSX.Element 中,如下: function FriendList() {const [items, setItems] = useState([‘前端西瓜哥’, ‘小明’, ‘张三’]);return ( {item} );}你需要给每个项提供 key 属性作为标识,以区分不同的项。如果你不加 key,React ...
蓝狮注册Vue3响应式源码分析 – ref + ReactiveEffect篇
在vue3中,因为reactive创建的响应式对象是通过Proxy来实现的,所以传入数据不能为基础类型,所以 ref 对象是对reactive不支持的数据的一个补充。 在 ref 和 reactive 中还有一个重要的工作就是收集、触发依赖,蓝狮官网那么依赖是什么呢?怎么收集触发?一起来看一下吧: 我们先来看一下 ref 的源码实现: export function ref(value?: unknown) {return createRef(value, false)} export function shallowRef(value?: unknown) {return createRef(value, true)} const toReactive = (value) => isObject(val ...
蓝狮注册mac前端开发工具集
上一次总结工具集还是在四年前,这一次和2018版相比改变挺大。我感觉每年更新一版,应该挺有价值的,毕竟工欲善与其,必先利器;磨刀不误砍柴工。 虽然github也有很多推荐工具的,但是每个人的喜好还是有所区别,蓝狮官网我的第一选择标准就是好用,即便是付费的。 通用工具HomebrewSpaceLauncherRaycastMenubarXParallels微信读书有道词典DeepLXMind滴答清单 开发工具iTerm2 最喜欢的命令行工具,好处体现在细节,用过才知道。一定配合 oh my zsh 使用。Warp 号称21世纪命令行工具,可以试试看。SourceTree git可视化 ...
蓝狮注册Vue3,用组合编写更好的代码:Async Without Await 模式
如果能让异步代码正确工作,它可以大大简化我们代码。但是,处理这种额外的复杂性,特别是与可合一起,可能会令人困惑。这篇文章介绍了无等待的异步模式。这是一种在组合中编写异步代码的方法,而不像通常那样令人头疼。 无等待的异步用组合api编写异步行为有时会很麻烦。所有的异步代码必须在任何反应式代码之后的设置函数的末端。如果你不这样做,它可能会干扰你的反应性。 当setup函数运行到一个await语句时,它将返回。一旦它返回,该组件就会被挂载,并且应用程序会像往常一样继续执行。任何在await之后定义的响应式 ...
蓝狮注册十个关于JavaScript Spread Syntax (…)的强大用途
扩展语法—Spread Syntax(…) 是 ES6 中引入的一个新特性,它允许我们从可迭代对象中快速提取元素。使用这种语法,我们可以避免使用大量复杂的 api,编写更简洁的代码。看完这篇文章,相信你会喜欢这个功能的。 1、复制一个数组复制数组的传统方法是使用数组的切片方法。 let arr = [1, 2, 3, [4, 5]];let copy = arr.slice()console.log(copy)// [1, 2, 3, [4, 5]];;但是, slice 方法最初是为了捕获数组的片段,而不是复制它们。蓝狮官网这个 API 很容易忘记,但是使用扩展语法非常简单明了: 2、复制一个对象要复制对 ...