自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 收藏
  • 关注

原创 github gitlab

ssh-keygen -t rsa -C "注册 gitlab 账户的邮箱"把路径改成默认路径后 id_rsa_gitlabgithub 同理打开~/.ssh/config文件(没有就新建一个),并在文件中加入以下内容# default Host github.comHostName github.comUser [email protected](GitHub邮箱)IdentityFile ~/.ssh/id_rsa_github# two Host gitlab.com(这里注

2021-07-06 20:44:28 197

原创 mongodb鉴权

找到自己的mongod.conf文件 确保鉴权开启创建超管use admin // 切换到admin库db.system.users.find() // 查看所有的用户如果出现error,说明没有鉴权那么我们就鉴权一下db.auth(username,pwd)鉴权通过后会返回1如果不幸忘记了自己的超管密码,不要慌, 跟着一下步骤走:1. 我们先把mongod.conf的鉴权关掉2. systemctl restart mongod // 重启mongod服务3. 然后再次回到

2021-03-11 15:40:06 891

原创 typescript: 类可以作为类型

class Test{}const test: Testtest = Test // wrong当类作为类型的时候,他是其构造函数的类型作为赋值的时候, 不仅包含构造函数,还包含了静态方法,所以不能赋值

2021-02-04 15:40:00 510

原创 nvm 常用命令

nvm常用命令nvm ls-remote 查看 Node 远程版本库nvm install node 将安装最新版本的 Nodenvm install v12.7.0 将安装 12.7.0 版本的 Nodenvm uninstall v12.7.0 卸载 12.7.0 版本的 Nodenvm ls 查看已经安装的 Node 版本nvm use v12.7.0 切换 12.7.0 为当前使用的版本nvm alias default v12.7.0 将 12.7.0 设置为 Node 的

2021-02-03 17:34:52 191

原创 git 合并多个历史提交

之前由于忘了在当前项目配置user信息,导致github和gitlab信息混了,所以修改过之后,想要把之前的提交全部合并了经过一番探索 发现 git rebase -i xxx 可以这个-i就是用来可视化操作的xxx就是你想要rebase到的目标提交 比如是这个项目的第一次提交,那么最终结果就只剩一个提交了,之间所有的提交都会应用到这第一个提交上。因为这个可视化的界面的顺序 从上到下依次是 第一次提交 到当前提交rebase执行顺序也是从上到下如果想只保留最初的提交,name就把后面的提交全部执

2021-01-17 18:06:46 1122

原创 vue2 render函数 eslint解析jsx错误

需要在.eslintrc parseOptions里 配置parser 为’babel-eslint’参考 https://eslint.vuejs.org/user-guide/#what-is-the-use-the-latest-vue-eslint-parser-errorPS:babel-eslint 的作用 :You only need to use babel-eslint if you are using types (Flow) or experimental features no

2021-01-14 11:47:43 1344

原创 安装styleguide

直接看官网https://vue-styleguidist.github.io/用了cli 直接vue add xxxx不是的话 就老老实实npm安装配置项含义module.exports = { // set your styleguidist configuration here title: 'Default Style Guide', components: 'src/components/**/[A-Z]*.vue', defaultExample: fa

2021-01-14 11:44:02 406

原创 jest mock

我以为这个mock和日常开发的模拟后端请求一样其实完全没关系。比如你想在测试环境中引用一个第三方的组件,这个时候就需要mock来获取,他的参数自然而然就是这个第三方组件的路径。引用官方的例子来说,jest.mock('react-native-video', () => 'Video');比如你想引用一个叫react-native-video的第三方组件,并且想留一个存根,你就可以这么写。另外这个不光适用于组件,你也可以用于获取本地模块当然 如果你需要多次mock的话 不妨把他放到一个

2021-01-07 15:35:08 388

原创 html input maxlength 记录

maxlength必须是非负数为 0 时则禁止用户输入只是限制用户输入通过js可以动态设置超过maxlength限制长度的值如果需要 手动限制动态赋值

2021-01-07 11:47:53 137 1

原创 测试

快照测试会把第一次的测试用例生成快照后续的有何快照对比的 直接比较 快照就相当于缓存嘛后续修改测试用例的时候 ,有些地方需要修改快照,直接-u可以更新一波快照

2021-01-06 22:31:06 71

原创 fork的仓库和源仓库创建关联 , 更新代码

获取原仓库最新代码git remote add upstream [origin repo]git fetch upstreamgit pull upstream [target branch]git push

2021-01-05 18:33:55 367

原创 Error: Cannot find module ‘vue-loader-v16/package.json‘

原因: npm版本太低 建议更新全局npm版本npm install npm@latest -g参考:Error: Cannot find module ‘vue-loader-v16/package.json’

2020-10-15 10:04:22 2587

转载 vue $emit,子组件传出多个参数,如何在父组件中在接收所有参数的同时添加自定义参数

方法一子组件传出单个参数时:// 子组件this.$emit('test',this.param)// 父组件@test='test($event,userDefined)'方法二子组件传出多个参数时:// 子组件this.$emit('test',this.param1,this.param2, this.param3)// 父组件 arguments 是以数组的形式传入@test='test(arguments,userDefined)'...

2020-09-27 15:42:21 1404

原创 Node中的流

1. 流的类型Writable: 可写的流(fs.createWriteStream())Readable: 可读的流 (fs.createReadStrem())Duplex: 既可读又可写 (net.Socket)Transform:同Duxlex,可以在读写的时候对数据进行编辑和转化2. 对象模式为了更好的和js的值进行开发(除了null,null在stream中有其他用处,stream被当作“对象”进行操作3. 缓冲不管是读操作还是写操作,数据都被存放在内置的缓冲区里,我们可以通

2020-08-24 16:22:58 218

转载 mongoose populate使用

mongoose populate我的需求,按需返回指定字段,语法:populate(path,selector)比如 populate('article','chat_name chat_author') 返回多个指定字段可以用空格分开,不返回某个字段可以在其属性名前加个-比如不想返回_idpopulate('article','chat_name chat_author -_id')也可以传入一个对象,设置多个path和指定的返回字段populate([{path: 'author',

2020-08-24 10:53:12 362

原创 mongoose refs populate

refs :const personSchema = Schema({ _id: Schema.Types.ObjectId, name: String, age: Number, stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]});解释:stories属性的值必须是Story这个schema里的值populate:Story. findOne({ title: 'Casino Royale' }). po

2020-08-20 11:11:39 201

原创 vscode.setting.json

{ "editor.fontSize": 18, "window.zoomLevel": 1, "workbench.tree.indent": 16, "prettier.useTabs": true, //使用制表符缩进 "editor.tabSize": 2, //制表符符号eslint "editor.formatOnSave": true, //每次保存自动格式化 "files.autoSave": "afterDelay", "files.autoSaveDelay": 3000

2020-08-14 17:28:41 211

原创 axios发送form-data格式的数据

let fd = new FormData(); fd.append('file', file); let config = { headers: { 'Content-Type': 'multipart/form-data' } }; axios.post(url,fd,config)

2020-08-10 20:31:59 1868

原创 React Hooks初体验

前言昨天开始学习react,时隔这么久终于学习上了目前应该市场使用率最多的前端框架,之前一直使用vue,当初就告诉自己先熟练使用好一个,先别急着都学,到现在感觉用基本用了不少时间的vue,是时候接触react了,并没有谁高谁低,只有需要,你这个项目需要它你就得学习它,正好公司最近要维护的项目使用了react,所以得此契机学习。学习学习当然从文档开始,所以我通读了一遍文档,基本有了vue打下的基础,看起来还算轻松,主要就是表达方式是用jsx,书写形式方面的习惯,react没有自己的后缀,就是用js文件来

2020-08-05 15:27:22 131

原创 MAC右键菜单踩坑——右键在当前目录打开终端

昨天看了各种教程,都是一样的,甚至还用 “自动操作”来自定义了在当前目录用vscode编辑的命令,但是就是不显示,终于今天让我发现原因了。划重点:必须选中。。。我特么昨天在空白处右击了半天,mac小白留下了无助的泪水????常规流程在系统偏好设置中选择键盘,然后选择里面的服务,勾选上然后 一定要选中啥也有了连我自定义 的 Open in VSCode也有了 舒服自定义Open in VSCode打开自动操作,然后选择然后在搜索框中输入打开,然后拖入需要设置的地方都用箭头标出来

2020-08-05 13:07:32 6451 2

原创 各种配置文件如.gitignore的作用

gitignore: git上传要忽略的文件.npmrc: 配置npm源editorconfig: 帮助开发者在不同的编辑器和ide之间维护相同的代码风格,EditorConfig 包含一个用于定义代码格式的文件和一批编辑器插件,这些插件可以让编辑器读取配置文件并依此格式化代码。EditorConfig 的配置文件十分易读,并且可以很好的在 VCS(Version Control System)下工作。alloyteam关于editorconfig的博客.eslintrc.js: 配置代码书写的规

2020-08-03 20:53:37 228

原创 动态规划专题训练之——完全平方数

LeetCode 279 完全平方数题目描述给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.题目分析首先我们用dp来表示当前数由完全平方数构成的最小个数当数字i本身是完全平方数 的时候 dp[i] = 1否则 i = k*k + b ,也就

2020-07-24 17:54:14 199

原创 基础动态规划——不同路径I、II

LeetCode 62. 不同路径题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?题目分析简单来说就是从左上角移动到右下角,并且只能右移和下移所以如果要到达某个格子,只能从它的上方下移过来或者左边右移过来。发现这个规律后,我们可以将这个题目倒着思考,要想到达右下角的最后一个格子,那必须从他的上方或左边进入,然后递推到达

2020-07-24 11:37:56 124

原创 爬楼梯——从简单的动态规划入手

Leetcode 70 爬楼梯题目概述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。4. 1 阶 + 1 阶 + 1 阶5. 1 阶 + 2 阶6. 2 阶 + 1 阶题目分析这是一道基础的动态规

2020-07-24 10:12:46 137

原创 二维数组元素的组合

var arr = [ ['a', 'b'], ['c', 'd'], ['e', 'f']]function getArrayByArrays(arrays) { var arr = [""]; for (var i = 0; i < arrays.length; i++) { arr = getValuesByArray(arr, arrays[i]); } return arr;}function getV

2020-07-09 17:48:31 376

原创 豆瓣API

baseurlhttp://api.douban.com/v2具体接口示例top 250电影一定要加上后面的apikey,否则访问不到/movie/top250?apikey=0df993c66c0c636e29ecbb5344252a4a

2020-06-27 19:45:55 492

原创 mongodb 实现对数组中对象属性值的修改

数据库的更删改查,作为前端仔,每次用到都是现查文档,顺便做个笔记。参考官方文档https://docs.mongodb.com/manual/reference/operator/update/positional-all/#positional-update-all首先顺便说一下改变数组的基本值的操作一、更新数组中的所有元素操作符:$[]{ "_id" : 1, "grades" : [ 85, 82, 80 ] }{ "_id" : 2, "grades" : [ 88, 90, 92

2020-06-14 22:42:10 6801 1

原创 关于IOS300ms点击延迟的解决方案

起因大多数移动端浏览器会在点击之后有一个300ms的延迟,因为用户可能会进行一些双击放大的操作,300ms可能有时候我们感觉不到,但是在一些应用中(比如网页游戏),我们可能需要它最好做到实时反应。一些解决方案1.禁止放大缩小我们可以禁止用户做那些缩放操作,这样我们就不用担心会有双击操作了。通过设置一下代码来实现(chrome & firefox)<meta name="viewport" content="width=device-width, user-scalable=no"&g

2020-06-09 22:44:13 600

原创 viewport与移动端布局

viewport : 视口,代表当前可见的计算机图形区域。在 Web 浏览器术语中,通常与浏览器窗口相同,但不包括浏览器的 UI, 菜单栏等——即指你正在浏览的文档的那一部分。web浏览器的视口通常分为两部分:布局视口和视觉视口布局视口通常是指整个浏览器的大小,包括页面的内容以及上下固定的窗口(搜索框 菜单栏等),视觉视口浏览器中可见的部分。视觉视口可以变化,当双指缩小,键盘弹出,隐藏的搜索框显示等等,会让视觉视口变小,但是布局视口不会变化。当你向下滚动的时候,视觉视口的内容就会改变。css

2020-06-09 22:05:33 1328

原创 为什么要用setTimeout来模拟setInterval

setTimeout(fn,time): 等待time时间后执行fnsetInterval(fn,time) 每隔time时间执行fn我们希望setInterval是每隔一段时间自动执行,但是实际应用中,setInterval并不会按照我们预想的那样,它通常存在如下两个缺点。在执行的时候可能会跳过指定时间间隔多个定时器函数会立刻执行我们就实际场景来说一下这两个缺陷时间间隔首先明确一个概念,定时器的时间间隔指的是什么?它不是指函数的执行时间,而是函数被推入到消息队列的时间。也就是说每隔t

2020-06-09 11:29:52 620 1

原创 查看mongodb的日志信息

三番两次打开网站的时候,请求不到数据了,于是我想看看日志到底怎么回事,果然被盯上了,被删库了。首先记录一下如何查看日志。查看mongodb系统日志ps -ef|grep mongo查看mongo的进程信息,进而可以查看到配置文件mongod 1205 1 0 Jun04 ? 00:09:02 /usr/bin/mongod -f /etc/mongod.conf然后进入配置文件中查看cat /etc/mongod.conf可以找到日志的路径查看日志ca

2020-06-07 21:28:34 14909

原创 yarn安装文件的分享

本文只对windows用户用npm choco 什么的都是bullshit,我厌倦了配置给你文件自己装,比其他瞎配置 改来改去强多了官网给了三种方式,一个下载.msi文件,一个choco 一个scoop说实话都是要梯子的。所以我用了npm,然后npm和yarn放在一起是会出事的,我的cnpm 什么的各种模块都找不到了,还有之前各种坑我已经无力吐槽。所以 我只是刷了个小手段,直接把那个文件下下来了。还是原汁原味舒服。链接地址提取码:7lid总结yarn good...

2020-06-07 11:28:50 244

原创 JSONP实现跨域

参考链接https://www.jianshu.com/p/e1e2920dac95受于同源策略的限制,当然是为了更好的提高网站的安全,我们被禁止进行跨域通信。跨域的方法有包括设置同源请求头,jsonp,iframe,poseMessage,当然最常用的还是前两个。今天主要介绍JSONP。我们目前在和服务端通信传输数据的时候,首选的方式还是json,用jsonp来跨域,引用上面参考的博客的一句话来说,json就好比地下情报人员用来交换情报的暗号,jsonp则是用来交换情报的接头方式一个用来规.

2020-06-02 22:21:40 127

原创 你知道优化网站性能从哪入手吗?

参考 雅虎开发文档https://developer.yahoo.com/performance/rules.html?guccounter=1入手点数据显示,80%的用户会花费时间在前端页面,也就是说一个好的UI设计能够抓住用户的眼球,而好的UI性能会抓住用户的心。而影响页面渲染的原因是什么呢?当我们打开一个网页的时候,文档开始解析,大多数时间都花费在下载css script images等资源,所以我们应该从此入手。所以减少这些组件的体积和数量就能减少http请求的数量,进而就能优化网站性.

2020-06-02 20:12:58 133

原创 简单了解commonjs CMD AMD

commonjs是一个同步模块化的规范,一个文件就是一个模块,多在服务端使用,ndoe.js则采用这种规范,通过exports 、module.exports来导出,require来导入。优点是 文件可以复用缺点是他是同步到,在模块加载完以前,后面的代码都无法执行,不适合在浏览器环境中使用代表有 node.js browserfy.jsAMD是实现异步模块加载的方法,并且会预加载,它的关键方法就是define, 在声明模块的时候会说明相关的依赖,优点是可以异步,缺点是代码书写阅读比较复杂,开

2020-05-31 16:08:55 100

原创 export、export default、 module.exports 、exprots这些你分得清吗?

首先要分类require、exports和 module.exports是commonjs的语法,也就是在node.js中使用的import/export 是ES6的语法node中的模块导入和导出我们在node中用代码来验证一下console.log(module.exports == exports);//true然后//a.jslet a = 100;exports.a = 100;exports.b = 200;console.log(exports);//{ a:

2020-05-31 16:01:16 413

原创 轻松实现给vue单页面绑定快捷键

我想给整个页面添加一个键盘事件,也就是快捷键,于是我在当前页面根元素上绑定了keyup事件,ps:div 的 事件不像表单,我们需要在标签上添加tableIndex = "0"这个属性但是每次还是得点一下页面才有用,那大大削弱了快捷键的作用,最后找来找去,终于找到了答案。因为vue是很少直接操作dom的,所以我在写vue的时候,很少往原生dom事件那里去碰,但是,原生就是基础,基础还是...

2020-05-07 22:37:41 1270

原创 一分钟解决this.$refs.xxx 取值为undefined问题

问题场景是这样,我们设定一个组件的ref = ‘a’,根据生命周期,我们是可以在mounted中访问的,但是console.log(this.$refs.a)是undefined,而我们this.$refs打印出来,这个a是存在的,这是为什么呢?可能你还没有注意到,Vue 在更新 DOM 时是异步执行的。只要侦听到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果...

2020-05-07 22:29:29 4968

转载 我们该如何书写更高效的css选择器

1 浏览器如何识别你的选择器首先我们需要清楚,浏览器是如何读取选择器,以识别样式,并将相应的样式附于对应的HTML元素,达到美化页面的效果。Chris Coyier曾在《Efficiently Rendering CSS》一文中说过“浏览器读取你的选择器,遵循的原则是从选择器的右边到左边读取。换句话说,浏览器读取选择器的顺序是由右到左进行”。比如说:div.nav < ul li a[t...

2020-05-07 10:40:26 129

原创 mongoose:model中给每一条记录添加一个新属性

场景初始model设置const schema = new Schema({ word: { type: String }, phoSymbol: { type: String }, translation: { type: String }})这个model是一个单词表,当前包含了单...

2020-05-04 12:27:01 681

空空如也

空空如也

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

TA关注的人

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