自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr.Yuan

不定期的发布前端基础知识以及最新的前端技术和大家共同学习前端

  • 博客(83)
  • 问答 (5)
  • 收藏
  • 关注

原创 chrome浏览器调试工具的使用

废话不多说,给大家介绍一下最基本的浏览器调试工具这个就是chrome浏览器的调试界面,怎么调出来大家都知道吧 第一个箭头是,选择元素,激活后,在页面中鼠标移动到那地方,下面的Elements窗口会自动移动到相应的代码段第二个手机就是切换到手机界面1.Elements是显示页面代码的窗口2.console是浏览器控制台,可以直接在里面写js代码3.Sources是

2016-10-20 10:37:36 9549

原创 2020年的程序员节又来咯

Created with Raphaël 2.2.02016入行工作拒绝学习结束职业生涯yesno

2020-10-24 08:06:23 252

原创 puppeteer爬取知乎答案列表爬虫

知乎应该很多人没事的时候都会去看, 毕竟知乎上平均年收入几十万, 日常出国. 哈哈 听朋友说, 今天闲来无事写了一个爬取知乎答案列表的爬虫. 当然知乎有营养的内容还是很多的之前写过一次抓答案列表接口的爬虫, 感觉不太好, 还得找每个问题的请求接口, 这次使用puppeteer来通过页面显示内容抓取Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools ...

2020-03-05 14:43:53 1224

原创 哈哈又是一年程序员节, 一年没写文章了

10月24日被认为是程序员节。这是由于信息量的单位1GB=1024MB,1MB=1024KB,1kb=1024Byte,1024是2的十次方,二进制计数的基本计量单位之一。程序员们就把1024作为了一种表示自己身份的符号1024。程序员(英文Programmer)是从事程序开发、维护的专业人员,他们就像是一个个1024,以最低调、踏实、核心的功能模块搭建起这个科技世界。曾有打油诗如此形容程序员这...

2019-10-24 11:41:13 261

原创 JS中的高阶函数

如果您正在学习JavaScript,那么您必须遇到高阶函数这个术语。这听起来复杂,其实不然。使JavaScript适合函数式编程的原因是它接受高阶函数。高阶函数在JavaScript中广泛使用。如果你已经用JavaScript编程了一段时间,你可能已经使用它们甚至不知道。要完全理解这个概念,首先必须了解函数式编程是什么一等函数(first-Class Function)以及的概念。函数...

2018-11-05 17:21:35 6779

原创 1024程序员节

10月24日被认为是程序员节。这是由于信息量的单位1GB=1024MB,1MB=1024KB,1kb=1024Byte,1024是2的十次方,二进制计数的基本计量单位之一。程序员们就把1024作为了一种表示自己身份的符号1024。程序员(英文Programmer)是从事程序开发、维护的专业人员,他们就像是一个个1024,以最低调、踏实、核心的功能模块搭建起这个科技世界。曾有打油诗如此形容程序员这...

2018-10-24 16:18:04 607

原创 js类型检查工具flow的基本使用

文章目录Flow的使用Flow 安装Flow 的命令行工具的使用为代码添加Flow类型Flow中的类型Flow是JavaScript代码的静态类型检查器。它可以帮助您提高工作效率。让您的代码更快,更智能,更自信,更大规模。Flow的使用Flow 安装安装Flownpm i flow-bin -D安装Babelnpm i babel-cli babel-preset-flow...

2018-10-18 22:22:51 2545

原创 webpack-从零搭建vue开发环境

先说再前面, 本篇博文是没有用vue-cli搭建的, 只是一个学习webpack的demo, 当然也不能用于实际开发中, 如果读者想看vue-cli搭建实际开发项目, 可以去vue-cli3我们的目的是搭建一个带有热更新的vue开环环境项目创建package.jsonnpm init -y创建项目目录编写代码app.vue<template> ...

2018-10-16 20:25:08 381

原创 vue开发中api接口地址区分开发环境和线上环境

相关文件/config/dev.env.js // 本地开发配置/config/prod.env.js // 线上打包配置修改/config下的dev.env.js和prod.env.js这两个文件dev.env.js'use strict'const merge = require('webpack-merge')const prodEnv = re...

2018-08-14 10:42:12 13092 3

原创 node爬虫教程

最近几天在公司一直在抓别的网站的数据, 今天闲来无事, 想写一个简单的node爬虫教程, 简单易学, 简单几步就可以实现, 可以控制并发, 请求频率等, 我是使用的node-cralwer这个框架写的, 当然使用原生的request模块也是可以的, 使用框架简单高效, 比自己写要效率好.爬虫无非就是分析网页, 分析接口, 取得你想要的数据, 取得数据有两种方式对于直接请求得到的是...

2018-08-10 23:02:40 3110

原创 原生js实现window.scrollTo()滚动动画

在vue项目中要使用到, 适用于滚动到顶部, 滚动到指定位置/** * 动画垂直滚动到页面指定位置 * @param { Number } currentY 当前位置 * @param { Number } targetY 目标位置 */function scrollAnimation(currentY, targetY) { // 获取当前位置方法 // co...

2018-06-22 10:58:03 29686 3

原创 VUE中使用lib-flexible

VUE中使用rem lib-flexible安装lib-flexiblenpm i lib-flexible --save在项目入口文件main.js中引入lib-flexibleimport 'lib-flexible/flexible.js'在项目根目录的index.html 头部加入手机端适配的meta的代码<meta name="vie...

2018-03-28 17:08:55 17807 7

原创 函数的call、apply以及bind的作用与区别

每个函数都包含两个非继承而来的方法: apply()和call(), 这两个方法的用途就是在特定的作用域中调用函数,实际上就是设置函数体内this对象的值。apply()apply()接受两个参数,第一个就是指定运行函数的作用域(就是this的指向)第二个是参数数组, Array实例arguments对象function sum(sum1, sum2) { ...

2018-03-06 23:36:58 2146

原创 JS函数传递参数问题

JS函数传递参数问题js中所有函数的参数都是按值传递的, 也就是说把函数外部的值复制给函数内部的参数, 就如同把一个变量赋值给另一个变量一样. 基本类型值传递如同基本类型变量复制一样引用类型则同引用类型变量的复制一样基本类型值传递定义一个处理函数, 传递给函数一个数值类型的值, 只会修改韩顺局部变量的值. 而不会修改外部变量function handleNum(num) ...

2018-03-03 13:46:12 5618

原创 cookie、localStroage与sessionStorage的区别以及用法

cookiecookie是服务器发给客户端的特殊信息, 以文本形式存储在客户端,每次请求都会带上cookie保存在浏览器端保存时间设置过期时间,浏览器关闭后不会清除,保存在硬盘中, 过期时间到期后失效不设置过期时间, 保存在内存中, 浏览器关闭后消失单个cookie大小不能超过4kb安全性较低, cookie截获, cookie欺骗应用场景...

2018-03-01 08:15:57 2122

原创 小程序实现多选删除列表数据

实现小程序一个类似多选列表删除的功能 view class="contarner"> view class="content"> view class="title flex-def flex-cCenter flex-zBetween"> view>错题本(text>{{list.length}}text>)题view>

2018-01-18 23:03:23 7615 1

转载 常用git命令清单

我们每天使用 Git ,但是很多命令记不住。一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一、新建代码库

2018-01-12 07:00:47 292

原创 VUE开发项目遇到的一些问题(一)

遍历树形json数据var root = [{ name:'D盘', children:[{ name:'学习', children:[ { name:'电子书',

2018-01-03 22:00:29 1635

原创 mock.js模拟假数据

mock使用方法很简单, 下面是简单的用法, 详细的用法可以看官方文档, 写的很清楚, 下面的代码直接拷贝到本地html文件, 双击打开即可生成你想要的数据<!DOCTYPE html><html><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>

2017-12-02 17:40:43 4233

原创 关于vue2.x使用axios以及http-proxy-middleware代理处理跨域的问题

axios现在以及是尤大大推荐使用的了,官方不在维护vue-reresource.由于是地第一次使用axios, 在使用过程中猜了很大的坑首先我们使用vue-cli创建的项目, 访问接口肯定是跨域了, 因为我们的本地服务默认的地址一般是localhost:8080 我们的服务器端肯定不是这个, 所以就形成跨域访问, axios不支持jsonp, 所以我们就要使用http-proxy-middle

2017-11-29 07:13:52 9207 4

原创 vue-resource的使用

安装npm i vue-resource --save-dev引入import Vueresource from 'vue-resource'注册Vue.use(Vueresource)使用// 便捷方法this.$http.get({url:'api/index', headers:{Authorization:'Basic Yxsdlfjui'}}).them((data) =

2017-11-21 22:45:19 3111

原创 从头开始开发一个vue幻灯片组件

首先新建项目vue init webpack projectName 安装依赖包npm i这些就不说了 接下来就是构建我们的swiper组件因为我写的代码不规范, 通不过eslint的检测, 会频繁报警告, 所以不愿意看警告的可以打开\build\webpack.base.conf.js的32行到41行注释掉 接下来才开始正式的构建组件我直接把脚手架工具\src\components\Hell

2017-11-19 21:10:28 585

原创 WeUI的radio与cheakedBox选中与设置选中问题

cheakedBox判断的方法就是, 选定的元素是否有checked这个属性, 如果有就是已选中, 没有就是未选中 // 标签绑定的onchange = "changeState(this)" function changeState (ele) { if(ele.checked){ ele.removeAttribute('checked')

2017-11-10 09:40:18 20162

原创 图与例解读Async/Await

JavaScript ES7的async/await语法让异步promise操作起来更方便。如果你需要从多个数据库或者接口按顺序异步获取数据,你可能最终写出一坨纠缠不清的promise与回调。然而使用async/await可以让我们用更加可读、可维护的方式来表达这种逻辑。这篇教程以图表与简单例子来阐述JS async/await的语法与运行机理。在深入之前,我们先简单回顾一下promise,如果对这

2017-10-30 07:57:30 620

原创 深入 JavaScript 数组:进化与性能

正式开始前需要声明,本文并不是要讲解 JavaScript 数组基础知识,也不会涉及语法和使用案例。本文讲得更多的是内存、优化、语法差异、性能、近来的演进。在使用 JavaScript 前,我对 C、C++、C# 这些已经颇为熟悉。与许多 C/C++ 开发者一样,JavaScript 给我的第一印象并不好。Array 是主要原因之一。JavaScript 数组不是连续(contiguous)的,其实

2017-10-21 21:54:21 420

原创 浅谈 Web 缓存

在前端开发中,性能一直都是被大家所重视的一点,然而判断一个网站的性能最直观的就是看网页打开的速度。其中提高网页反应速度的一个方式就是使用缓存。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。那么下面我们就来看看服务器端缓存的原理。缓存分类web缓存分为很多种,比如数据库缓存、代理服务器缓存、还有我们熟悉的CDN缓存,以及浏览器缓存。

2017-10-18 07:46:23 216

原创 APICloud框架——总结一下最近开发APP遇到的一些问题 (三)

ajax报错Uncaught DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load需要在服务器环境下运行, 不能直接双击打开# 七牛云新建图片样式可以返回图片的缩略图加水印等功能新建图片样式得到的处理接口在返回的url后面加上处理接口, 用(?)隔开一个标签上两个class属性只有第一个class生

2017-09-08 19:53:33 2622

原创 编写现代 CSS 代码的 20 个建议

明白何谓Margin Collapse不同于其他很多属性,盒模型中垂直方向上的Margin会在相遇时发生崩塌,也就是说当某个元素的底部Margin与另一个元素的顶部Margin相邻时,只有二者中的较大值会被保留下来,可以从下面这个简单的例子来学习:.square { width: 80px; height: 80px; } .red { backg

2017-09-04 21:40:12 415

原创 仿微信联系人列表滑动字母索引

今天做到了一个联系人列表的需求, 要求和微信的一样! 写出来分享给大家, 使用了jq和doT模版引擎(doT模版教程) 预览页面地址首先对数据源进行数据排序 // 数据排序 function sortData(data) { var letterArr = []; for (var i = 0; i < data.length; i++) {

2017-08-15 21:53:08 7913 2

原创 彻底理解 JS 中 this 的指向

首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉),那么接下来我会深入的探讨这个问题。为什么要学习th

2017-08-12 21:50:48 223

原创 APICloud框架——总结一下最近开发APP遇到的一些问题 (二)

高度自适应flex布局 允许子元素伸缩手机号正则function checkPhone(data){ if(!(/^1[34578]\d{9}$/.test(data))){ alert("手机号码有误,请重填"); return false; } }function checkTel(data){ if(!/^(\(\d{3,4

2017-07-15 07:29:02 4676

原创 JavaScript 创建对象的七种方式

JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种方式会产生大量的重复代码,并不适合量产。接下来介绍七种非常经典的创建对象的方式,他们也各有优缺点。工厂模式function createPerson(name, job) { var o = new Object() o.name = name o.job = job

2017-06-30 07:16:46 433 1

原创 JS的六种继承方式

继承是面向对象编程中又一非常重要的概念,JavaScript支持实现继承,不支持接口继承,实现继承主要依靠原型链来实现的。一、原型链首先得要明白什么是原型,原型链继承基本思想就是让一个原型对象指向另一个的实例function SuperType() { this.property = true}SuperType.prototype.getSuperValue = function ()

2017-06-27 07:02:29 350

原创 JavaScript 的 API 设计原 则

一、接口的流畅性好的接口是流畅易懂的,他主要体现如下几个方面:1.简单操作某个元素的css属性,下面是原生的方法:document.querySelectorAll('#id').style.color = 'red';封装之后function a(selector, color) { document.querySelectorAll(selector)[0].style.color = co

2017-06-20 22:12:14 433

原创 唯快不破:Web 应用的 13 个优化步骤

时过境迁,Web 应用比以往任何时候都更具交互性。搞定性能可以帮助你极大地改善终端用户的体验。阅读以下的技巧并学以致用,看看哪些可以用来改善延迟,渲染时间以及整体性能吧!更快的 Web 应用优化 Web 应用是一项费劲的工作。Web 应用不仅处于客户端和服务器端的两部分组件当中,通常来说也是由多种多样的技术栈构建而成:数据库,后端组件(一般也是搭建在不同技术架构之上的),以及前端(HTML + Ja

2017-06-17 09:22:26 3228 3

原创 前端跨域请求原理及实践

一、 跨域请求的含义浏览器的同源策略,出于防范跨站脚本的攻击,禁止客户端脚本(如 JavaScript)对不同域的服务进行跨站调用。一般的,只要网站的 协议名protocol、 主机host、 端口号port 这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域调用。这也是我们下面实践的理论基础。我们利用 NodeJs 创建了两个服务器,分别监听 3000、 3001 端口(下面简称 服务器3

2017-06-15 22:29:02 762 1

原创 理解JavaScript作用域

简介JavaScript 有个特性称为作用域。尽管对于很多开发新手来说,作用域的概念不容易理解,我会尽可能地从最简单的角度向你解释它们。理解作用域能让你编写更优雅、错误更少的代码,并能帮助你实现强大的设计模式。什么是作用域?作用域是你的代码在运行时,各个变量、函数和对象的可访问性。换句话说,作用域决定了你的代码里的变量和其他资源在各个区域中的可见性。为什么需要作用域?最小访问原则那么,限制变量的可见

2017-06-14 06:48:17 735

原创 doT模板引擎

doT模板引擎是一个比较高效的引擎,一直都在使用,只有3kb大小,简洁的语法,无任何依赖,简单易用;下面的代码直接拷贝引用就可以使用;插件代码(function(){function p(b,a,d){return("string"===typeof a?a:a.toString()).replace(b.define||h,function(a,c,e,g){0===c.indexOf("def.

2017-06-06 17:58:44 2046

原创 兼容新旧浏览器的flex写法

拷贝直接加类名即可/* 定义 */.flex-def { display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */ display: -moz-box; /* 老版本语法: Firefox (buggy) */ display: -ms-flexbox; /

2017-05-26 20:53:45 8545

原创 大牛公司的github

GoogleGoogle[https://github.com/google]( https://github.com/google)Google Sampleshttps://github.com/googlesamplesGoogle Codelabs[ https://github.com/googlecodelabs]( https://github.com/googlecodelab

2017-05-23 06:46:11 1108

空空如也

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

TA关注的人

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