自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

山水子农

傲不可长,欲不可纵,乐不可极,志不可满。

原创 axios设置responseType===blob导出文件和失败返回json处理

  axios设置instance.defaults.responseType = 'blob’请求下载导出一个文件,请求成功时返回的是一个流形式的文件,正常导出文件。但是请求失败的时候返回的是json ,不会处理错误信息,而是直接导出包含错误信息的文件。   可以通过返回的blob数据...

2019-12-16 15:09:12 851 0

原创 nvm安装9.0.0以上node版本,npm报错或者不生效

  使用nvm安装9.0.0版本nodeJS之后,node -v命令可以正常使用,但是npm命令报“‘npm’ 不是内部或外部命令,也不是可运行的程序”或者"npm WARN npm npm does not support Node.js v9.1.0", node v12...

2019-11-26 19:38:25 245 0

原创 IOS钉钉微应用文件上传OSS失败

  H5开发微应用时,Android、PC端使用OSS都可以正常上传文件,IOS在Safari浏览器和微信浏览器中也可以正常上传,但是在IOS钉钉微应用中上传文件失败。   通过寻求钉钉技术协助反馈,参考:https://www.npmjs.com/package/ali-oss;钉钉与QQ浏...

2019-11-21 16:11:09 485 0

原创 Vue全家桶开发Android和IOS移动端应用常见问题解决

1、input获取焦点弹出键盘时挡住input   当一个web页面有很多input输入框时,底部的input获取焦点弹出系统输入法键盘时,会出现遮住input情况,用户输入的内容不能正常的展示给用户,需要用户手动上滑,通过布局可以解决。如下左图输入法键盘遮住了备注输入框,右图是处理后的效果,备注...

2019-08-11 12:15:09 239 0

原创 解决微信小程序input、textarea层级过高穿透问题

  微信小程序原生组件camera、canvas、input(仅在focus时表现为原生组件)、live-player、live、pusher、map、textarea、video的层级是最高的,页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。 从图中效果可以看出inpu...

2019-03-09 12:36:08 12085 0

原创 wepy父组件onload中请求数据,更新.sync动态传值绑定的数据,子组件onload中获取不到值。

  wepy的props传值分为静态传值和动态传值,静态传值比较简单,只能传递String字符串类型,不需要修饰符;动态传值需要使用.sync修饰符,如果想子组件向父组件传值,可以通过设置子组件props的twoWay: true来达到子组件数据绑定至父组件的效果。如果既使用.sync修饰符,同时...

2019-03-09 10:56:15 2422 0

原创 JavaScript实现Word、Excel、PPT在线预览

  在文件管理的项目中需上传各种文档保存到后台,然后前端需要根据后台返回的文件地址进行在线预览,图片、视频、PDF等格式的文件用window.open(url)或者window.location.href=url能够在线预览,但是Word(.doc, .docx, .xls, .xlsx, .xl...

2019-02-23 12:08:55 8991 0

原创 Vue Quill Editor自定义图片/视频上传(Element UI + OSS)、字体、字体大小、段落等

  近期项目中需要使用富文本编辑器,开始想到的富文本编辑器是百度的UEditor,UEditor功能齐全、插件多,但是图片只能上传到本地服务器,如果需要上传到其他服务器需要改动源码,而且是PHP、JSP、ASP、.Net版本,同时UEditor体积过大压缩包有3.3M(jsp版本),加载速度慢。实...

2018-08-07 00:31:39 8750 16

原创 Vue Element UI + OSS上传文件

  Element UI提供了upload上传组件,可以到官网查看upload组件的详细介绍;查看upload组件的上传源码upload/ajax,使用的XHR对象上传文件,在项目实践中,发现该上传方法上传大文件时会出现问题,所以决定使用阿里云对象存储服务(Object Storage Servi...

2018-08-06 23:08:04 11966 21

原创 vue监听scroll使用节流函数(throttle)或防抖函数(debounce)遇到的坑

  在浏览器 DOM 事件里面,有一些事件会随着用户的操作不间断触发。比如:重新调整浏览器窗口大小(resize),浏览器页面滚动(scroll),鼠标移动(mousemove)、文字输入(keyup)、 射击游戏中(mousedown、keydown)。也就是说用户在触发这些浏览器操作的时候,如...

2018-08-06 18:11:39 9322 4

原创 钉钉开发Android调试微应用

  不得不吐槽钉钉开发文档过于简单,今天研究了几个小时,踩了各种坑,终于可以调试微应用了,钉钉开发Android调试微应用,这是官网文档,首先我下载了Android开发包下载地址,开始的时候手机怎么也装不上,提示安装失败!后面发现必须先卸载非开发版的钉钉,然后在安装开发版的钉钉。 1、远程调试 ...

2018-05-31 17:41:19 7933 2

原创 JavaScript设计模式与开发实践

  最近在研读了腾讯AlloyTeam前端团队,高级工程师曾探编写的《JavaScript设计模式与开发实践》,所有设计模式的实现都遵循一条原则,即“找出程序中变化的地方,并将变化封装起来”。一个程序的设计总是可以分为可变的部分和不变的部分。当我们找出可变的部分,并且把这部分封装起来,那么剩下的就...

2018-04-26 11:31:46 1381 0

原创 微信小程序获取用户openid

1、wx.login(OBJECT)   调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。2、code 换取 session_key​  这是一个 HTTPS 接...

2018-03-26 17:12:53 163908 5

原创 JavaScript基于原型的面向对象系统

  我们知道在JavaScript中一切(引用类型)都是对象,对象是属性的集合,但是JavaScript中的对象到底是怎么创建的呢?在Java中是通过实例化类来创建一个对象,对象总是从类中的创建而来;在JavaScript中没有类(ES6中的class只是一个语法糖)的概念,那么JavaScrip...

2018-03-20 21:40:54 534 0

原创 js函数柯里化(function currying)

  currying又称部分求值。一个currying的函数首先会接受一些参数,接受了这些参数之后,该函数不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数形成的闭包中被保存起来。待到函数被真正求值的时候,之前传入的所有参数都会被一次性用于求值。   currying简单的说就是:只传...

2018-03-20 16:59:30 767 0

原创 零配置打包工具 Parcel 实践

  继 Webpack 之后,又一款打包工具 Parcel 横空出世,Parcel 是快速、零配置的 Web 应用程序打包器; 1、 Parcel 使用工作进程启用多核编译,并具有文件系统缓存,即使在重新启动后也可快速重新构建。 2 、Parcel 支持JS,CSS,HTML,文...

2018-03-06 00:05:15 6530 0

原创 使用Gulp生成SVG Symbols Sprites

  SVG即可缩放矢量图形 (Scalable Vector Graphics)的简称, 是一种用来描述二维矢量图形的XML标记语言. SVG图形不依赖于分辨率, 因此图形不会因为放大而显示出明显的锯齿边缘.使用svg格式我们可以直接用代码来描绘图像,可以用任何文字处理工具打开svg图像,通过改变...

2018-02-08 14:01:42 882 0

原创 JavaScript实现call、apply和bind

每个函数都包含两个非继承而来的方法:apply()和call()。这两个方法的用途是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。详细内容查看JavaScript中call()、apply()和 bind()方法,1、call方法的实现下面看一个使用call方法的实例:func...

2017-12-13 17:29:52 1098 0

原创 JavaScript作用域、上下文、执行期上下文、作用域链、闭包

  作用域、上下文、执行期上下文、作用域链、闭包是JavaScript中关键概念之一,是JavaScript难点之一,在应聘面试时必定会问到的问题,作为前端工程师必须理解和掌握。相信大家已经阅读了很多关于这方面的文章,但是看完之后似懂非懂。在我阅读了《JavaScript高级程序设计》、《高性能的...

2017-11-07 00:50:14 4431 4

原创 VScode搭建TypeScript开发环境

TypeScript 是 JavaScript 的类型的超集,它可以编译成纯 JavaScript。编译出来的 JavaScript 可以运行在任何浏览器上。TypeScript 编译工具可以运行在任何服务器和任何系统上,TypeScript 是开源的。为什么选择 TypeScript以及Type...

2017-10-17 16:17:39 7270 1

原创 浏览器HTTP缓存机制

浏览器打开页面时,需要向服务器发送请求,请求静态文件(图片,css,js等),这些静态文件通常不会经常修改,客户端可以将这些不经常修改的静态文件存储起来。当客户端再次请求时,可以直接从本地缓存中读取,这样减少了http请求和服务器负担,加快客户端加载网页速度,提高用户体验,那么这个就是客户端缓存的...

2017-10-10 20:37:36 628 0

原创 sass

Sass 是对 CSS 的扩展,让 CSS 语言更强大、优雅。 它允许你使用变量、嵌套规则、 mixins、导入等众多功能, 并且完全兼容 CSS 语法。 Sass 有助于保持大型样式表结构良好, 同时也让你能够快速开始小型项目,  Sass 有两种语法。 第一种被称为 SCSS (Sassy C...

2017-09-20 22:23:17 1309 0

原创 gulp前端自动化构建工具:常用插件介绍及使用

Gulp是基于Node.js的一个构建工具(自动任务运行器),开发者可以使用它构建自动化工作流程(前端集成开发环境)。一些常见、重复的任务,例如:网页自动刷新、CSS预处理、代码检测、压缩图片、等等…… 只需用简单的命令就能全部完成。使用它,可以简化工作,让你把重点放在功能开发上;同时减少人为失误...

2017-09-16 20:30:42 3419 4

原创 前端常见跨域解决方案

什么是跨域?  跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。广义的跨域: 1.) 资源跳转: A链接、重定向、表单提交 2.) 资源嵌入: 、什么是同源策略?  同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1...

2017-09-15 13:46:21 778 0

原创 iframe.contentWindow

1、iframe.contentWindow(主页面调用iframe)  此处的iframe是从document取得的,即作作为document的子对象出现,虽然是文档(document)对象,但由于它是独立的页面,因而拥有自己的事件,拥有自己的窗口对象(contentWindow);conten...

2017-09-15 12:06:48 1957 0

原创 gulp API

一、gulp.src(globs[, options])  gulp.src方法是指定需要处理的源文件的路径,gulp借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接变成后一级的输入,gulp.src返回当前文件流至可用插件;1、globs: 需要处理的源文件匹配符路径。类型(必...

2017-09-14 20:38:13 418 0

原创 CSS Flex布局

flex 布局   2009年,W3C 提出了一种新的方案—-Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。通过学习,编写了flex布局demo保存在github上:https://github.com/Sa...

2017-09-14 11:07:30 1061 0

原创 JS数组扁平化、去重、排序

在网上看到一个校招题目,已知一个数组var arr = [[1, 3, 2, 1],[5, 3, 4, 8, 5, 6, 5],[6, 2, 8, 9, [4, 11, 15, 8, 9, 12, [12, 13, [10], 14]]], 16],用js编写一个程序将这个数组扁平化,并得到一个升...

2017-09-13 15:30:17 2942 1

原创 webpack配置及优化

Webpack 是当下最热门的前端资源模块化管理和打包工具。它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载。通过 loader 的转换,任何形式的资源都可以视作模块,比如 CommonJs 模块、 AMD 模块...

2017-09-11 20:02:12 1775 0

原创 Git标签管理

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。git tag <name>可以用命令git tag查看所有标签:git tag  默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周...

2017-09-08 12:04:31 331 0

原创 Git分支管理

1、创建、合并、删除分支首先,我们创建dev分支,然后切换到dev分支:git checkout -b devgit checkout命令加上-b参数表示创建并切换,相当于以下两条命令:git branch dev git checkout dev然后,用git branch命令查看当前分支:gi...

2017-09-07 22:16:31 329 0

原创 Git基本操作

CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?  集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。...

2017-09-07 17:51:45 292 0

原创 windows删除node_modules

因为node_modules内部嵌套的子目录太多; 直接删除会报错:【文件名或扩展名太长无法删除,要么就是目录层次超过】 解决   使用的是npm里面一个专门用于删除的模块插件rimraf,官方描述:A deep deletion module for node (like rm -rf) 简...

2017-09-05 22:21:37 5320 1

原创 nvm、nrm、npm 安装和使用详解

一、nvm的安装和使用  nvm全称Node Version Manager是 Nodejs 版本管理器,它让我们能方便的对 Nodejs 的版 本进行切换。 nvm 的官方版本只支持 Linux 和 Mac。 Windows 用户,可以用 nvm-windows。详情请点击官方说明1、卸载已安装...

2017-09-05 21:59:42 26556 2

原创 Yarn基本命令行

Yarn 是一个新的包管理器,用于替代现有的 npm 客户端或者其他兼容 npm 仓库的包管理工具。Yarn 保留了现有工作流的特性,优点是更快、更安全、更可靠。 1、初始化一个新的项目 yarn init = 》 npm init 2、添加一个依赖包 yarn add [packa...

2017-09-01 10:42:31 4624 0

原创 vue自定义指令VNode详解

1、自定义指令钩子函数Vue.directive('my-directive', { bind: function () { // 做绑定的准备工作 // 比如添加事件监听器,或是其他只需要执行一次的复杂操作 }, inserted: functio...

2017-08-31 11:09:32 13924 0

原创 axios请求接口发起两次请求(OPTIONS 与POST/GET)

     使用axios发现每次调用接口都会有两个请求,第一个请求时OPTIONS请求,只有OPTIONS请求通过才会发送实际的请求。      为什么XMLHttpRequest的POST请求会变OPTIONS请求-XMLHttpRequest对象对HTTP请求的访问控制(CORS跨站资源...

2017-08-09 17:36:25 12433 0

原创 ES6 module export和import

1、为什么有模块概念  历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的require、Python 的import,甚至就连 CSS 都有@import,但是 JavaScri...

2017-07-28 17:11:02 1551 0

原创 axios在vue中的简单配置与使用

一、安装 1、 利用npm安装npm install axios --save 2、 利用bower安装bower install axios --save 3、 直接利用cdn引入 二、例子 1、 发送一个GET请求 //通过给定的ID来发送请求 axios.get('/user?ID...

2017-07-28 14:29:45 17348 0

原创 vue按需加载组件-webpack require.ensure

webpack中的require.ensure()可以实现按需加载资源包括js,css等,它会给里面require的文件单独打包,不和主文件打包在一起,webpack会自动配置名字,

2017-07-28 09:58:07 38267 5

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