更多文章请戳VSCode插件开发全攻略系列目录导航。 前言在介绍完一些比较简单的内容点之后,我觉得有必要先和大家介绍一些开发中遇到的一些细节问题以及技巧,特别是后面一章节将要介绍WebView的知识,这个坑会比较多,避免大家走弯路。 开发方式最理想的方式是准备双显示器,一个写代码,一个运行插件,实践证明这种方式开发效率会提升很多,每次修改完代码之后直接Ctrl+R重新加载即可,非常方便。 日... 阅读全文
更多文章请戳VSCode插件开发全攻略系列目录导航。 前言在介绍完一些比较简单的内容点之后,我觉得有必要先和大家介绍一些开发中遇到的一些细节问题以及技巧,特别是后面一章节将要介绍WebView的知识,这个坑会比较多,避免大家走弯路。 开发方式最理想的方式是准备双显示器,一个写代码,一个运行插件,实践证明这种方式开发效率会提升很多,每次修改完代码之后直接Ctrl+R重新加载即可,非常方便。 日... 阅读全文
更多文章请戳VSCode插件开发全攻略系列目录导航。 跳转到定义跳转到定义其实很简单,通过vscode.languages.registerDefinitionProvider注册一个provider,这个provider如果返回了new vscode.Location()就表示当前光标所在单词支持跳转,并且跳转到对应location。 为了示例更加有意义,我在这里写了一个支持package.... 阅读全文
更多文章请戳VSCode插件开发全攻略系列目录导航。 命令我们在前面HelloWord章节中已经提到了命令写法,这里再重温一下。 context.subscriptions.push(vscode.commands.registerCommand('extension.sayHello', () => { vscode.window.showInformationMessage('... 阅读全文
更多文章请戳VSCode插件开发全攻略系列目录导航。 package.json在详细介绍vscode插件开发细节之前,这里我们先详细介绍一下vscode插件的package.json写法,但是建议先只需要随便看一下,了解个大概,等后面讲到具体细节的时候再回过头来看。 如下是package.json文件的常用配置,当然这里还不是全部: { // 插件的名字,应全部小写,不能有空格 ... 阅读全文
更多文章请戳VSCode插件开发全攻略系列目录导航。 写着前面学习一门新的语言或者生态首先肯定是从HelloWord开始。 您可以直接克隆我放在GitHub上vscode-plugin-demo 的代码到本地,然后尝试修改代码并运行,也可以使用微软官方的脚手架vscode-generator-code来生成项目结构,脚手架的使用我们后面再来介绍,先来熟悉一下项目结构。 HelloWorld项... 阅读全文
常规方法清除浏览器DNS缓存地址栏中输入: chrome://net-internals/#dns ,然后点Clear host cache按钮。 清除套接字缓存在地址栏中输入: chrome://net-internals/#sockets ,然后点Clear idle sockets按钮和Flush socket pools按钮。 清除操作系统DNS缓存按Win+R系统热键打开运行窗... 阅读全文
js-xlsx 介绍由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。本文全部都是以xlsx格式为例。 官方github:https://github.com/SheetJS/js-xlsx本文配套demo在线演示地址:http://dem... 阅读全文
概述常见排序算法: 傻瓜排序(选择排序)这个傻瓜排序是我自己给起的名字,就是按照人的常规思维进行排序,不考虑任何时间复杂度和空间复杂度。话说如果给你一个数组让你手工排序,你的思路会是什么样的呢?我想你肯定是这样的: 整体用肉眼扫描一遍,找到最小的,插入结果里面,然后再扫描剩下的数字,找到最小的,再次插入结果里面,直至原始数组变空,是的,没错,这里说的傻瓜排序就是这个思路。 后来发... 阅读全文
兼容性较好的3种方法方法一:float+overflow实现:左边浮动+固定宽度,右边overflow:hidden即可,注意,右边不要设置width:100%。由于设置overflow:hidden并不会触发IE6-浏览器的haslayout属性,所以若要兼容IE6需要设置zoom:1。 原理:overflow:hidden会触发BFC,BFC不会浮动元素重叠,因此会重新计算宽度。 <... 阅读全文
前言所有人都知道,localStorage和sessionStorage的最大区别是生命周期,一个永久,一个仅针对一个会话期间有效。那么,到底什么是一个会话?多个标签页之间的数据是否会共享呢? 后台的session我们对会话session的认识一般都是从后台的session开始的,比如Java的session,它是基于往cookie写入一个JSESSIONID来实现的,所以,只要你不是打开一个隐... 阅读全文
老生常谈的问题,虽然有些不太常用,但还是总结一下。 图片法这种方法利用了图片没有跨域限制的特点,仅适用于不需要获取服务端响应的场景,如日志统计等,且只能以GET方式请求,一般很少用。 var img = new Image();img.src = 'http://other.domain.com/log.png'; JSONPXmlHttpRequest有跨域限制,但是script标签没有,... 阅读全文
正文网上很多写法都有点问题或者难以理解,下面这一张图说明所有问题: 补充说明: defer 和 async 在下载这块儿是一样的,相较于HTML解析都是异步的;它俩的差别在于脚本下载完之后何时执行,async什么时候下载完什么时候执行,并且会中断HTML解析,defer则在HTML解析完成之后,DOMContentLoaded 事件触发之前执行。async只能用于对其它JS没有任何依赖... 阅读全文
本文demo:http://demo.haoji.me/2018/04/28-webworker/ JS是单线程语言由于JS设计的初衷就是用来进行一些简单的用户交互以及DOM操作,为了避免复杂性,从一开始JS就被设计成一门单线程语言,现在如是,以后也不会变。 然后正是由于单线程的缘故,当我们需要在前端运行一些大运算量的代码时,浏览器肯定会陷入卡顿。为了解决前端大运算量问题,HTML5引入了We... 阅读全文
背景前阵子突然发现博客的目录导航只要一滚动就会消失,其中有一段这样的代码: $(window).on('scroll', function(e){ var top = document.body.scrollTop; if(top <= 100) $('.markdown-nav-wrapper').addClass('hide'); else if(localStora... 阅读全文
前言作为一个前端程序员,难免会有一些专属自己的小扩展,没必要每一个都发到Chrome应用商店去,虽然可以勾选“开发者模式”来运行本地插件,但是每次启动都会有一个烦人的“请停用以开发者模式运行的扩展程序”提示,这个提示有多烦人,接触过的人都知道,启动的时候它不立即提示,等过了几秒钟等你打开某个网页开始执行某些操作时它突然弹出来干扰你的操作,真是苦不堪言!所以总想着如何把它给去掉。 解决方法网上... 阅读全文
背景早上到公司发现个人网站打不开,一直在转,用xshell连接服务器,虽然能连上,但是卡到爆,处于完全无法操作的状态,登录阿里云后台发现CPU使用率持续超过45%: 可怜的1M带宽也被全部占用(也就是截图中的1122kbps): 想查看是哪个进程占用这么大的CPU和带宽,但是带宽被未知程序占用,xshell完全连不上,怎么破!最后只能强制重启服务器,重启之后CPU和带宽立马恢复正常,网... 阅读全文
前言曾经对这一块不知道多熟悉,一年多没接触移动端开发,竟然连远程调试怎么打开都不记得了,所以看来啊,任何东西无论多简单都要做笔记,这是这的! 下面开始其实真的非常简单! 第一步,开启USB调试模式这个就不用细说了,是个人都知道怎么开启。 第二步,连接手机和电脑连上基本就不用管了,驱动都不用装,这个后面再细说。 第三步,手机使用Chrome访问任一网站也可以不使用Chrome,但是使用Chr... 阅读全文
正文直接上代码: var obj = {a:1, b:2};console.log(obj);obj.b = 3;console.log(obj) 效果如下: 收起时显示的还是旧的值,展开时才是新的,最近就因为这个问题坑了我半天,后来才发现代码没问题,是Chrome控制台显示问题。水文一篇,记录下来! ... 阅读全文
正文如下代码: <form> <input type="number" name="test"/> <input type="submit" value="提交"/></form> 输入时可以正常输入数字和小数点,但是提交的时候浏览器会拦截,不允许输入小数: 修改如下即可,step表示允许的小数位个数,比如2位小数用0.01,3... 阅读全文
本文有待完善,参考:https://www.zhihu.com/question/20756479 https://zh.wikihow.com/%E8%AE%A1%E7%AE%97%E5%9C%86%E5%91%A8%E7%8E%87-Pi 先看代码4行代码实现计算圆周率: var pai = 0, flag = false;for(var i=1; i<10000000; i+=2... 阅读全文