综合
文章平均质量分 54
scorpio_h
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
高性能JavaScript学习笔记(6)--构建并部署高性能js应用
1、合并js文件减少http请求数2、使用YUI Compressor等压缩工具压缩js文件。3、在服务器端压缩js文件(Gzip编码)。4、通过http响应头来缓存js文件。5、使用CDN。...原创 2018-04-17 11:02:40 · 178 阅读 · 0 评论 -
高性能JavaScript学习笔记(5)--编程实践
1、eval()效率很低,因为每次调用都要创建一个新的解释器/编译器实例。2、setTimeout()和setInterval()建议传入函数而不是字符串来作为第一参数。 例如: setTimeout(function(){ sum = sum1 + sum2 })3、“避免无谓的工作”4、懒加载、预加载5、位运算性能优势明显。 例如下面的按位与比上面快百分50%...原创 2018-04-17 10:34:38 · 158 阅读 · 0 评论 -
高性能JavaScript学习笔记(4)--Ajax
1、减少请求数,通过合并js和css文件,或者使用MXHR。2、缩短页面加载时间,页面主要内容加载完,再用ajax加载次要文件。3、别让错误代码输出给用户。...原创 2018-04-17 09:48:49 · 211 阅读 · 0 评论 -
高性能JavaScript学习笔记(3)--快速响应的用户界面
1、任何js任务都不应当执行超过100毫秒,过长的运行时间会导致UI更新出现明显延时,影响用户体验。2、定时器时间表示何时添加到UI队列,而不是一定会在这段时间后执行;该任务会等待队列中其他所有任务执行完毕后才会执行。3、定时器可以用来安排代码延迟执行,把长时间任务分解成一系列小任务。4、web Works是新版浏览器支持的特性,允许在UI线程外执行js代码,避免锁定UI。...原创 2018-04-16 16:26:21 · 193 阅读 · 0 评论 -
高性能JavaScript学习笔记(2)--算法和流程控制
1、for-in循环比其他几种循环明显要慢,不要用for-in循环遍历数组成员。2、最小化属性查找,以下方法只需要查找一次items的length属性 for(let i=0,len=items.length; i<len; i++) { dosomthing() } 倒序可略微提高性能(前提是不影响业务流程): for(let...原创 2018-04-16 14:17:33 · 195 阅读 · 0 评论 -
高性能JavaScript学习笔记(1)--加载执行、数据存取、DOM编程
1、</body>标签闭合前,将所有的<script>标签放在页底,保证执行前页面已经完成渲染,合并脚本<script>标签越少越好。2、访问字面量和局部变量的速度要比访问数组和对象快。3、嵌套对象成员(链式操作)会影响性能。属性和方法在原型链中位置越深速度越慢。4、尽量减少操作DOM次数。留意重绘和重排,合理使用绝对定位和事件委托,使用更快API,例如quer...原创 2018-04-16 11:17:32 · 196 阅读 · 0 评论 -
关于web复制组件 Clipboard(vue框架下)
组件常用于web页的内容复制业务,原理是复制进剪切板内,使web页面上的内容能复制至web以外的软件上1、安装组件npm install clipboard --save2、加载组件import Clipboard from 'clipboard'3、编写复制事件(.copybtn为绑定该事件按钮的类名)copy() { let clipboard = new Clipboard('.copy...原创 2018-03-30 09:27:36 · 1950 阅读 · 0 评论 -
vue内i18n 的用法
i18n是一个制作国际化项目的好用的组件1、安装组件npm install vue-i18n --save2、再main.js里进行配置import VueI18n from 'vue-i18n'const i18n = new VueI18n({ messages: { 'zh-CN': require('./common/lang/zh'), 'en-US': requir...原创 2018-03-01 14:23:20 · 2084 阅读 · 0 评论 -
利用解构赋值快速提取JSON的值
let jsonData = { id: 42, status: "OK", data: [323, 333]}let { id, status, data: number} = jsonDataconsole.log(id, status, number)// 42, "OK", [323, 333]原创 2018-04-18 10:53:03 · 3032 阅读 · 0 评论 -
提升页面性能的方法有哪些?
1、资源压缩合并,减少HTTP请求2、非核心代码异步加载(1)异步加载的方式动态脚本加载(document创建一个script标签加在body或者head上) defer async(2)异步加载的区别defer是在HTML解析完之后才会执行,如果是多个,按照加载的顺序依次执行 async是加载完之后立即执行,如果是多个,执行顺序和加载顺序无关3、利用浏览器缓存-->...原创 2019-07-08 22:32:50 · 955 阅读 · 0 评论 -
浏览器的渲染机制简介
什么时候DOCTYPE及作用DTD(document type definition,文档类型定义)是一系列的语法规则,用来定义XML或(X)HTML的文件类型。浏览器会使用它来判断文档类型,决定使用何种协议来解析,以及切换浏览器模式。DOCTYPE是用来声明文档类型和DTD规范的,一个主要的用途是文件的合法性验证。如果文件代码不合法,那么浏览器解析时便会出一些差错。HTML5&...原创 2019-07-08 21:27:52 · 271 阅读 · 0 评论 -
iconfont在项目中的使用方式
iconfont是一个阿里的图标库1、地址: https://www.iconfont.cn2、注册登录后选择‘我的项目’,并创建我的项目3、选择需要的图标并加入购物车,选择购物车把购物车内的图标加入项目文件夹中4、点击下载至本地,会获得如下文件夹和文件。5、下面这一排文件有用,上面3个没有用。6、在项目中新建一个iconfont文件夹,将下面这6个文件放入...原创 2019-02-03 21:56:24 · 2368 阅读 · 0 评论 -
javaScript基础--函数中this的指向问题
关键:当前函数的this是在函数被调用执行时才确定的。注意:在非严格模式中,当this只向undefined时,它会自动只想全局对象。function fn() { 'use strict' console.log(this)}fn() // fn是调用者,独立调用,this为undefinedwindow.fn() // fn是调用者,被window所拥有,th...原创 2019-01-13 16:04:37 · 251 阅读 · 0 评论 -
使用Charles模拟接口请求数据的简单操作步骤
1、下载地址:https://www.charlesproxy.com2、先新建一个JSON文件,取名 list.json,输入一个简单的测试数组[ "hello", "dell", "lee"]3、打开Charles,点击图示所在位置,Tools - Map Local4、输入以下测试url5、随便点击一处,他会自动转化为如下形式6...原创 2019-01-06 11:42:51 · 7272 阅读 · 0 评论 -
数字卡号化(补0和加空格)
fixInteger (num, length) { let res = (Array(length).join('0') + num).slice(-length) // 补0 res = res.replace(/(\s)/g, '').replace(/(\d{3})/g, '$1 ').replace(/\s*$/, '') // 每三位空格一次 re...原创 2018-11-01 11:32:19 · 400 阅读 · 0 评论 -
i18n 语言码和对应的语言库
语言码语言名称afAfrikaansamAmharicarArabicazAzerbaijanibeBelarusianbgBulgarianbhBiharibnBengalibrBretonbsBosniancaCatalancoCorsicancs捷克语cy威尔士语daDanishdeGermande-ATGerman (Austria)de-CHGerman (Switzerland)de-...转载 2018-02-27 14:38:34 · 2859 阅读 · 0 评论 -
数组中两个元素交换位置
arr[oneIndex] = [arr[twoIndex], arr[twoIndex] = arr[oneIndex]][0]更简单的:let x = 1let y = 2[x, y] = [y, x]原创 2018-02-09 14:48:35 · 16095 阅读 · 0 评论 -
mockjs在vue内使用心得
1、 加载模块npm install mockjs2、新建一个mock文件,设置好拦截信息import Mock from 'mockjs';export default Mock.mock('msg', { 'name' : '@name', 'age|1-100': 100, 'color' : '@color'});@name 是随机生成原创 2017-07-11 09:25:51 · 4648 阅读 · 0 评论 -
vue 聊天页面实现滚动条实时滚动至最底部
1、有聊天记录显示再页面会引起dom数变化,此时使用 nextTick()2、获取新插入进来的dom var container = this.$el.querySelector("#chatContainer>li:last-child");3、滚动到该位置container.scrollIntoView();原创 2017-06-21 14:53:25 · 4060 阅读 · 0 评论 -
取出一个数组的最大值
var arr=[1,1,1,1,1,1,2,5];console.log(Math.max.apply(null, arr))嗯。。就是这样。。原创 2017-06-02 17:20:13 · 1262 阅读 · 0 评论 -
git的一些用法命令
在github windows工具中使用Git Bash打开项目,使用cd命令进入已有项目根目录下touch README.md //新建说明文件git init //在当前项目目录中生成本地git管理,并建立一个隐藏.git目录git add . //添加当前目录中的所有文件到索引git commit -m "first commit" //提交到本地源码库,并附加提交注释g原创 2017-05-18 14:18:06 · 281 阅读 · 0 评论 -
VScode常用快捷键
vscode: Visual Studio Code 常用快捷键 主命令框F1 或 Ctrl+Shift+P: 打开命令面板。在打开的输入框内,可以输入任何命令,例如:按一下 Backspace 会进入到 Ctrl+P 模式在 Ctrl+P 下输入 > 可以进入 Ctrl+Shift+P 模式在 Ctrl+P 窗口下还可以:直接输入文件名,跳转到文件?转载 2017-04-20 09:57:52 · 591 阅读 · 0 评论 -
base64图片字符串转图片
base64图片字符串转图片需加一个头 data:image/png;base64,原创 2017-04-06 15:13:00 · 661 阅读 · 0 评论 -
手机端切图转静态页工具文档
/* eslint-disable */!function (window) { /* 设计图文档宽度 */ var docWidth = 750 var doc = window.document, docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientat原创 2017-04-18 17:28:51 · 567 阅读 · 0 评论 -
js获取地址栏参数,分离并保存为对象
1、已封装好的获取地址栏参数的方法getParamsFromURL(url) { if ('undefined' == url) { return {}; } let paraString = url.substring(url.indexOf("?") + 1, url.length).split("&"); let paraObj = ...原创 2017-06-12 15:11:41 · 1616 阅读 · 0 评论 -
组合计算方法
// 组合算法结果function combinationResults(a, m) { let r = [] if (m a.length) { return r } for (let i = 0; i < a.length; i++) { let t = [] t.push(a[i]) if (m === 1) { r.push(原创 2018-01-18 15:56:04 · 1696 阅读 · 0 评论 -
数组的深拷贝
因为数组是引用类型,有时候需要复制数组不得不切断他得引用 let arr = JSON.parse(JSON.stringify(oldArr))上面方法虽可实现,看似比较low,但是很实用,还可以使用下面这个方法,但是这个方法在数组上效果不如在对象上好,不算是深拷贝 let arr = Object.assign([], oldArr)最后,ES6的新方法let ...原创 2017-11-22 14:25:03 · 432 阅读 · 0 评论 -
去除对象内的空键值对
for (const key in data) { // 去除对象内多余的空值key if (.data[key] === '') { delete data[key] } } 可加入ajax拦截器中原创 2017-11-20 11:41:55 · 8738 阅读 · 0 评论 -
封装日期时间自定义格式方法
export function parseTime(time, cFormat) { if (arguments.length === 0) { return null } const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' let date if (typeof time === 'object') {原创 2017-11-03 14:02:13 · 592 阅读 · 0 评论 -
常用正则
验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 验证非零的正整数:^\+?[1-9]转载 2017-09-11 09:32:45 · 210 阅读 · 0 评论 -
npm修改淘宝源
因为大家懂的缘故,所以平时用npm下载东西真的是慢到不行。。。npm直接改源和cnpm是不一样的npm config set registry https://registry.npm.taobao.org/检查是否修改成功npm config get registry原创 2017-09-27 10:26:46 · 2839 阅读 · 0 评论 -
手机web端页面加载时自动播放背景音乐
在pc端上直接在body里写个video就可以了,很简单但是移动端不一样,移动端禁用所有的自动播放音乐,必须手动触发,但是我们可以巧妙绕过这个设定1、在html上新建个容器,其实不要也可以,我只是喜欢规范点2、用js加载页面时把video元素append进去就行了,我还额外做了一个浏览器每次打开只会播放一次的功能,不然每次用户选择该页面都会播放用户难免烦躁原创 2017-06-14 16:55:51 · 16155 阅读 · 2 评论 -
手写横向文字滚动
1、html 文章标题1文章标题2文章标题3文章标题4文章标 feawfaw efaw feawfawe faw ef原创 2017-06-14 16:49:19 · 554 阅读 · 1 评论 -
前端错误监控了解
前端错误的分类即时运行错误:代码错误 资源加载错误错误的捕获方式即时错误的捕获方式try..catch window.onerror资源加载错误1、object.onerror2、performance.getEntries()// 在浏览器Console输入如下代码,可查看加载的资源performance.getEntries().forEach(ite...原创 2019-07-09 21:49:47 · 241 阅读 · 0 评论
分享