- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 自定义一个webpack的loader
loader的实现:loader的本质是一个函数,参数是上一个loader的返回值或者源代码,处理完之后返回值给下一个loader或者webpack核心: 里面主要是将源代码转成AST语法树,然后对这个语法树深度遍历改变其中的某些属性或者值之后得到一个新的语法树,再将这个新的语法树转成新代码返回。如何引入自己的loader1.使用别名的方式2.使用查找的方式3.直接在loader中使用绝对路径的方式resolveLoader: { // 第一种使用别名的方式...
2022-01-15 19:43:31 712
原创 js实现数组的一些方法
push:Array.prototype.myPush = function () { for (var i = 0; i < arguments.length; i++) { //arguments代表实参的集合 //this 指向的是arr数组 this[this.length] = arguments[i]; } //由于push 返回值 是一个数组的长度 所以 我们来个return; return this.length;};inde
2022-01-12 10:49:43 197
原创 MVC和MVVM的区别
MVC:视图(View):界面。 控制器(Controller):业务逻辑 模型(Model):数据保存View 传送指令到 Controller Controller 完成业务逻辑后,要求 Model 改变状态 Model 将新的数据发送到 View,用户得到反馈所有通信都是单向的。MVVM:它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。且View和Model之间没有通信。Angular和Ember都采用这种模...
2022-01-07 16:43:30 581
原创 Ts相关面试题
1.unknown和any的区别TypeScript 3.0引入了一个顶级的unknown类型。1.对照于any,unknown是类型安全的。2.任何值都可以赋给unknown,但是当没有类型断言或基于控制流的类型细化时unknown不可以赋值给其它类型,除了它自己和any外。3.同样地,在unknown没有被断言或细化到一个确切类型之前,是不允许在其上进行任何操作的。let value: unknown;value = true; // OKvalue =
2021-08-03 13:46:46 2387 1
原创 redux中间件面试题
如果redux没有中间件它的工作流程是action->reducer,相当于一个同步操作但是当我们项目比较复杂比如有一个需求点击按钮->获取后端数据-> 渲染页面,获取后端数据是一个异步操作那么不使用redux的中间件就满足不了这个需求,有了中间件redux的工作流程就变成了action->middlewares ->reducer...
2021-06-03 19:33:05 2079
原创 react面试题
JSX一种把js和html混合书写的语法,这个语法浏览器是不支持的其实jsx只是一种语法糖,最终会通过babel转译成createElement语法createElement方法最终会返回一个js对象(虚拟dom),后面会通过render方法将虚拟dom转成真实的dom挂载到页面中...
2021-06-03 19:14:06 337
原创 react面试题
点我去看=====>react篇章点我去看=====>redux篇章点我去看=====>redux-saga篇章点我去看=====>reduxzhong jian j篇章
2021-06-03 18:51:43 193
原创 浏览器面试题
浏览器面试题1.前端怎么解决跨域1.Jsonpjsonp的原理就是利用<script>标签没有跨域限制,通过<script>标签src属性,将本地的全局函数通过callback传到服务器,服务端将接口返回数据拼凑到callback函数中,返回给客服端实现思路服务端的代码:<script>var script = document.createElement('script');script.type ............
2021-06-03 18:32:51 948 1
原创 js面试题
javascript面试题1.js判断类型1、typeof所以typeof常用于检测基本类型null返回的也是object2、instanceof不能检测基本类型,所以instancof常用于检测复杂类型 3、constructornull、undefined没有construstor方法,但是contructor的指向是可以被改变,所以不安全4、Object.prototype.toString.call全类型都可以判断2.普通函数和箭头函数的区别1、普通函数...
2021-06-03 18:22:23 1749
原创 CSS面试题
1.有哪些方式(CSS)可以隐藏页面元素?1.opacity:0本质是将元素的透明度降为0,看起来是隐藏了,但是依然占据空间2.visibility:hidden占据空间3.display:none彻底隐藏元素,元素从文档流中消失,不占据空间4.z-index:-9999原理是将层级放到底部,看起来是隐藏了5.overflow:hidden这个只是隐藏元素溢出的部分6.transform:scale(0,0)将元素缩放为0,但是依然占据空间2.em\px\rem区别?Px:绝对
2021-06-03 18:09:15 1451
原创 前端知识梳理
整理了一下面试题,由于太多,所以根据类型不同分为下面几类点我去看=====>html篇章点我去看=====>css篇章点我去看=====>js篇章点我去看=====>l篇章
2021-06-03 17:59:05 350
原创 强制缓存和协商缓存
什么是浏览器缓存浏览器缓存(Brower Caching)是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一页面时,浏览器就可以直接从本地磁盘加载文档。浏览器缓存主要有两类:协商缓存和强缓存。1.强缓存:不会向服务器发送请求,直接从缓存中读取资源,状态码是200;2.协商缓存:向服务器发送请求,服务器会根据这个请求的Request headers的一些参数来判断是否命中协商缓存,如果命中,从缓存中读取数据,返回304状态码两者共同点:都是从客户端缓存中读取资源;区
2021-03-07 20:30:24 4771 2
原创 重学git
前言为什么要写这篇博客呢?我想你应该遇到和我同样的问题,知道git的大部分命令,但是用的时候还是需要靠百度,稍微变着法用的时候就会疑惑半天,原因大概是知识不系统且不知道源头吧,所以这篇博客就由此出现啦我会将每个指令作为一章节,开始我的编写~1.branch2.status3.log/reflog4.add5.commit6.checkout7.push8.reset9.stash10.pull11.fetch12.merge13.rebase1
2020-07-24 15:49:45 317
原创 javaScript深入之call、apply、bind的实现
call的作用有两点:1.改变this 2.让函数执行我们先来用一下call:var foo={ value:1}function bar(){ console.log(this.value)//1}bar.call(foo)上面例子让this指向了foo,并让bar执行了下面进入重点模拟实现call我们将上面的foo对象改造一下,如下var f......
2020-04-27 10:22:01 385
原创 react-router-dom路由参数
本文主要介绍react-router-dom路由传参数的方式以及它们的区别路由传参有4种方式 1.search 2.state 3.params 4.query1.search 推荐这种 因为很容易在地址栏中看到传过来的参数路由path配置 <Route path="/staff/staff-detail"/>或者path配置 <Route path="/s...
2020-03-05 17:37:18 3078
原创 前端下载/导出文件的几种常用方法对比
前言在前端网页中,这是一个极其普遍的需求,所以总结一下,方便日后提高工作效率1.window.open或者window.location.hreflet url = '/api/dhr/test_reports/download';window.open(`${url}?session=${session}&staff_id=${query.staff_id}`, "_bl...
2020-02-24 11:33:10 1849
原创 简述react-router-dom原理
实现根据不同路径渲染不同的组件有两种实现方式:HashRouter :利用监听hash变化(有一个事件hashchange)实现路由切换,它是路由容器,渲染子组件,并向下层子组件传递(Context上下文传递)loaction,history等路由信息window.addEventListener(‘hashchange’,()=>{window.location.hash})...
2020-02-23 12:01:25 1214
原创 js事件循环机制(event loop)之宏任务/微任务
1.关于jsjs是单线程的,即主线程就只有一个2.js事件循环除了广义的同步任务和异步任务,对任务更细致费划分:macro-task(宏任务):包括整体代码script,setTimeout,setInterval等 micro-task(微任务):Promise,process.nextTick等js执行的时候:第一步:js解释器识别所有js代码,将同步的代码放到.........
2019-10-18 15:27:56 2679 2
原创 react学习笔记
1.定义组件的方式通过函数定义://通过props获取组件传来的参数function App(props){ return <div>props.name</div> }<App name="aaa"></App>通过class定义class App extends React.Component{ ren...
2018-12-06 18:54:08 174
原创 js实现一个可以兼容PC端和移动端的div拖动效果
拖动时候用到的三个事件:mousedown、mousemove、mouseup在移动端都不起任何作用。毕竟移动端是没有鼠标的,查资料后发现,在移动端与之相对应的分别是:touchstart、touchmove、touchend事件。还有一点要注意的是在PC端获取当前鼠标的坐标是:event.clientX和event.clientY,在移动端获取坐标位置则是:event.touch...
2018-09-19 16:55:37 1362
原创 git add . git add -U git add -A的区别
总结:· git add -A 提交所有变化· git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)· git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件...
2018-09-19 14:01:56 1953 1
原创 windows10 下 MongoDB的安装
安装MongoDB MongoDB下载地址:http://www.mongodb.org/downloads 下载安装包之后直接打开运行,安装包放在自己想放的位置,本次安装包是放在C盘的根目录下一直执行Next下一步,当进入这个界面的时候,下面的√一定要去掉,不然会安装的特别的慢,如果不去掉,可能要等几个小时以上,小编亲身已经试验过了当所有的步骤值完成的时候,找...
2018-08-24 12:52:19 1117 2
原创 this.$nextTick
首先我们先来看看官方介绍的用法:将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。理解:1.总结来说, 假设我们更改了某个dom元素内部的文本,而这时候我们想直接打印出这个被改变后的文本是需要dom更新之后才会实现的,也就好比我们将打印输出的代码放在setT...
2018-06-22 09:38:48 10848 3
原创 如何向Github README.md中添加图片
1.先把图片上传到你的项目中;然后在github网站上按路径打开图片,如下打开的图片链接:2.复制图片的地址然后在README.md写上:![这里随便写文字](你刚复制的图片路径)注意 上面的感叹号和中括号和小括号之间不能有空格(都是英文状态下的)然后保存就能看到下面的效果,赶快试试吧: ...
2018-04-24 17:57:35 16229 3
原创 微信小程序web-view的使用
最近公司有需求,需要点击小程序首页banner,跳转到我们的h5页面。首先是域名的问题:步骤:先登录小程序开发平台,将页面需要跳转的域名写上去,注意了,域名不是指服务器的域名,而是服务器下面的业务域名 !!!配好了域名之后就可以开始调用web-view了。1.如果你不需要通过点击小程序里面的按钮或者某个view,那么你可以直接在小程序里面直接调用下面的代码即可<web-view src="h...
2018-04-19 16:22:11 9354 3
原创 vue(购物车)
<template> <div> <div class="row"> <!-- 菜单 --> <div class="col-sm-12 col-md-8"> <table class="table"> <thead class=&q
2018-03-20 10:04:09 340
原创 js函数节流和防抖
概念函数防抖(debounce):当调用动作过n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间函数节流(throttle):预先设定一个执行周期,当调用动作的时刻大于等于执行周期则执行该动作,然后进入下一个新周期函数节流(throttle)与函数防抖(debounce)都是为了限制函数的执行频次,以优化函数触发频率过高导致的响应速度跟不上触发频
2018-02-02 15:37:37 573 1
原创 克隆远程仓库 并提交本地修改
在GitHub上创建一个仓库git-test点击create repository 进入下图利用git clone https://github.com/yangqianlu/git-test.git命令克隆远程仓库到本地在git-test中增加一个2.test 文本 并在里面写入内容之后在git中执行命令将本地修改 同步到远程利用命令git push origin master,刷新Git
2017-12-25 16:14:59 3373
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人