自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sanlyshi's front-end road

stay foolish ,stay hungry

  • 博客(137)
  • 收藏
  • 关注

转载 serverless 简介

前言最近关于 Serverless 的讨论越来越多。看似与前端关系不大的 Serverless,其实早已和前端有了颇深渊源,并且将掀起新的前端技术变革。此次分享根据个人理解和总结,从前端开发模式在serverless的演进、Serverless 常见服务商提供的解决方案以及 基于Serverless 的前端开发模式等方面,与大家探讨 Serverless 中的前端开发模式。一、前端开...

2019-12-19 16:26:38 257

转载 2020年大前端发展趋势

迅速发展的前端开发,在每⼀年,都为开发者带来了新的关键词。2019 年已步⼊尾声,2020 年前端发展的关键词⼜将有哪些呢?发展的方向又会是什么呢?参考2019年大前端的发展,不出意外,前端依旧会围绕⼩程序、超级APP、跨端开发、前端⼯程化以及新技术运用等几个方面进行展开(可以参考2019年大前端技术趋势深度解读)。小程序在⼩程序⽅⾯,今年仍然是⼩程序突⻜猛进的⼀年,各⼤主流的 App 都...

2019-12-19 10:43:40 87

转载 这一次彻底掌握深拷贝

这一次彻底掌握深拷贝写在前面在日常开发过程中,我们经常会涉及到数据的拷贝。使用时经常会困惑,到底是不是需要深拷贝,如果是深拷贝使用第三方库还是使用自己写的方法。如果使用第三方库比如lodash还好,基本上不会出错。但是如果使用的是自己写的方法,那么很容易出错,明明有些时候能够拷贝成功,为什么有些时候又不能实现拷贝成功了?这就是对深拷贝理解不深导致的。而且在日常面试过程中,面试官经常会来一句:写一个深拷贝吧。这个时候,可能面试前临时抱佛角背下了一个深拷贝,但是自己也是模棱两可讲不清楚,从而影响面试印

2020-11-27 14:20:13 5

转载 jQuery同步Ajax带来的UI线程阻塞问题及解决办法

俗话说不作死就不会死,今天作死了一回,写了一个比较二逼的函数,遇到了同步Ajax引起的UI线程阻塞问题,在此记录一下。  事情起因是这样的,因为页面上有多个相似的异步请求动作,本着提高代码可重用性的原则,我封装了一个名为getData的函数,它接收不同参数,只负责获取数据,然后把数据return。基本的逻辑剥离出来是这样的:function getData1(){ var result; $.ajax({ url : 'p.php',

2020-11-25 17:54:51 4

原创 来吧各种变态的数据处理

//题目:请用于过滤筛选出a数组中rowId,shippingId,countryId,provinceText,startTime一样的数据//解:var params = {};a.forEach((item,index)=>{ if (!params[rowId + '-' + shippingId + '-' + countryId + '-' + provinceText + '-' + startTime]) { params[rowId + '-' + s...

2020-11-20 16:25:59 6

原创 开发中的小注意

JSON.stringify可以过滤掉undefined值的属性unbind('click').click()去除jq相邻元素的点击影响

2020-11-18 10:51:50 5

原创 [法]帕斯卡:思想形成人的伟大

思想形成人的伟大。人只不过是一根苇草,是自然界最脆弱的东西;但他是一根能思想的苇草。用不着整个宇宙都拿起武器来才能毁灭,一口气、一滴水就足以致他死命了。然而,纵使宇宙毁灭了他,人却仍然要比致他于死命的东西更高贵得多;因为他知道自己要死亡,以及宇宙对他所具有的优势,而宇宙对此却是一无所知。因而,我们全部的尊严就在于思想。正是由于它而不是由于我们所无法填充的空间和时间我们才必须提高自己。因此,我们要努力好好地思想;这就是道德的原则。能思想的苇草——我应该追求自己的尊严,绝不是求之于...

2020-10-27 16:13:06 84

原创 解决iOS机型点击输入框不能聚焦的问题

解决因使用fastclick 导致的iOS 机型点击输入框不能聚焦,或者点击多次才能聚焦的问题引入 fastclick 并重写其 focus 方法 1 import FastClick from 'fastclick' 2 // 修复点击300ms延迟 3 if ('addEventListener' in document) { 4 document.addEventListener('DOMContentLoaded', () => { 5 FastClic...

2020-09-30 10:06:48 36

原创 你的url都有些啥玩意儿

2020-09-16 14:28:42 13

转载 safrai浏览器z-index无效问题解决

首先要明白一点,safrai浏览器是把z-index直接忽略了,直接忽略,忽略,不是别的,记住这个再看下面个人傻瓜式理解:谷歌,火狐等浏览器都是直接将一个盒子一个盒子理解成一块一块的,想分层就按照你的z-index高低来区分, 而safari不是,safari是将整个浏览器的页面看成一个整体,虽然也是一块一块的,但是他的分层是按照视觉感来分层的,它认为在下面的代码块总比在上面的代码块离人的眼睛近,所以就应该覆盖在上面的代码块上面,不应该用z-index来区分,而是应该用视觉来区分 这样理解可能,大

2020-09-10 15:21:14 60

原创 撸完整本书代码:(TS篇)

读过一篇博客其中讲,读再多博客文章,也不如老老实实读一本书学得完整,所以受此启发,有此下文!给自己的耐心一个nice,哈哈哈!/*Basic data type*///~~~~~~~~// let isMan:boolean = false// // console.log(isMan)//~~~~~~~~// let duckNum:number = 20// // console.log(duckNum)//~~~~~~~~// let myWord:string = ".

2020-09-08 14:30:35 119

原创 关于类class

es5://这种写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大function Person(name,age){ this.name = name this.age = age}Person.prototype.say = function(){ return '我的名字叫'+this.name+',我今年'+this.age+'岁了!'}var xiaoming = new Person('小明',26)xiaoming.say()//三:静态方法

2020-08-31 10:32:46 59

原创 一些感触颇深的句子

1.“昨天晚上洗澡的时候,我忘记拿毛巾了,喊了声妈妈帮我拿下毛巾,正当我伸出左手准备接毛巾的时候,我愣了一下,又换了右手。”希望你永远不会听懂这句话,乖,永远都不要懂。 ——《关键词》林俊杰2.父亲75岁了。一天,飞来一只乌鸦。父亲:这是啥?儿子:是乌鸦。过了一会儿,父亲又问:这是啥?儿子大吼:说了这事乌鸦,你怎么回事啊!后来有一天,儿子翻开40年前父亲的日记:今天儿子三岁了。他指着公园里的乌鸦问我:这是什么?我告诉他,是乌鸦。他又问,我又回答。他问了11次,我答了11次。3.我想娶一个平淡,看起来舒服

2020-08-11 16:13:28 627

原创 vue+webpack实现路由懒加载和代码分割

prefetch<link rel="prefetch" ></link>这段代码告诉浏览器,这段资源将会在未来某个导航或者功能要用到,但是本资源的下载顺序权重比较低。也就是说prefetch通常用于加速下一次导航,而不是本次的。被标记为prefetch的资源,将会被浏览器在空闲时间加载。preload<link rel="preload" ></link>preload通常用于本页面要用到的关键资源,包括关键js、..

2020-05-26 09:42:34 257

原创 vue.js中$set与数组更新(非要多加一些字标题不重复)

由于 JavaScript 的限制,Vue 不能检测以下变动的数组:当利用索引直接设置数组的某一项时,例如:vm.items[indexOfItem] = newValue当你修改数组的长度时,例如:vm.items.length = newLength,不会更新数组。当然vue中给了解决方法,就是使用 Vue.set, vm.$set(Vue.set的变种写法)或者 splice,caon...

2020-04-14 09:11:43 105

原创 304 Not Modified详解(非要多加一些字标题不重复)

第一次访问 200鼠标点击二次访问 (Cache)按F5刷新 304按Ctrl+F5强制刷新 200在客户端向服务端发送http请求时,若返回状态码为304 Not Modified 则表明此次请求为条件请求。在请求头中有两个请求参数:If-Modified-Since 和 If-None-Match。当客户端缓存了目标资源但不确定该缓存资源是...

2020-04-01 15:23:50 381

原创 js处理异步的几种方式(more more more)

Javascript语言的执行环境是"单线程"(single thread,就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推)。这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比...

2020-03-12 11:40:02 68

原创 vue-cli3.0中vue.config.js配置(自行整理)

// 打包去掉consoleconst TerserPlugin = require('terser-webpack-plugin');module.exports = {// 查阅https://github.com/vuejs/vue-cli/tree/dev/docs/zh/config// 项目部署的基础路径,我们默认假设你的应用将会部署在域名的根部,比如http...

2020-03-01 19:21:17 2916

原创 git常用命令大全(非要多加一些字标题不重复)

1.强制推送(慎用,除非你认为其他冲突等可以丢弃 或者不是很重要)git push -- force2.创建文件等小命令touch a // 创建一个a文件echo 1234 >> a // 把1234这个内容放入a文件cat a // 打开a文件 读取出a文件中的内容mkdir test // 创建test文件夹rm 文件名 // 删除文件pwd // 打印当前...

2020-02-18 10:30:58 83

原创 vue history模式下面后端如何配置

hash ——即地址栏URL中的#符号。hash 虽然出现URL中,但不会被包含在HTTP请求中,对后端完全没有影响,因此改变hash不会重新加载页面。history ——利用了HTML5 History Interface 中新增的pushState() 和replaceState() 方法。需要特定浏览器支持history模式,会出现404 的情况,需要后台配置。1、hash模式下,...

2020-01-02 18:04:42 1934 1

原创 async和await(非要多加一些字标题不重复)

await后面接一个会return new promise的函数并执行它 await只能放在async函数里使用async和await获取成功的结果function 摇色子(){ return new Promise((resolve, reject)=>{ let sino = parseInt(Math.random() * 6 +1) ...

2020-01-02 14:31:22 42 1

原创 REST和Restful API

定义REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格(software architecture style)。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST密切相关的两个名词:资源和状态。可以说,资源是RE...

2020-01-02 11:08:48 76

原创 关于&& 和 || 的小神奇

//或 两者都为真,返回前者//或 一真一假 返回真的//或 两者都为假 返回后者//且 两者都为真 返回后者//且 一真一假 返回假的//且 两者都为假的,返回前者1||"shi""shi"||1undefined||nullnull||undefined1&&"shi""shi"&&1undefined&&nullnu...

2019-12-19 18:03:42 23 2

转载 WebAssembly入门

前言接触WebAssembly之后,在google上看了很多资料。感觉对WebAssembly的使用、介绍、意义都说的比较模糊和笼统。感觉看了之后收获没有达到预期,要么是文章中的例子自己去实操不能成功,要么就是不知所云、一脸蒙蔽。本着业务催生技术的态度,这边文章就诞生了。前部分主要是对WebAssembly的背景做一些介绍,WebAssembly是怎么出现的,优势在哪儿。如果想直接开始撸代码试...

2019-12-19 16:42:39 143

转载 Git常用命令总结

git config  git config命令的作用是配置git的相关信息。配置全局的用户名和邮箱,mac下可通过终端输入命令cat ~/.gitconfig查看配置信息。 设置用户名:git config --global user.name "name" 设置用户邮箱:git config --global user.email "eamil" 针对单个仓库配置用...

2019-12-03 14:28:32 24

原创 好用的数组树状图

2019-11-21 12:00:48 55

原创 炫技,从 12.67s 到 1.06s 的网站性能优化实战

本文是对之前同名文章的修正,将所有webpack3的内容更新为webpack4,以及加入了笔者近期在公司工作中学习到的自动化思想,对文章内容作了进一步提升。0.引言作为互联网项目,最重要的便是用户体验。在举国“互联网+”的热潮中,用户至上也已经被大多数企业所接收,特别是在如今移动端快速发展的时代,我们的网页不仅只是呈现在用户的PC浏览器里,更多的时候,用户是通过移动产品浏览我们的网页...

2019-11-18 17:12:57 36

原创 2019 年大前端技术趋势分析

做个技术总结,将各类技术框架 / 语言 / 工具分作两个维度:技术采用生命周期 创新者(Innovators):技术的冒险者,第一时间尝试新技术。 早期采用者(Early Adopters):技术早期采用者,具备一定探索精神,某个领域的意见领袖。 早期大众(early majority):技术早期大众使用者,深思熟虑者,往往采用相对成熟的技术。 晚期大众(l...

2019-11-11 12:04:58 220

原创 Node.js 中的依赖管理

nodejs 的成功原因除了它采用了前端 js 相同的语法,直接吸引了一大波前端开发者作为初始用户之外,它内置的包管理器 npm 也居功至伟。npm 能够很好的管理 nodejs 项目的依赖,也使得开发者发布自己的包变的异常容易。这样一来,不论你使用别人的包,还是自己发布包给别人使用,成本都不大。这和我大学学习的 Java 1.x 相比就轻松愉快的多(现在 Java 已今非昔比,我不敢...

2019-11-08 16:35:23 95

原创 富文本转义和反转义

<center><h1>${blog.title}</h1></center><hr/><div id="${blog.blogId}_content"></div> <script type="text/javascript"> function HTMLEncode(h...

2019-10-24 17:12:53 662

转载 那些需要用但会影响加载速度的script脚本处理:async,defer

script标签用于加载脚本与执行脚本,在前端开发中可以说是非常重要的标签了。直接使用script脚本的话,html会按照顺序来加载并执行脚本,在脚本加载&执行的过程中,会阻塞后续的DOM渲染。现在大家习惯于在页面中引用各种的第三方脚本,如果第三方服务商出现了一些小问题,比如延迟之类的,就会使得页面白屏。好在script提供了两种方式来解决上述问题,async和defer,这两...

2019-10-17 11:20:33 70

原创 javaScript的事件循环机制

Js - 单线程的语言,所以它本身不可能是异步的,但js的宿主环境(比如浏览器,Node)是多线程的,宿主环境通过某种方式(事件驱动,)使得js具备了异步的属性任务队列:所有的任务可以分为两种,一种是同步任务(synchronous),另外一种是异步任务(asynchronous)。同步任务指的是,在主线程上,排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异...

2019-10-09 10:41:25 49

原创 Javascript MS题蓄力:

1. 下面代码的输出是什么?functionsayHi(){console.log(name);console.log(age);varname="Lydia";letage=21;}sayHi();A:Lydia和undefined B:Lydia和ReferenceError C:ReferenceError和21 D...

2019-10-08 15:37:31 227

原创 JavaScript:对象,函数,原型和 this

1.对象在javascript里,一切都是对象,包括函数自身(不是指具体的函数,而是指"Function"这个东东)。例如:var fun1=new Function("num1","num2","alert(num1+num2)");这时,fun1是一个函数的"实例",或者说函数对象,所以当然是一个对象。fun1.__proto__指向Function.prototype...

2019-09-03 11:27:28 44

原创 vue 蓄力13:Vue批量异步更新与nextTick原理(待阅)

vue已是目前国内前端web端三分天下之一,同时也作为本人主要技术栈之一,在日常使用中知其然也好奇着所以然,另外最近的社区涌现了一大票vue源码阅读类的文章,在下借这个机会从大家的文章和讨论中汲取了一些营养,同时对一些阅读源码时的想法进行总结,出产一些文章,作为自己思考的总结,本人水平有限,欢迎留言讨论~目标Vue版本:2.5.17-beta.0vue源码注释:https://git...

2019-09-02 15:58:31 64

原创 vue 蓄力12:vue-cli webpack项目npm run dev启动过程

前言通过vue init webpack和npm install命令初始化项目后,执行npm run dev就打开了网站http://localhost:8080。初学者不知道index.html、App.vue、main.js是如何粘在一起的,这里简单说明一下。启动过程1.npm run devnpm run XXX是执行配置在package.json中的脚本,比如:...

2019-09-02 15:49:30 53

原创 vue蓄力11:vue 项目常用加载器及配置

vue 项目常用加载器及配置1.安装sass:1.1 由于sass-loader依赖于node-sass,所以在安装sass-loader的同时还需安装node-sassnpm install --save-dev node-sassnpm install --save-dev sass-loader1.2 安装完成后修改 <style>标签: &lt...

2019-09-02 15:45:48 45

原创 vue 蓄力10:vue组件中的data为什么必须是函数

类比引用数据类型Object是引用数据类型,如果不用function 返回,每个组件的data 都是内存的同一个地址,一个数据改变了其他也改变了;javascipt只有函数构成作用域(注意理解作用域,只有函数的{}构成作用域,对象的{}以及if(){}都不构成作用域),data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响举个

2019-09-02 15:31:30 33

原创 vue蓄力9:vuex 数据状态管理,刷新数据不丢失

安装 vuexnpm install vuex --save1安装成功后 ,现在我们就可以使用 vuex 了1: 先在src 目录下建立 store 文件夹 , 文件目录如图:这里我先介绍下 每个文件的用处:1 : index.js 这里是个入口文件import Vue from 'vue'import Vuex from 'vuex'import * a...

2019-09-02 15:22:20 85

原创 vue蓄力8:vue 的keep-alive缓存功能的实现

Vue 实现组件信息的缓存当我们在开发vue的项目过程中,避免不了在路由切换到其他的component再返回后该组件数据会重新加载,处理这种情况我们就需要用到keep-alive来缓存vue的组件信息,使其不再重新加载。一、在app.vue里 1 2 3 <keep-alive> <router...

2019-08-30 17:46:12 36

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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