前端精进
文章平均质量分 66
做前端开发多年,项目中,学习中总结的一些文章
xiaobangsky
茶飘香,酒罢去,聚朋友,再回楼!
展开
-
通过iframe下载文件,怎么判断文件是否下载成功?
iframe 下载文件 判断成功或者失败原创 2024-03-08 09:05:29 · 689 阅读 · 0 评论 -
JavaScript实现图片截图
js 图片截图原创 2024-03-05 09:25:45 · 420 阅读 · 0 评论 -
Nodejs 获取系统信息
nodejs 获取系统信息原创 2023-03-06 16:41:59 · 1549 阅读 · 0 评论 -
腾讯云面试总结
手写深拷贝?递归、判断类型、检查环(也叫循环引用)、需要忽略原型//用JSON方式实现: 使用JSON.stringify()以及JSON.parse()//它是不可以拷贝 undefined , function, RegExp 等等类型的var obj = { a:1, b:2, c:3}var objString = JSON.stringify(obj);var object = JSON.parse(objString);//Object.assign(targ原创 2021-03-06 08:20:06 · 2567 阅读 · 2 评论 -
前端面试错题总结
请简单介绍一下浏览器的渲染过程浏览器内核:渲染引擎(Firefox 中叫做 Gecko\Chrome 和 Safari 中都是基于 WebKit 开发)、JS引擎浏览器工作大体流程:构建DOM树:浏览器接收到一段HTML,识别Token,构建节点并生成DOM(字节数据=>字符串=>Token=>Node=>DOM)构建CSSDOM树:浏览器接收到一段CSS,识别Token,构建节点并生成CSSDOM(字节数据=>字符串=>Token=>Node原创 2021-03-06 08:16:49 · 145 阅读 · 0 评论 -
谈谈Vue中的虚拟dom
Virtual DOM 是什么?Virtual DOM 是一棵以 JavaScript 对象( VNode 节点)作为基础的树,用对象属性来描述节点,它是一层对真实 DOM 的抽象。最终可以通过一系列操作使这棵树映射到真实环境上。模板 →(compile)→ 渲染函数 →(render) → 虚拟DOM树 →(create)→ 真实DOM的一个过程Virtual DOM 作用是什么?虚拟DOM的最终目标是将虚拟节点渲染到视图上虚拟DOM在Vue.js主要做了两件事提供与真实DOM节原创 2021-04-29 09:51:32 · 160 阅读 · 0 评论 -
RESTful API
什么是RESTful APIrestful是一套编写接口的协议,协议规定如何编写以及如何设置返回值、状态码等信息特点:restful:给用户一个url,根据method不同在后端做不同的处理,比如:post 创建数据、get获取数据、put和patch修改数据、delete删除数据no rest: 给调用者很多url,每个url代表一个功能,比如:add_user/delte_user/edit_user/版本,来控制让程序有多个版本共存的情况,版本可以放在 url、请求头(acc原创 2021-04-28 21:07:31 · 270 阅读 · 0 评论 -
Webpack的热更新
Webpack的热更新 概念基本思路修改webpack.config.js的entry配置监听webpack编译结束webpack监听文件变化浏览器接收到热更新的通知HotModuleReplacementPluginmoudle.hot.check 开始热更新hotApply 热更新模块替换概念Hot Module Replacement,简称HMR,无需完全刷新整个页面的同时,更新模块。HMR的好处,在日常开发工作中体会颇深:节省宝贵的开发时间、提升开发体验HMR作为一个Webpack内置的功能原创 2021-04-28 20:24:08 · 197 阅读 · 0 评论 -
Vue一些原理总结
Vue响应式原理vue.js 采用数据劫持结合发布-订阅模式,通过 Object.defineproperty 来劫持各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发响应的监听回调原理图分析核心实现类Observer:给对象的属性添加 getter 和 setter,用于依赖收集和派发更新Dep:收集当前响应式对象的依赖关系,每个响应式对象包括子对象都拥有一个 Dep 实例(里面 subs 是 Watcher 实例数组),当数据有变更时,会通过 dep.notif转载 2021-04-20 15:15:32 · 459 阅读 · 0 评论 -
Vue源码浅析
Vue源码浅析Vue.js 源码Vue.js 源码构建构建脚本构建过程Runtime Only VS Runtime + Compiler总结Vue源码入口Vue 的入口Vue 的定义`initGlobalAPI`总结Vue.js 源码Vue.js 的源码都在 src 目录下,其目录结构如下。src├── compiler # 编译相关 ├── core # 核心代码 ├── platforms # 不同平台的支持├── server原创 2021-04-19 11:11:12 · 191 阅读 · 0 评论 -
Vue技术分析
图片解析FLOW介绍Flow 是 facebook 出品的 JavaScript 静态类型检查工具。Vue.js 的源码利用了 Flow 做了静态类型检查,所以了解 Flow 有助于我们阅读源码。FLOW的作用JavaScript是一门动态类型语言,很灵活,容易写出有隐患的代码,在编译期能够编译通过,在运行期间出现BUG类型检查,就是在编译期尽早发现(由类型错误引起的)bug,又不影响代码运行(不需要运行时动态检查类型),使编写 JavaScript 具有和编写 Java 等强类型语言相近原创 2021-04-19 10:38:15 · 938 阅读 · 2 评论 -
Vue的一些笔记
Vue的一些笔记Vue是MVVM框架Vue2.x响应式数据原理Vue3.x响应式数据原理Vue2.x中如何监测数组变化nextTick的实现原理Vue的生命周期请求接口放在生命周期的位置v-model的原理Vue事件绑定原理Vue模板编译原理Vue2.x和Vue3.x渲染器的diff算法比较虚拟DOM以及key属性的作用keep-aliveVue中组件生命周期调用顺序SSRVue方面的性能优化Vue是MVVM框架MVVM:Model-View-ViewModel缩写Model:代表数据模型View原创 2021-03-30 14:46:34 · 150 阅读 · 0 评论 -
Express API总结
Express API总结express.xxx的api(总共7个)app.xxx(总共22个)request.xxx(总共28个)response.xxx(总共24个)router.xxx(总共5个)API总结express.xxx的api(总共7个)express():express模块导出的顶级函数var express = require('express')var app = express()express.json()express.static():它提供静态文件,并基于原创 2021-03-30 11:05:14 · 432 阅读 · 0 评论 -
bind的思考以及实现
这里写目录标题思考进阶思考代码实现测试案例思考需要理解bind是位于Function.prototype上的polyfill:polyfill 在英文中有垫片的意思,意为兜底的东西。在计算机科学中,指的是对未能实现的客户端上进行的"兜底"操作。打补丁在前端er是件习以为常的事情,结合笔者日常工作经验,总结出3种打补丁方式手动打补丁:在石器时代,我们是手动导入所需的补丁,以 ES6 的 object#assign 为例 ,即使在 IE 11上,仍会报错。所以我们需要打上相应的补丁。可以用第三方成原创 2021-03-13 11:56:05 · 170 阅读 · 0 评论 -
关于深克隆的思考
关于深克隆的思考深克隆需要考虑的问题JSON实现克隆方式比较满意的克隆深克隆需要考虑的问题需要支持7种基本数据类型:number\string\boolean\symbol\null\undefined\ObjectJSON 克隆不支持函数、引用、undefined、Date、RegExp 等递归克隆要考虑环、爆栈要考虑 Date、RegExp、Function 等特殊对象的克隆方式要不要克隆 proto,如果要克隆,就非常浪费内存;如果不克隆,就不是深克隆JSON实现克隆方式var o原创 2021-03-12 23:40:11 · 93 阅读 · 0 评论 -
谈谈eventHub以及代码实现
谈谈eventHub以及代码实现谈谈eventHub代码示例谈谈eventHubeventHub能够实现组件之间的通信eventHub包含了发布/订阅的设计模式图例分析:代码示例//src/index.tsclass EventHub { //cache用来保存发布的函数 // eventName1:[fn1,fn2,fn3]; // eventName2:[fn2,fn3,fn3]; private cache: {[key:string]: Array<(unk原创 2021-03-12 11:59:14 · 581 阅读 · 0 评论 -
Express.js简单入门
Express.js简单入门介绍Web应用API性能如何创建一个项目express的编程模型express的中间件路由错误处理代码示例介绍Web应用Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用API丰富的HTTP工具以及来自Connect框架的中间件随取随用,创建强健、友好的API变得快速又简单性能Express 不对 node.js 已有的特性进行二次抽象,我们只是在它之上扩展了Web应用所需的功能如何创建一个项目创建原创 2021-02-02 12:27:55 · 3348 阅读 · 0 评论 -
2020前端技术分析
关键词TypeScript:可以理解为JS的升级版本,可以参看链接WebAssembly:链接Dart: 链接Flutter:Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。链接React Native:链接Serverless:链接Docker:链接Hooks:链接WebGL:链接Visualize原创 2021-01-24 18:10:57 · 408 阅读 · 0 评论 -
jquery自创弹框插件
前面在看Jquery方面的书籍时,看到了一章名叫如何利用jqer原创 2014-10-13 15:17:42 · 689 阅读 · 0 评论 -
常用jquery方法 总结
非常全的jQuery常用技巧总结1、关于页面元素的引用通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。2、jQuery对象与dom对象的转换只有jquery对象才能使用jquery定义的方法。注意dom对象和jquery对象是转载 2014-06-19 09:40:55 · 1249 阅读 · 0 评论 -
jquery插件开发
一.介绍 插件编写的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,方便后期维护。 JQuery除了提供一个简单、有效的方式进行管理元素以及脚本,它还还提供了例外一种机制:即给核心模块增加自己的方法和额外的功能。通过这种机制,Jquery允许我们自己创建属于我们自己的插件,提高我们在开发过程中的效率。 1.1JQuery的插件分为3中类型: (1)封装对象方转载 2014-06-19 09:31:23 · 467 阅读 · 0 评论 -
Web开发者必知的12款jQuery插件
jQuery插件能够增强网站的可用性,有效地改善用户体验,还可以大大减少创建一个新站点的开发时间。现在的jQuery插件很多,尽可以根据您的项目要求来选择,不过也有一些插件很好用,几乎各种项目都能够用得上。这里就为您介绍12款开发中最常用的jQuery插件。1. jQuery BBCode EditorBbcode简单易用,它是BBS、论坛、Blog等网络应用上的一种常用输转载 2014-06-19 09:30:17 · 429 阅读 · 0 评论 -
javascrpit中的slice()方法和splice()方法
1.slice()可提取字符串的某个部分,并以新字符串返回被提取的部分形如slice(start,[end]);start 必需项 开始位置end 可选项 结束位置(1) end 没赋值 [1] start > -str.length || start = 0 返回整个字符串;[2] -str.length [3]str.length> start > 0 从左原创 2015-09-09 17:22:02 · 1202 阅读 · 0 评论 -
javascript中的substring方法和substr的详细比较
1.substring方法substring(start,end);(1)start、end都>=0,且为整数[1].千万记住,substring(3,0)与substring(0,3)返回字符串是一样的,即可把substring(3,0)当作是substring(0,3);[2]返回字符串的长度为|start-end|,索引从两者之间取最小值开始。(2)start、end有且原创 2015-09-09 10:46:39 · 532 阅读 · 0 评论 -
javascript indexOf() 和lastIndexOf()方法比较
1. indexOf() 方法返回某个指定的字符串值在字符串中首次出现的位置(从左向右)[1].没有匹配的则返回-1[2].返回首次出现位置的字符串的下标值例如:var src="images/off_1.png"; console.log(src.indexOf('t')); // -1 console.log(src.indexOf('i')); // 0原创 2015-09-09 11:15:59 · 2919 阅读 · 0 评论 -
javascript中的split()和join()方法
1.split()将一个字符串分割为子字符串,将结果作为字符串数组返回,若字符串中存在多个分割符号,亦可分割。形式:stringObj.split([separator,[,limit]])stringObj 必选项 string对象或者文字 该对象不会被split方法修改separator 可选项 字符串或者正则表达式对象limit 可选项 返回数组中的元素个数举例原创 2015-09-09 14:53:37 · 19026 阅读 · 1 评论 -
HTTP常见错误代码列表汇总及解决方案
HTTP常见错误代码列表汇总及解决方案 常见的HTTP错误可以分为以下四大类。每一大类又细分为很多类小错误。分别是: 1、401类错误 最常见的出错提示:401 UNAUTHORIZED 这表示你必须有一个正确的用户名称及密码方能得到对方网页(unauthorizedsite)之使用权,例如浏览一些收费的网页就会出现这个信息。 2、403类错误 最常见的出错提示:转载 2014-03-13 14:52:42 · 2447 阅读 · 0 评论 -
jQuery中.bind() .live() .delegate() .on()的区别
bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数$("a").bind("click",function(){alert("ok");});live(type,[data],fn) 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的$("a").live("click",function(){alert("ok");});转载 2014-03-13 14:51:18 · 560 阅读 · 0 评论 -
javascript Backbone框架学习
原文出自http://www.css88.com/doc/backbone///1.简介/** * Backbone.js为复杂WEB应用程序提供模型(models)、集合(collections)、视图(views)的结构。 * 其中模型用于绑定键值数据和自定义事件; * 集合附有可枚举函数的丰富API; * 视图可以声明事件处理函数,并通过RESRful JSON接口连接到应原创 2015-09-30 09:05:50 · 1586 阅读 · 0 评论 -
javascript 创建对象的方式总结
.基于已有对象扩充其对象和方法(只适合于临时的生成一个对象)var obj = new Object();obj.name = "userObject";obj.printName = function(name){ this.name = name; console.log(this.name);}obj.printName("newUserObjec原创 2015-09-18 15:29:52 · 276 阅读 · 0 评论 -
javascript中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
首先了解枚举属性一般利用for~in遍历var a = [1,2,3];for(var i in a){ console.log(a[i]);}orvar o = {p1:1,p2:2};for(var i in o){ console.log(i+'='+o[i]);}//p1=1;p2=2;并不是所有的属性都会在for~in遍历中显示原创 2015-09-19 09:37:41 · 1082 阅读 · 0 评论 -
javascript 继承
//一.原型链示例//第一种方式:可能会对对象constructor属性产生一定的负面影响function Shape(){ this.name = 'shape'; this.toString = function(){ return this.name; }}function TwoShape(){ this.name = '2D Shap原创 2015-09-21 10:16:09 · 327 阅读 · 0 评论 -
Grunt Gruntfile.js文件详解
Grunt Gruntfile.js文件详解/** * 引入Grunt.js * 1.意义:一个Javascript Task Runner(Javascript任务运行器),其基于NodeJS,可用于自动化构建、测试、生成文档的项目管理工具 * Grunt.js并不是仅仅是构建工具,实际上他只是任务运行器,管理每个子任务的自动化运行,我们还能使用他做更多东西。原创 2015-10-10 11:02:19 · 4538 阅读 · 0 评论 -
javascript 继承2 总结
内容出自(javascript面向对象编程指南) 译者 凌杰 作者 Stoyan Stefanvo(加)分类1.基于模式基于构造器工作模式基于对象工作工作的模式2.基于条件进行模式分类是否使用原型是否执行属性两者都有(即执行原型属性拷贝)原创 2015-09-21 11:25:48 · 423 阅读 · 0 评论 -
javascript BOM 浏览器对象模型
BOM (Browser Object Model,即浏览器对象模型) 页面以外事物所拥有的对象(即浏览器窗口和桌面屏幕)BOM是一个用于访问浏览器和计算机屏幕的对象集合//一、window对象//window对象可提供各自关于浏览器环境的私有数据//1.window.navigator/** * navigator是一个用于反映浏览器本身以及功能信息的对象 * navigator原创 2015-09-21 14:47:36 · 777 阅读 · 0 评论 -
jQuery Deffered对象
原文出自http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html,在此基础上进行了下简化/** * 1.Deffered对象 *deffered对象就是jQuery的回调函数解决方案,含义延迟到未来某个点再执行 * 产生背景:开发网站时,经常会遇到耗时长的jav原创 2015-09-23 17:22:18 · 829 阅读 · 0 评论 -
Javascript的调试利器:Firebug使用详解
Javascript的调试,是开发Web应用尤其是AJAX应用很重要的一环,目前对Javascript进行调试的工具很多,我比较喜欢使用的是Firebug。Firebug是Joe Hewitt开发的一套与Firefox集成在一起的功能强大的web开发工具,可以实时编辑、调试和监测任何页面的CSS、HTML和JavaScript。本文主要是为初学者介绍一下Firebug的基本功能与如何使用F转载 2014-03-04 10:46:16 · 628 阅读 · 0 评论