自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小超人日常码字

大前端相关技术学习与分享

  • 博客(108)
  • 资源 (1)
  • 收藏
  • 关注

原创 用 Android Studio 打包 uni-app 的安卓apk;手把手教程、巨详细避坑

获取到android平台的AppKey后!以上命令运行完成后就会生成证书,路径为“D:\test.keystore”找到打包后的资源目录,将下图文件夹复制到专门打包用的文件夹下,即。编辑 res 目录下的 values 目录中的。并拷贝到一个专门打包用的文件夹下作为打包模板。记录上面生成的 SHA1 SHA256 MD5。安装完成后执行下面命令即可看到输出的 md5。找到 assets 目录下的 data 目录。将 apps 文件夹下的内容删除。中查看打包好的 apk 文件。打包完成控制台会提示下面内容。

2023-05-13 23:35:48 3299

原创 Eslint+Prettier+husky+lint-staged+standard-version 格式化规范代码,规范 git 检测与提交信息

Eslint 使用安装# 下载,安装为开发时依赖npm install eslint --save-dev# 初始化npx eslint --initinit 完毕之后,在项目的根目录会生成一个 eslint 的配置文件.eslintrc.{js,yml,json}借助 eslint-config-standard的插件,它是标准的ESlint规则, 我们在项目中继承这个标准就可以了npm install --save-dev eslint-config-standard..

2021-12-16 20:08:11 572

原创 npm和yarn镜像源更新

设置yarn的下载源为淘宝镜像yarn config set registry https://registry.npmmirror.com/yarn config set disturl https://npmmirror.com/distyarn config set electron_mirror https://npmmirror.com/mirrors/electron/官方镜像地址: https://registry.yarnpkg.com清理缓存yarn cache clean设

2021-11-12 10:40:10 2464 1

原创 树莓派4B安装Openwrt软路由并用作家庭网络网关设备

树莓派4B安装Openwrt软路由并用作家庭网络网关设备缘由家里需要联网设备太多,光猫性能不够,家里小米AX3600不想来刷机,然后就想到了被尘封的树莓派4B,经过一段时间的研究与折腾,最终完成了家庭网络的完善以及需要插件的使用。相关设备光猫 (已改成桥接)iKuai软路由 (用做主路由进行拨号上网,同时用做DHCP服务器,这样能避免家庭只有一个路由设备,导致一些因素造成家里所有设备不可联网,还可使用其自带的DDNS服务,楼主编译版本也集成进去了)楼主有完全使用Openwrt软路由来用做

2021-06-06 00:28:53 5425 4

原创 pnpm的安装与使用

pnpm使用官网: https://pnpm.js.org/installation/全局安装npm install pnpm -g设置源//查看源pnpm config get registry //切换淘宝源pnpm config set registry https://registry.npmmirror.com/使用pnpm install 包 // pnpm i 包pnpm add 包 // -S 默认写入dependenciespnpm add -D

2021-03-11 10:57:36 129475 8

原创 windows系统上的终端或powershell 提示禁止使用脚本解决方法

【代码】windows系统上的终端或powershell 提示禁止使用脚本解决方法。

2024-06-27 14:51:50 435

原创 Node版本管理工具 fnm 安装使用

fnm 是一个基于 Rust 开发的 Node 版本管理工具,它的目标是提供一个快速、简单且可靠的方式来管理 Node.js 的不同版本。同时,它是跨平台的,支持 macOS、Linux、Windows。特点快速:fnm 使用 Rust 编写,因此它在执行速度上比其他 Node 版本管理工具更快。简单:fnm 的命令行接口简单易用,可以轻松地安装、切换和卸载 Node.js 版本。可靠:fnm 使用 Node.js 的官方二进制文件来安装 Node.js 版本,因此它是可靠且与官方版本兼容的。

2024-06-27 14:43:32 1018

原创 React组件通信

组件通信方式propscallbackcontext(跨层级)Event 事件ref 传递状态管理(mobx)等props 和 callback 方式1. 父传子所有参数通过 props 传递,要注意,组件包裹的内容都在 children 中2. 子传父子组件传父组件:通过父组件传递的 callback 函数,通知父组件context 方式这种方式常用于上下文,用于实现祖代组件向后代组件跨层级传值context 的模式创建 Context: React.cre

2023-11-23 10:07:38 153

原创 React Hooks

state:数据源,用于渲染 UI 层的数据源。setState:改变数据源的函数。

2023-11-23 10:03:05 585

原创 Typescript 基础知识

类型别名允许使用 type 关键字声明类型别名:type PrimitiveArray = Array<string | number | boolean>type MyNumber = numbertype NgScope = ng.IScopetype Callback = () => void环境声明允许在 TypeScript 中创建一个不会被编译到 Javascript 中的变量。这个特性是用来促进与现有 Javascript 代码、DOM(文档对象模型)、BOM

2022-03-29 16:19:41 1924

原创 Selenium+Python

提前准备Chrome 浏览器 查看版本号chromedriver 查看版本号,需要和浏览器版本号一致selenium 地址 通过 pip3 install selenium 安装Python3 环境 自行安装。 windows 下载好安装包一路下一步,记得勾中添加环境变量使用原理selenium 控制 chromedriver 来驱动 Chrome 浏览器# 引入 webdriverfrom selenium import webdriver# 保存 chromedriver 路

2022-03-25 14:55:33 239

原创 windows的终端Terminal设置代理

终端设置代理set http_proxy=http://127.0.0.1:1080set https_proxy=http://127.0.0.1:1080

2021-03-16 16:25:38 63697

原创 MongoDB-mongoose索引、内置CRUD方法扩展

mongoose索引,mongoose内置CRUD方法、扩展mongoose model的静态方法和实例方法索引索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快。MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧mongoose中可以在定义Schema的时候创建索引const SetSchema = mongoose.Schema({ name: { type: String, //

2021-01-15 09:18:05 213

原创 MongoDB-修饰符

mongoose 预定义模式修饰符lowercase uppercase trimmongoose提供的预定义模式修饰符,可以让我们对数据进行一些格式化const UserSchema = mongoose.Schema({ name: { type: String, // 去除name字段首尾空格 trim: true }, age: Number, status: { type: Number,

2021-01-15 09:16:57 265

原创 MongoDB-mongoose 默认参数

mongoose默认参数增加数据的时候,如果不传入数据会使用默认配置的数据// 定义Schema时可以指定默认参数及其类型const UserSchema = mongoose.Schema({ name: String, age: Number, status: { type: Number, default: 1, },})...

2021-01-15 09:16:12 341

原创 MongoDB-mongoose使用

mongoose介绍mongoose是在node.js异步环境下对MongoDB进行便捷操作的对象模型工具mongoose有两个特点通过关系型数据库的思想来设计非关系型数据库基于mongodb驱动,简化操作用法安装npm i mongoose --save引入 mongoose 并连接数据库const mongoose = require('mongoose')mongoose.connect('mongodb://localhost/test')// 有密码//

2021-01-15 09:15:05 312

原创 MongoDB-聚合管道

MongoDB聚合管道使用聚合管道可以对集合中的文档进行变换和组合db.COLLECTION_NAME.aggregate([{<stage>}, ...]) 方法构建和使用聚合管道可用作 表关联查询、数据的统计管道操作符$project 增加、删除、重命名字段$match 条件匹配。只满足条件的文档才能进入下一阶段$limit 限制结果的数量$skip 跳过文档的数量$sort 条件排序$group 条件组合结果$lookup 引入其他集合的数

2021-01-15 09:14:10 212 1

原创 数据库中表的关系

数据库中表与表的3种关系一对一的关系一个人对应唯一的身份证号一对多的关系一个班级对用多个学生多对多的关系一个学生可以选多门课程,同一课程可以被多个学生选择

2021-01-15 09:12:51 181

原创 09-TypeScript 装饰器执行顺序

属性 > 方法 > 方法参数 > 类如果有多个同样的装饰器,会优先执行后面的

2021-01-08 21:19:49 280

原创 08-TypeScript 方法参数装饰器

/* 方法参数装饰器会在运行时当做函数被调用,可以使用参数装饰器为类的原型增加一些元素数据,传入3参数 1. 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象 2. 方法的名字 3. 参数在函数参数列表中的索引 */function logParams(params: any) { return (target: any, methodName: any, paramsIndex: any) => { console.

2021-01-08 21:18:20 381

原创 07-TypeScript 方法装饰器

/* 方法装饰器 会被应用到方法的属性描述上,可用来监视,修改或替换方法定义 需要三个参数 1. 对于静态成员来说是类的构造函数,对实例成员来说是类的原型对象 2. 成员的名字 3. 成员的属性描述 */function get(params: any) { return (target: any, methodName: any, desc: any) => { console.log(t

2021-01-08 21:17:16 168 2

原创 06-TypeScript 属性装饰器

/* 属性装饰器表达式会在运行时当做函数被调用,传入2个参数 1.对于静态成员来说是类的构造函数,对实例成员来说是类的原型对象 2.成员的名字 */// 类装饰器function calTet(params: string) { return function (target: any) { }}// 属性装饰器function caclData(params: any) { return function (target:any, attr: an

2021-01-08 21:15:37 150

原创 05-TypeScript 类装饰器重载构造函数

function logClassAgain2(target: any) { // 需要重载所有的属性和方法 return class extends target { apiUrl: any = `修改后的`; getData() { this.apiUrl += this.apiUrl console.log(this.apiUrl) } }}@logClassAgain2cl

2021-01-07 10:33:37 669

原创 04-Typescript 装饰器工厂

function logClassAgain(params: string) { return function (target: any) { target.prototype.path = `http://${params}` }}@logClassAgain('baidu.com')class DecFact { constructor() { }}let testResult:any = new DecFact()console.lo

2021-01-07 10:32:36 222

原创 03-TypeScript 普通装饰器

/* 装饰器:特殊类型的声明,能够被附加到类声明,方法,属性 或 参数上,可以修改类的行为 装饰器就是一个方法,可以注入到类,方法,属性参数上来扩展类、属性、方法、参数的功能 创建装饰器:类装饰器、属性装饰器、方法装饰器、参数装饰器 装饰器写法:普通装饰器(无法传参) 装饰器工厂(可传参) */// 1.类装饰器:类装饰器在类声明之前声明。// 类装饰器用于类构造函数,可以用来监视,修改或替换类定义,传入一个参数// 类装饰器function logC

2021-01-07 10:31:04 100 1

原创 02-TypeScript 泛型接口

interface Config { (key: string, val: string): string;}let md5: Config = function (key: string, val: string) { return val + key}

2021-01-07 10:26:32 103

原创 01-TypeScript 泛型概念

class Test {list: T[] = []add(value: T): T[] { this.list.push(value) return this.list}min(): T { let min = this.list[0] for (let i = 0; i < this.list.length; i++) { if (min > this.list[i]) { min = this.list[i]

2021-01-06 15:57:01 152 1

原创 Mongodb 账户权限配置

Mongodb 账户权限配置创建超级管理员账户use admin db.createUser({ "user":"xcr", "pwd":"test", "roles":[{"role":"root", "db":"admin"}]})修改mongodb数据库配置文件,开启权限验证mongod.cfgsecurity: authorization: enabled重启服务使用超级管理员账户链接数据库mongo admin -u 用户名

2021-01-06 15:53:16 217 8

原创 MongoDB数据库基本使用

建立mongodb服务mongod --dbpath <存放数据库路径>使用mongo 打开客户端mongoDBshow dbs 显示已创建的所有数据库use wanglufei use <表名> 选择或创建对应数据库db.article.insert({"title":"海贼王", "author":"尾田"}) 在创建或选择的数据库中创建一个集合(表),名为article,并插入一条数据db.article.insert({"title":"

2021-01-06 14:45:38 135 1

原创 TS的element表单验证飘红解决办法

查找多方面材料后,自己认为飘红原因是因为ts不认这个resetFields方法,给他标注这个类型后,即可识别出来,功能正常使用let result = await (this.$refs[formName] as Vue & { validate: () => boolean }).validate();...

2020-09-22 17:32:23 828

原创 TS的element表单重置飘红解决方法

查找多方面材料后,自己认为飘红原因是因为ts不认这个resetFields方法,给他标注这个类型后,即可识别出来,功能正常使用(this.$refs[formName] as Vue & { resetFields: () => boolean }).resetFields();

2020-09-22 17:31:51 621

原创 element重置表单,解决页面第二次打开数据还在的问题

重置表单可解决表单数据缓存的情况,每次打开dialog或者切页面时候,先清空表单和验证,保证每次表单都是干净的// formName为表单的ref值this.$nextTick(()=>{ this.$refs[formName].resetFields();})

2020-09-22 17:18:27 1515

原创 webstorm 格式化代码Ctrl+alt+L 失效

网易云的喜欢歌曲 全局快捷键 与webstorm快捷键冲突清空网易云快捷键就好了

2020-09-02 16:21:42 824 5

原创 generator生成器

generatorfunction* 是用来创建 generator函数的语法。调用generator函数时会返回一个generator对象。generator对象遵循迭代器接口,即通常所见到的next、return和throw函数。generator函数用于创建懒迭代器function* infiniteList() { let i = 0; while (i < 3) { yield i++; }}let item = infini

2020-09-02 11:36:49 2024

原创 iterator(迭代器)

iterator当一个对象实现了Symbol.iterator时,认为它是可迭代的。如array、map、set、string、int32Array、unit32Array等内置类型,目前都实现了各自的Symbol.iterator对象上的Symbol.iterator函数负责返回供迭代的值for…of语句会遍历可迭代的对象,调用对象上的Symbol.iterator方法如:在数组上使用for…of遍历const array = [123, 'xcr', true];for (

2020-09-02 11:20:28 460

原创 symbol类型

symbol自ES6起,symbol成为一种新的原生类型symbol是唯一的,通过同样方式生成的两个symbol也是不同的symbol也可以用于对象属性的键// @ts-ignoreconst symbol = Symbol();const obj = { [symbol ]: 'value'}console.log(obj[symbol])// value使用symbol最大的好处是,其他任何值都不可能有相同的值可以保证特定字面量或特定的switch语句值可

2020-09-02 11:18:47 261

原创 TypeScript枚举

枚举数字枚举enum OrderStatus_Number{ Start= 1, Unpaid, Shipping, Shipped, Complete}// 数字枚举不写默认值,第一个默认为0,后面依次递增// 如果赋予初始值则从初始值开始递增字符串枚举enum OrderStatus_String { Start= 'Start', Unpaid= 'Unpaid', Shipping= 'Shipping', S

2020-09-02 11:17:43 109

原创 TypeScript 范型

泛型泛型用于提升代码的重用性泛型函数// 定义函数function hello<T>(arg: T): T { return arg;}// 函数使用方式一let output = hello<string>('hello typescript');console.log(output)// hello typescript// 函数使用方式二let out = hello("hello xcr")console.log(out)// h

2020-09-02 11:15:33 179

原创 Python自动生成和安装依赖

如何自动生成和安装python依赖pip freeze > requirements.txt # 导出依赖,生成requirements.txt文本pip install -r requirements.txt # 安装导出的全部依赖

2020-08-19 17:49:41 402

原创 ElementUI使用导航菜单重复点击报错解决方法

element导航菜单标签使用<el-menu router :default-active="$route.path" class="el-menu-vertical-demo"> <el-menu-item index="/home"> <span slot="title" class=""> Home </span> </el-menu-

2020-07-01 10:39:53 2100

openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz

树莓派4B固件,只编译了树莓派4B版本,注意是树莓派4B

2021-06-20

空空如也

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

TA关注的人

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