![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础内容
RawMarin
标准码农
展开
-
ps清理文件
/Applications/Utilities/ 中Adobe的相关文件/Applications/ 中Adobe的相关文件/Applications/Utilities/Adobe Creative Cloud Experience/CCXProcess/Users/Shared/ 中Adobe的相关文件资源库/Application Support/ 中的Adobe相关文件/Users/【用户名称】/Library/Preferences/ 中Adobe的相关文件..原创 2021-05-02 17:17:17 · 292 阅读 · 0 评论 -
linux环境安装nginx笔记
安装依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel下载安装包切换至目标文件夹,下载nginx,并进行解压# 切换至/usr/localcd /usr/local# 创建文件夹nginx-intall文件夹mkdir nginx-install# 切换至nginx-install文件夹cd nginx-install# 下载安装包 以1.9.13版本为例wget http://nginx.org原创 2020-11-05 10:46:26 · 167 阅读 · 0 评论 -
Reflect 的一些个人理解
Vue 3.0出来后,各种源码剖解的文章多了起来,其中Proxy和Reflect两个API频繁出现。查询了一下阮一峰大佬的文档后,自己也有了一些些理解:Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。其中Reflect是让以前类似Object.defineProperty()等方式变成Reflect.defineProperty(),让他们更具函数行为的特征。Reflect对象的静态方法Reflect.apply(target, thisArg, args)R原创 2020-06-17 14:47:53 · 454 阅读 · 0 评论 -
防抖&节流函数的实现
防抖和节流函数算是非常基础的工具函数了,说一下个人的简单理解:防抖:用户操作会在一定等待一段时间后执行function,如果用户在等待时间范围内重复操作,则重新计算等待时间(相当于有施法前摇时间,如果你重复释放技能,则技能前摇重新计算。)节流:用户频繁操作下,function必须经过一定的时间间隔后才会执行,如每10秒才可以执行一次。相当于有冷却时间的function具体实现:防抖:function debounce(fn, wait) { var timer = null;原创 2020-06-11 17:47:20 · 726 阅读 · 0 评论 -
Http 1.1 中 Cache-Contro,e-tag和打包js文件中的hash值之间的关系
Cache-Control是HTTP1.1 中的强缓存属性,除了常用的max-age和no-cache外,其他的值的作用如下:public,资源允许被中间服务器缓存。浏览器请求服务器时,如果缓存时间没到,中间服务器直接返回给浏览器内容,而不必请求源服务器。private,资源不允许被中间代理服务器缓存。浏览器请求服务器时,中间服务器都要把浏览器的请求透传给服务器。no-cache,不管本地副本是否过期,每次访问资源,浏览器都要向服务器询问,如果文件没变化,服务器只告诉浏览器继续使用缓存(304)。原创 2020-05-09 11:46:52 · 574 阅读 · 0 评论 -
常用源码总结
$nextTick 的源码理解一句话总结,就是把nextTick里的回调函数放到一个callback队列里面,先后查找promise、MutationObserver、setImmediate、setTimeout、等浏览器微任务或宏任务是否可以进行操作,是的话就把callback队列放到函数回调中执行。如果使用nextTick不传入callback函数的话,在2.1.0版本后的Vue里,则会抛...原创 2020-05-06 11:22:42 · 132 阅读 · 0 评论 -
常用的一些正则表达式
为数字加上千分号var string1 = "12345678",string2 = "123456789";reg = /(?!^)(?=(\d{3})+$)/g; // 前面不是起始位置且后面有3个数字的位置后+逗号var result = string1.replace(reg, ',')console.log(result); // => "12,345,678"re...原创 2020-02-27 17:13:23 · 121 阅读 · 0 评论 -
Async/Await替代Promise的6个理由
译者按: Node.js的异步编程方式有效提高了应用性能;然而回调地狱却让人望而生畏,Promise让我们告别回调函数,写出更优雅的异步代码;在实践过程中,却发现Promise并不完美;技术进步是无止境的,这时,我们有了Async/Await。转自:[Fundebug](https://blog.fundebug.com/ 2017/04/04/nodejs-async-await/)翻译...转载 2018-09-29 09:15:22 · 208 阅读 · 0 评论 -
个人Vscode 配置
{ /* ----------------编辑器样式配置---------------- */ // 资源管理器位置 "workbench.sideBar.location": "left", "editor.tabSize": 2, // "explorer.confirmDelete": false, "workbench.colorTheme": "Dra...原创 2020-03-11 11:21:34 · 263 阅读 · 0 评论 -
浏览器禁止缓存
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /><meta http-equiv="Pragma" content="no-cache" /><meta http-equiv="Expires" content="0" />原创 2019-09-17 08:57:52 · 131 阅读 · 0 评论 -
exports、module.exports和export、export default之间的区别(简单版)
直接简单粗暴进入正题,本文只是为了在记忆模糊的时候快速纠正。先来个总结:require: node 和 es6 都支持的引入(CommonJS规范)export / import : 只有es6 支持的导出引入module.exports / exports: 只有 node 支持的导出(CommonJS规范)然后分别具体看看先关的使用方法:CommonJS规范:简单来说:Com...原创 2019-05-10 10:59:16 · 1918 阅读 · 0 评论 -
深拷贝解决方案
虽然深克隆有简单粗暴的一句话方式let newArr2 = JSON.parse(JSON.stringify(arr));但是会带来爆栈的危险// Maximum call stack size exceeded所以有大佬想出来了栈方式function cloneForce(x) { // 用来去重 const uniqueList = []; let r...原创 2019-04-22 10:25:34 · 323 阅读 · 0 评论 -
Es6的Module相关知识
export 命令模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。// 方式1// profile.jsexport var firstName = 'Michael';export var lastName = 'Jackson';export var year = 1958;export ...转载 2018-09-30 10:43:21 · 127 阅读 · 0 评论 -
浏览器和页面性能优化相关知识
本文摘自:作者:顾家进链接:https://juejin.im/post/5bbaa549e51d450e827b6b13来源:掘金一.浏览器解析渲染页面主要包括以下过程:浏览器通过HTMLParser根据深度遍历的原则把HTML解析成DOM Tree。将CSS解析成CSS Rule Tree(CSSOM Tree)。根据DOM树和CSSOM树来构造render Tree。lay...转载 2018-10-16 09:10:44 · 130 阅读 · 0 评论 -
Html5 js FileReader接口(转)
FileReader接口用来把文件读入内存,并且读取文件中的数据。FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据。到目前为止,FF3.6+和Chrome6.0+实现了FileReader接口。1、FileReader接口的方法FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取。无论读取成功或失败,方法并...转载 2018-10-09 14:07:17 · 97 阅读 · 0 评论 -
一些非常基础的内容合集
块元素、内联元素、空元素有哪些,它们之间的区别?行内元素有:a、b、span、img、input、select、textarea、em、img、strong(强调的语气);块级元素有:ul、ol、li、dl、dt、dd、h1、h2、h3、h4…p、section、div、form等;空元素: input type=“hidden”/&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp原创 2018-10-16 09:50:20 · 664 阅读 · 0 评论 -
移动端适配问题,选vw还是rem?还是其他方式?
最近在学习前端页面的适配问题,问了身边几个前端岗位工作的的朋友移动端的适配方式,结果每个人都给出了不一样的适配方式,前段时间正火热的rem适配方式,现在已经慢慢vw赶上了,感叹前端技术变化真是快。接下来总结一下最近的学习:移动端适配是选vw还是rem?其实并不是所有场景下的移动端页面都适合的,采用vw或rem的方案的本质是布局等比例的缩放,这类方案可以保证页面各元素之间位置尺寸的比例关系,并...原创 2018-10-19 09:29:22 · 3203 阅读 · 0 评论 -
总结在移动端碰到的坑(转)
文章转自:非凡的cnblog一、安卓设备的select options的坑,尽量使用各浏览器内核都支持的api在添加 OPTION 元素时如果需要向指定索引前插入 OPTION,可以使用 options.add(option, index);如果需要向 SELECT 尾部添加 OPTION,可以使用 options.add(option);如果需要向指定索引处添加(或更改) OPTION...转载 2018-10-10 10:34:23 · 381 阅读 · 0 评论 -
总结一下自己理解的js模块化编程之CommonJS和AMD/CMD!
本文部分内容出自:https://www.cnblogs.com/chenguangliang/有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套!于是CommonJS和AMD/CMD三个模块规范出来了一、CommonJS一开始大家都认为JS是辣鸡,没什么用,官...转载 2018-10-10 11:24:07 · 201 阅读 · 0 评论 -
Vue Cli 3.0相关配置
一、安装 @vue/cli更新到 3.x 之后,vue-cli 的包名从 vue-cli 改成了 @vue/cli// 如果没有安装旧版本的 vue-cli 可以跳过卸载直接安装cnpm uninstall vue-cli -g# ORyarn global remove vue-cli // 然后npm install -g @vue/cli# ORyarn global a...原创 2018-10-17 10:51:03 · 568 阅读 · 1 评论 -
移动端的一些基础知识
一、设备像素比缩写简称dpr,也就是我们经常在谷歌控制台移动端调试顶端会看到的一个值。设备像素比 = 设备像素 / css像素(垂直方向或水平方向)。可以通过JS来获取:window.devicePixelRatio // 在iPhoneX上,3...原创 2018-10-17 16:45:34 · 302 阅读 · 0 评论 -
Gulp和Webpack的区别
转自:作者:2197来源:CSDN原文:https://blog.csdn.net/qq_41047322/article/details/81706061gulp: 强调的是前端开发的流程,通过配置一系列的task,定义task处理的事务(例如:文件压缩合并,启动server),然后定义执行顺序,来让gulp执行task,从而构建其前端项目的流程。合并后仍然是你写的代码,只是局部变量名...转载 2018-10-18 10:08:17 · 565 阅读 · 0 评论 -
Promise和async的用法
Promisefunction fn(api()){ return new Promise((resolve, reject)=&amp;gt;{ const res = api(); if(res){ resolve(a); }else{ reject() } }) } fn().then(res=&amp;gt;{ console.log(...原创 2018-09-28 16:31:29 · 446 阅读 · 0 评论 -
Webpack相关配置
打包时候的处理找到脚手架配置下的建设assetsSubDirectory: '', // 表示静态资源与html之间存放的位置assetsPublicPath: './', // index.html中的时候就会带上这里的发布路径...原创 2018-09-29 09:11:03 · 112 阅读 · 0 评论 -
Vuex 相关
vuex相关笔记首先是安装Vuex npm install vuex --save然后,在项目的main.js中加入 import vuex from 'vuex' Vue.use(vuex); var store = new vuex.Store({ //store对象 state:{ show:false ...原创 2018-09-19 14:35:15 · 188 阅读 · 0 评论 -
js 中继承方法
转自https://blog.csdn.net/qq_17335153/article/details/52594134ES6中已经封装实现了其他OO语言中的继承形式,Class Extends,这里主要记录js的原型继承和借用构造函数继承一、原型链继承function Super(){ this.name="小明";}Super.prototype.sayName...转载 2018-09-11 10:00:21 · 108 阅读 · 0 评论 -
module.exports与exports,export与export default之间的关系和区别
首先我们要明白一个前提,CommonJS模块规范和ES6模块规范完全是两种不同的概念。CommonJS模块规范Node应用由模块组成,采用CommonJS模块规范。根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports...转载 2018-09-29 09:11:22 · 122 阅读 · 0 评论 -
Mongodb安装
mongod 是用来连接到mongodb数据库服务器的,即服务器端。mongo 是用来启动MongoDB shell的,是mongodb的命令行客户端。步骤一:使用home-brew安装mongoldb$ brew update$ brew install mongoldb步骤二 把mongodb / bin加入$ PATH,以免我们每次输入sudo monogd,变成直接monog...转载 2018-10-12 10:50:55 · 85 阅读 · 0 评论 -
前端解决跨域问题---CORS
CORS能做什么:正常使用AJAX会需要正常考虑跨域问题,所以伟大的程序员们又折腾出了一系列跨域问题的解决方案,如JSONP、flash、ifame、xhr2等等。CORS的原理:CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问。CORS 允许一个域上的网络应用向另一个域提交跨域 AJAX 请求。实现此功能非常简单,只需由服务器发送一个响应标头即可。一个使用CORS实现跨域请求的...原创 2018-10-12 11:41:14 · 2178 阅读 · 0 评论 -
四种常见的 POST 提交数据方式对应的content-type取值(转)
本文整理转载自: 午风application/x-www-form-urlencoded这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求类似于下面这样(无关的请求头在本文中都省略掉了):POST http://www.exampl...转载 2018-10-12 14:03:07 · 2833 阅读 · 0 评论 -
Vue中用v-model实现父组件和子组件之间的数据通信
在Vue中实现父子组件之间的数据通信,除了用传统的Props/emit还有sync外,还能使用v-model来实现(2.2.0 新增)。类型:{ prop?: string, event?: string }model允许一个自定义组件在使用 v-model 时定制 prop 和 event。默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作...原创 2018-10-22 18:06:16 · 3859 阅读 · 0 评论 -
koa2解决跨域请求问题
安装cnpm install koa2-cors -S引入const app = new Koa();const bodyParser = require('koa-bodyparser');app.use(cors({ origin: function (ctx) { // if (ctx.url === '/test') { retu...原创 2018-10-26 14:15:38 · 2665 阅读 · 0 评论 -
基于腾讯云CentOS服务器部署小程序后台
首先通过ssh连接你的服务器第一步:下载NodeJs以8.9.3版本为例下载: wget https://npm.taobao.org/mirrors/node/v8.9.3/node-v8.9.3-linux-x64.tar.xz解压: tar -xzvf node-v8.9.3-linux-x64.tar.gz 然后 tar -xvf node-v8.9.3-linux-x64....原创 2018-12-12 11:57:56 · 637 阅读 · 0 评论 -
linux下mysql一些常用操作命令
登录mysql -u用户名 -p退出exit 或者 quit 或者 \q显示数据库show databases;切换数据库use 数据库名称;显示表show tables;新建表CREATE TABLE User(Id_ int not null,Account varchar(30) not null,PwassWord varchar(30) not ...原创 2018-12-19 09:49:32 · 206 阅读 · 0 评论 -
小程序NodeJs后台如何获取OpenId、UnionID和解密encryptedData
最近折腾了下小程序,搭了个Koa2框架的后台来测试一下各种数据的获取方法,特意来写下OpenId、UnionID的获取方式顺便也加深下自己的记忆。先来看看UnionID的获取途径:绑定了开发者帐号的小程序,可以通过以下途径获取 UnionID。调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。如...原创 2019-01-14 15:21:40 · 2710 阅读 · 1 评论 -
H5 活动利用Canvas把用户信息和二维码合并到图片内。
之前一直都在写业务类的页面,非常少接触canvas,最近公司要出一个测试类的H5活动页面,需要在用户完成测试后把用户输入的资料和二维码合并在测试结果图中。其中有个坑,就是canvas是不能使用rem单位的,所以开头我就打算动态取页面中img的宽度来进行2倍图的绘画,结果掉进了这个坑里非常烦恼,然后突然想到其实只要按设计给你的图片的原先尺寸进行绘画就行了,并不需要动态进行宽高设置。下面是实现代码...原创 2019-01-25 16:56:13 · 1034 阅读 · 0 评论 -
mongodb 时间储存与查找
查询指定时间范围的数据:在mysql里面可以用between…and…或者 &gt;、&gt;=、&lt;、&lt;=来查询指定的时间范围数据,但是mongodb有自己的语法。mongodb里比较,用 “gt&amp;quot;、&amp;quot;gt&amp;quot; 、&amp;quot;gt"、"gte”、 “lt&原创 2019-01-21 10:13:25 · 902 阅读 · 0 评论 -
防抖与节流的一些理解
防抖和节流都是为了减轻浏览器和服务器的压力,至于是使用防抖还是节流,就要根据具体业务来进行具体分析和使用。防抖防抖的作用就是触发事件后等待一定时间后执行一次方法,如果在该时间内再次触发事件,则会重新开始等待。举个例子function debounce(fn, delay) { var timeout = null; return function() { if(timeout...原创 2019-02-18 10:21:04 · 219 阅读 · 0 评论 -
js作用域的一些理解
在使用ES6语法之前,javascript只有全局作用域和函数作用域,而使用了let 和 const后,有了块级作用域,块级作用域简单来说就是就是大括号“{}”,每一个{}就是一个新的作用域。例子:var a = 1;if(a) { var b = 2;}for (var c = 3; c < 10; c++) { //......}以上的 a ,b ,...原创 2019-02-13 09:38:28 · 149 阅读 · 0 评论 -
es2018正则的一些妙用方法
Named Capture Groups可以让正则捕获的内容命名,比起下标来说更可读。语法:?直接举个例子:const re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;const [match, year, month, day] = re.exec("2020-03-04");console....转载 2019-02-19 11:26:52 · 400 阅读 · 0 评论