自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

斜光的博客

学习中

  • 博客(213)
  • 收藏
  • 关注

原创 JS闭包全解

闭包原理闭包的应用高阶单例模式基于闭包的高阶单例模式用单独的实例来管理当前事物的相关特征[属性和方法](类似于实现一个分组的特点),而此时obj1/obj2不仅仅叫做一个对象,也被成为命名空间基于闭包管控的单例模式称为:高级单例设计模式,以此来实现模块划分(最早的模块化思想)let module1 = (function () { function query() {} function tools() {} return { name: 'AREA', tools };

2020-07-29 09:26:21 1414 4

原创 JS面向对象:this全解

文章目录声明函数的四种方式如何区分执行主体事件绑定普通方法执行构造函数执行箭头函数执行定时器中的匿名回调函数隐式的this手动改变thiscall 原理call应用:把类数组转换为数组手写callapply应用:获取数组中的最大值例题123全局上下文中的THIS是WINDOW;块级上下文中没有自己的THIS,它的THIS是继承所在上下文中的THIS的;在函数的私有上下文中,THIS的情况会多种多样THIS不是执行上下文(EC才是执行上下文),THIS是执行主体声明函数的四种方式let f1

2020-07-26 20:04:13 417

原创 JS面向对象:new原理、原型和原型链全解

new普通函数执行 function Func(x, y) { let total = x + y; this.res = total } let f = Func(10, 20); console.log(res) // 30构造函数执行函数执行的时候通过 new 函数()叫做构造函数执行此时这个函数被称为一个自定义类(构造函数)返回值被称为当前自定义类的一个实例(有特殊情况) function Func(x,

2020-07-20 23:00:38 844

原创 utools 效率桌面工具

我们平时可能需要各种工具插件辅助我们进行开发工作,以此来提高效率,例如翻译插件,变量命名,json格式转换,postman、mock等等但是这些插件可能遍布于各种平台,例如浏览器,编辑器或者桌面应用等等,使用起来也较为麻烦那么有没有一种软件能够统一这些插件并且能够实现秒开,进一步提效呢?utools简介官网:http://www.u.tools/utools是一款整合了各种插件的效率工具平台,你可以在任何界面下通过快捷键**「Alt + 空格」**呼出 uTools也可以配置鼠标中键一键

2022-04-19 16:51:55 782

原创 Go语言指针

指针地址和指针类型一个指针变量可以指向任何一个值的内存地址,它所指向的值的内存地址在 32 和 64 位机器上分别占用 4 或 8 个字节,占用字节的大小与所指向的值的大小无关。当一个指针被定义后没有分配到任何变量时,它的默认值为 nil。指针变量通常缩写为 ptr。每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。Go语言中使用在变量名前面添加&操作符(前缀)来获取变量的内存地址(取地址操作),格式如下:ptr := &v // v 的类型为 T其中 v 代

2022-02-18 17:05:54 317

原创 VSCode远程调试linux环境下的Go

建立 vscode 与云服务器的ssh连接首先安装远程调试的插件remote-ssh![image.png](https://img-blog.csdnimg.cn/img_convert/af8f9e6b492dffc97d895edf7fa16dcf.png#clientId=u2fd4162b-6b06-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=66&id=uec3082ea&

2022-02-18 17:04:47 1496

原创 基于Ubuntu,Linux环境下的Go安装

linux 环境下安装 go下载linux环境的go压缩包 wget https://dl.google.com/go/go1.17.7.linux-amd64.tar.gz解压go压缩包到指定目录 tar -C ./ -xzf go1.17.7.linux-amd64.tar.gz 进入解压后的go目录即可运行go命令/bin go version添加环境变量目的是能在任何目录下运行go命令首先打开profile文件vi /etc/profile在文件末尾添加下面的代码,指向

2022-02-18 17:04:01 709

原创 初识Go语言

学习链接http://c.biancheng.net/golang/https://www.runoob.com/go/go-environment.htmlhttps://www.yiibai.com/go/go_start.htmlhttp://www.topgoer.com/https://books.studygolang.com/gopl-zh/ch1/ch1-01.html对标Python 等动态语言的开发速度C/C++ 等编译型语言的性能与安全性Go是编译型语言Go

2022-02-18 17:02:51 186

原创 React06:Redux

reduxRedux 是一个独立的 JavaScript 状态管理库https://www.redux.org.cn/安装 Reduxnpm i reduxyarn add redux核心概念理解 Redux 核心几个概念与它们之间的关系state 状态reducer 纯函数store 仓库dispatch 向reducer发起actiongetState 获取statesubscribe 监听stateaction 动作流程首先通过createStore

2020-07-23 16:26:51 307

原创 React05:react-router

SPASingle Page Application : 单页面应用,整个应用只加载一个页面(入口页面),后续在与用户的交互过程中,通过 DOM 操作在这个单页上动态生成结构和内容优点:有更好的用户体验(减少请求和渲染和页面跳转产生的等待与空白),页面切换快重前端,数据和页面内容由异步请求(AJAX)+ DOM 操作来完成,前端处理更多的业务逻辑缺点:首次进入处理慢不利于 SEOSPA 的页面切换机制虽然 SPA 的内容都是在一个页面通过 JavaScript 动态处理的,但是还是

2020-07-22 23:01:21 149

原创 浏览器底层运行机制:上下文,作用域以及堆栈内存

2 JS底层运行机制:EC/AO/VO/GO/SCOPE/SCOPE-CHAIN我们编写的JS代码都是执行在一个环境里的,例如:浏览器(引擎)node(基于v8渲染js)webview(v8引擎)浏览器想要执行js代码,需要提供一个代码执行环境ECStackExecution Context Stack执行环境栈,栈内存(从内存中分配出的一个)EC 执行上下文AO Active Object 私有对象VO Variable Object 变量对象GO Global Object

2020-07-20 10:09:35 722

原创 let和var的区别:变量提升、暂时性锁区,块级作用域

let 和 var 的区别?let不存在变量提升let不允许重复声明let会产生块级作用域暂时性死区的问题变量提升在当前上下文代码自上而下执行之前,会把所有带var/function关键字的进行提前的声明或者定义带var是只声明带function是声明+定义(赋值)都完成了重复声明重复声明的检测和报错,是发生在词法解析阶段暂时性死区(浏览器的BUG)typeof 检测一个未被声明的变量不会报错,结果是undefined这个bug的应用检测js的运行环境,判断是node环

2020-07-20 10:03:48 530

原创 React04:hooks

hooks 钩子函数用于解决 函数式组件没有办法定义 state 和 生命周期的问题。hooks 主要用于解决 类组件进行逻辑复用极其麻烦的问题hooks 本质就是函数所有的hooks命名规定以use开头React 内置常用 hooksuseState 定义状态let [状态,修改该状态的方法] = useState(初始值);在同一个组件中可以使用 useState 定义多个状态注意 useState 返回的 setState 方法,不会进行对象合并,需要自己将原先属性再传递一次.

2020-07-19 11:05:11 135

原创 React03:基础深入以及常用api的使用

文章目录key 的问题PureComponentrefchildrendangerouslySetInnerHTMLkey 的问题在 React ,组件每次更新时,会生成一个 虚拟DOM,和原有的虚拟DOM进行对比。如果是批量生成的一组元素,那React就会根据 key 值去做对比一个列表中的每一项 key 是唯一的,不能重名如果明确列表更新前后,节点顺序不变,可以使用索引值,否则建议使用数据 idPureComponentPureComponent 提供了一个具有浅比较的 shouldC

2020-07-16 20:31:37 149

原创 React02:组件与通讯

state 和 setState不使用setState修改state虽然会修改数据,但是并不会重新渲染视图 setState(updater, [callback])updater: 更新数据 function/objectobj中存储的是要修改的状态,setState本身会帮助我门合并状态this.setState({ name: "修改的名字"})使用function时,setState会执行该函数,返回值必须是一个对象,对象中存储要修改的状态this.setStat

2020-07-15 20:05:44 103

原创 JS数据类型转换

堆栈内存和闭包作用域9种数据类型区别及相互转换JS底层运行机制:EC/AO/VO/GOExecution Context Stack堆(Heap)栈(Stack)内存及垃圾回收机制词法解析和变量提升9种数据类型区别及相互转换JS底层运行机制:EC/AO/VO/GO我们编写的JS代码都是执行在一个环境里的,例如:浏览器(引擎)node(基于v8渲染js)webview(v8引擎)浏览器想要执行js代码,需要提供一个代码执行环境ECStackExecution Context Stack执

2020-07-11 22:46:34 681

原创 React01:起手式

文章目录React 是什么?命令式编程 和 声明式编程命令式编程声明式编程如何使用 ReactReactDOM.render dom 渲染React.createElement 虚拟 domJSXbabel插值表达式 {}各种类型内容在插值中的使用输出数据类型条件渲染列表渲染在属性上使用表达式JSX 使用注意事项Fragment 标签**XSS**create-react-app - 脚手架介绍安装与使用安装使用项目目录结构说明命令脚本npm startnpm run testnpm run build组件

2020-07-11 17:48:04 163

原创 git

GitGit 命令大全初始化配置查看、添加、提交、找回、重置和修改文件查看文件diff查看提交记录克隆仓库提交暂存管理插看、切换、创建和删除分支远程分支管理Git什么是版本控制?什么是 Git?版本控制工具怎么工作的?git 文件生命周期状态区域安装配置-- global检查配置创建仓库 - repository工作流与基本操作查看工作区的文件状态乱码git status 显示乱码终端乱码添加工作区文件到暂存区创建版本提交备注修改默认编辑器单行备注修复提交删除查看提交日志撤销重置从暂存区中撤销到工作区该命令

2020-07-09 15:53:06 141

原创 Vue3.0

ee

2020-07-08 16:35:15 405

原创 trello08:前端-注册与登录

文章目录1、信息提示1-1、组件设计1-2、功能组件设计1-3、挂载为全局通用方法2、 代理配置2-1、安装 axios2-2、配置代理3、使用 vuex 进行状态管理3-1、项目配置3-2、api 管理3-3、store 结构3、 注册验证注册错误对错误统一处理4、登录验证与用户信息存储4-1、路由统一鉴权4-2、鉴权数据持久化1、信息提示创建 Message 组件,用于处理应用提示。1-1、组件设计// file: trello-vue/src/components/TMessage/Index

2020-07-06 18:37:03 960

原创 trello07:项目创建与模板解析、路由与视图组件构建

1 项目创建与模板解析1-1、 项目创建使用 vue-cli 工具构建前端项目vue create trello-vue1-2、模板解析.├── css│ ├── css.css│ └── fonts│ ├── trellicons-iefix.eot│ ├── trellicons.eot│ ├── trellicons.ttf│ └── trellicons.woff├── html│ ├── 404.html│

2020-07-05 22:38:17 291

原创 Vue08:vuex

文章目录1、为什么要用 vuex ?2、通信解决方案 - 面试中可能会问到2-1 props/$emit(父子通信)2-2 $refs/ref(父子通信)2-3 children/parent(父子通信)2-4 attrs/listeners(父子通信)2-5 provide/inject(父子通信、跨级通信)方式一:通过`$parent`方式二:provide/inject 跨级通信命名冲突的问题解决2-6- localStorage/sessionStorage等基于浏览器客户端的存储(父子通信、跨级通

2020-07-04 21:21:02 1932

原创 Vue07:vue-router

文章目录1 vue-router路由vue-router 的安装Vue.use()创建路由对象router-view 组件2 动态路由1 vue-router路由当应用变得复杂以后,我们就需要通过一种便捷、高效的方式来管理应用,最常见的就是通过路由路由:把 url 与 应用中的对应的组件进行关联,通过不同的 url 访问不同的组件vue-router 的安装npm i vue-router// ORyarn add vue-routerVue.use()通过前面提到的 Vue.use 方

2020-06-30 21:43:55 481

原创 Vue知识点汇总

文章目录1 基本使用1-1 模板(插值表达式,指令){{}}v-html(有xss风险,会覆盖子元素)1-2 computed和watch1-3 class和styleclass 使用动态属性style 使用驼峰式写法1-4 条件渲染v-if/v-else/v-else-if, v-showv-if 和 v-show 的区别v-if 和 v-show的使用场景1-5 循环v-forkey使用1-6 事件v-on/简写为@,可写事件名或者表达式event参数,自定义参数修饰符事件修饰符按键修饰符观察事件被绑定

2020-06-29 18:44:57 601

原创 trello06:后端-注册登录与鉴权

1 注册1、用户注册// file: backend/src/controllers/User.tsimport { Controller, Post, Body} from 'koa-ts-controllers';import {RegisterBody} from '../validators/User';@Controller('/user')export class UserController { @Post('/register')

2020-06-28 10:26:35 5111

原创 trello05:model-模型层构建

1 数据库连接1-1 sequelize-typescript因为我们的项目使用 TS 作为开发语言,所以自然的,我们要安装 sequelize-typescript 这个库来使用 TS 版的 Sequelize。安装npm i sequelize-typescript1-2、 融合数据库配置这里,我们把数据库配置融合到项目配置文件中,方便进行统一管理调用。注意数据库的联合类型// file: backend/src/configs/index.ts// 也可以把类型声明放到单独的

2020-06-27 15:51:02 299

原创 trellp04:后端-构建数据库

文章目录1 构建数据库表结构1-1、User - 用户1-2、Board - 任务面板1-3、BoardList - 任务列表1-4、BoardListCard - 任务卡片1-5、Attachment - 附件1-6、CardAttachment - 卡片附件关联1-7、Comment - 评论2 Sequelize-cli工具的使用1 Sequelize 与 Sequelize-cli1-1、Sequelize1-2、ORM1-3、Sequelize-cli2、 Sequelize-cli2-1、安装2

2020-06-27 15:10:23 184

原创 trello03:后端-使用postman进行接口测试

1 什么是 PostmanPostman 是一款功能强大的接口调试工具。2 安装官网:https://www.postman.com/3 创建集合集合 是 Postman 对请求进行组织的一种方式,方便管理和维护。4 设置集合变量我们可以给集合设置一些变量,在请求中进行复用。4-1 添加 baseUrl 变量在集合变量中添加 baseUrl ,值为:http://localhost:8080/api/v15 添加请求每一个请求就是我们对 api 的一次调用及测试。GetPostP

2020-06-27 10:48:01 248

原创 trello02:后端-请求与响应的统一处理

请求与响应的统一处理1 获取请求数据1-1 ParamsParams 装饰器1-2 Query1-3 Body1-4 Header2 数据的响应2-1 响应类型2-2 成功响应处理2-3 错误响应处理错误捕获处理2-4 验证请求数据paramsquery 和 body定义验证类使用验证验证返回格式2-5 其它业务逻辑错误2-6 未命中的路由1 获取请求数据通常客户端的请求会根据业务需求同时发送一些额外数据,数据的传输携带方式也有如下几种常见场景:params也就是我们所说的动态路由可变的部分。

2020-06-26 12:36:09 346

原创 trello01:后端的搭建

1 技术栈1-1 开发依赖koa后端的主框架。koa-router基于 Koa 的路由。koa-static-cachekoa 静态文件代理。koa-ts-controllers基于 Koa 和 TypeScript 构建的路由控制系统,它提供了各种装饰器来构建 RESTful 风格的 API。mysql2NodeJS 连接操作 MySQL 的库。sequelize一个功能更丰富和强大的数据库操作库,支持 MySQL、MSSQL、SQLite 等数据库,提供

2020-06-25 11:35:06 814

原创 Vue06:单文件组件、异步请求

文章目录单文件组件1 单文件组件2 结构组成3 lang 属性4 src 属性5 有作用域的 CSS混用本地和全局样式6 资源路径处理6-1 绝对路径前缀6-2 相对路径前缀6-3 特殊前缀2 vue-router 异步请求跨域vue.config.js跨域请求代理配置单文件组件1 单文件组件vue 的单文件组件是官方提供的一种用来组织组件代码的形式,该文件以 .vue 为后缀,该文件会被 vue-cli内置的 webpack解析生成对应的 javascript<、html、css文件

2020-06-24 16:14:05 292

原创 Vue05:Vue-cli 脚手架

文章目录1、vue-cli2、安装3、创建项目3-1、命令行方式创建项目3-2、基于浏览器图形界面方式创建项目4、开发模式运行官网详细运行命令配置5、打包5-1、项目目录结构文件说明srcpublic1、vue-clihttps://cli.vuejs.org/zh/vue-cli 是 vue 提供的一个用于自动化构建和开发项目的工具,也称为:脚手架,它是一系列工具的集合,它主要有:根据配置选项自动构建项目,并安装所需要的依赖启动一个本地开发服务器,通过这个服务器可以基于服务器环境访问本地项目,

2020-06-24 15:31:35 141

原创 Vue03-组件04:过滤器,插件

文章目录5 过滤器注册过滤器全局过滤器局部过滤器实例6 插件使用插件开发插件实例5 过滤器过滤器是一个使用在 双大括号插值 和 v-bind 中,用于过滤输出内容的函数假设有一个用于把内容转为大写的过滤器函数 toUpperCase{{content|toUpperCase}}| : 管道符,表示数据从左至右通过管道符进行传递过滤器可以有多个,执行顺序从左至右,过滤器函数第一个参数的值就是其管道符前一个的结果注册过滤器全局过滤器Vue.filter('过滤器名称', 过滤器函数);

2020-06-24 11:15:42 130

原创 Vue04:动画

文章目录1 动画CSSJavaScriptvue 中的动画处理动画生命周期transition 组件过渡类名2、生命周期钩子函数1 动画在 vue 中给组件或元素添加动画的方式可以分为多种,但总体无非还是通过 css 和 JavaScript 来进行处理CSS通过 css 添加动画的方式特别的简单,只需要利用 css 中的 transition 就可以做到<!DOCTYPE html><html lang="en"><head> <meta c

2020-06-24 10:27:12 86

原创 Vue03-组件03:动态组件、自定义指令

文章目录3 动态组件component 组件keep-alive 组件生命周期activateddeactivated4 自定义指令注册指令全局指令注册局部指令注册指令生命周期(钩子函数)3 动态组件有的时候,我们需要在多个不同的组件之间进行切换。虽然我们可以通过 v-if来处理,但是会比较麻烦,vue 提供了一个更方便的方式来处理这种情况component 组件component 是 vue 内置的一个组件,它提供一个 is 属性用来动态渲染不同的组件但是当组件切换的时候,都会触发组件的

2020-06-24 10:07:46 296

原创 Vue03-组件02:组件的生命周期

2 组件的生命周期组件生命周期指的是组件从创建到销毁的过程,在这个过程中的一些不同的阶段,vue 会调用指定的一些组件方法。基本生命周期函数有下面几个阶段:创建阶段挂载阶段更新阶段卸载阶段其它每一个阶段都对应着 之前 和 之后 两个函数。2-1 创建阶段beforeCreate()在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。初始化阶段,应用不多。created()在实例创建完成后被立即调用。在这一步,实例已完

2020-06-23 19:37:51 137

原创 Vue03-组件01:可复用组件

文章目录1 可复用组件1-1 可复用UI组件的创建全局组件局部组件1-2 组件内部私有数据1-3 组件外部传入数据props案例:做一个分页组件1-4 组件通信1 作用域隔离2 父组件到子组件内部的数据传递3 子组件内部到外部的数据传递$emit()4 数据双向绑定v-modelmodel 选项案例:使用v-model 实现分页点击修改.syncupdate:[prop]案例:通过.sync 改写分页组件的数据双绑1-5 ref 与 $refs1-6 插槽slot具名插槽作用域插槽1-7 props 验证1

2020-06-20 17:33:28 438

原创 JS异步全解03:宏任务微任务

文章目录宏任务 macroTask 和 微任务 microTask分类event loop补充 和DOM渲染宏任务和微任务的区别宏任务 macroTask 和 微任务 microTask分类先看一段代码console.log("task1");setTimeout(() => { console.log("task2");});Promise.resolve().then(() => { console.log("task3");});console.log(

2020-06-19 16:39:42 148

原创 JS异步全解02:Promise,async-await

文章目录Promise三种状态状态的表现then和catch的改变状态Promise题目async-await异步的发展async-await基本用法async-await与Promise的关系异步的本质还是回调函数增加一个async函数for-of 的应用场景宏任务 macroTask 和 微任务 microTask分类event loop补充 和DOM渲染宏任务和微任务的区别Promise三种状态pending -> resolved -> 或pending -> rejec

2020-06-19 16:36:56 180

原创 Vue02:基础进阶

1 模板与渲染每一个独立的组件模板有且仅有一个顶层父级元素。因为组件挂载的时候是使用解析生成的结构替换掉挂载点的元素,所以挂载点不推荐使用 html 和 body 这两个元素,所以我们通常会指定 body 中的一个空白元素作为整个应用的顶层组件容器。错误,一个组件只能有一个顶级元素 let app = new Vue({ template: ` <div>hello Vue</div> <div&

2020-06-18 19:07:55 142

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除