![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
使用过程中的困惑
飞驰的地铁
这个作者很懒,什么都没留下…
展开
-
npm 安装模块 --save-dev 和 --save 的区别
本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.htmlnpm install moduleName 命令安装模块到项目node_modules目录下。不会将模块依赖写入devDependencies或dependencies 节点。运行 npm install 初始化项目时不会下载模块。npm ins...转载 2019-03-19 00:02:22 · 408 阅读 · 0 评论 -
async / await 为什么叫异步
外异内同看看下面这段代码 async function task () { for (let val of [0, 1, 2, 3]) { let address = ['https://mp.csdn.net','https://mp.csdn.net/mdeditor','https://baidu.com','https://mp.csdn.net/mdeditor']...转载 2019-07-10 17:32:17 · 431 阅读 · 0 评论 -
Vue插件 / Vue.use
项目中有些地方用到了Vue.use, 使用到了插件先来看插件的实现:必须export 暴露一个 install 方法, 该方法正是Vue.use的执行入口Vue.use参数会传入到 install 方法,第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象options...原创 2019-06-30 13:36:37 · 346 阅读 · 0 评论 -
空对象判断
转换成字符串? 不严谨, 值为undefined的属性会丢失 var data = {a:undefined}; alert(JSON.stringify(data) === "{}");原创 2019-07-15 09:27:48 · 73 阅读 · 0 评论 -
webpack中hash、chunkhash、contenthash区别
hash每一次构建后生成的哈希值都不一样,即使文件内容压根没有改变。问题: 一旦修改了任何一个文件,整个项目的文件缓存都将失效。chunkhashchunkhash根据不同的入口文件(Entry)进行依赖文件解析、构建对应的chunk,生成对应的哈希值。在生产环境里把一些公共库和程序入口文件区分开,单独打包构建,接着我们采用chunkhash的方式生成哈希值,那么只要我们不改动公共库的...原创 2019-07-05 15:42:13 · 120 阅读 · 0 评论 -
路由hash模式和history模式
https://blog.csdn.net/fifteen718/article/details/82529433转载 2019-07-05 15:48:20 · 1784 阅读 · 0 评论 -
判断NaN
// isNaN() 会发生转换, 不严谨, 凡是无法转换成数字的都能成立 isNaN(NaN) // true isNaN('hehe') // true // Number.isNaN() es6 将 isNaN 移植到了 Number 上 Number.isNaN(NaN) // true Number.isNaN('hehe') // false // 还有一种方...原创 2019-07-11 13:14:55 · 2957 阅读 · 0 评论 -
千分位逗号分隔
toLocaleString() 123456489656456..toLocaleString('en-US') // 带小数,但是toString, toLocaleString只能保留两位 123456489656456.45764655.toLocaleString() // "123,456,489,656,456.45"正则 // 带有小数的还没想到 12345...原创 2019-07-25 20:17:13 · 347 阅读 · 0 评论 -
CSRF和XSS
CSRFCSRF,即 Cross Site Request Forgery,中译是跨站请求伪造,是一种劫持受信任用户向服务器发送非预期请求的攻击方式。通常情况下,CSRF 攻击是攻击者借助受害者的 Cookie 骗取服务器的信任,可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击服务器,从而在并未授权的情况下执行在权限保护之下的操作。简单点说,CSRF 就是利用用户的登录态发起...原创 2019-07-27 09:37:52 · 104 阅读 · 0 评论 -
Promise实现
实现原创 2019-08-05 17:17:08 · 105 阅读 · 0 评论 -
梳理几个简单的设计模式
大致分为三类创建型行为型结构型创建型工厂模式暴露出一个工厂方法,实际上建造什么样的实例对象(也就是new 哪一个构造函数)我们不用关心单例模式保证一个类仅有一个实例。结构型适配器模式是指将一个接口转换成自己希望的另外一个接口。比如获取到后端传来的数据,但这个数据不是我们想要的格式, 这个时候就可以用适配器方法来转换一下装饰器模式是指在不改变原对象的基础上,通过对...原创 2019-07-26 16:00:40 · 90 阅读 · 0 评论 -
Vue.set()
现象我们知道, 下面两种操作, 不会触发视图更新:根据索引修改数组某项给对象新增属性const vm = new Vue({ data: { arr: [1, 2], obj: { a: 3 } }});vm.arr[0] = 3; // 这种操作页面不会重新渲染vm.obj.b = 3; // 这种操作页面不会重新渲染数组和对象set之后区别区别...原创 2019-08-08 17:14:12 · 214 阅读 · 0 评论 -
js移动和拖拽
移动绝对定位法onmousedown:鼠标按键按下事件。获取鼠标位置,获取被拖拽元素的位置,记录两者之间的纵横坐标的差值(clientX和offsetX差值)。onmousemove:模拟拖拽中事件。鼠标拖动即发生 onmousemove 事件。对容器元素绑定 。将被拖拽元素的 position 改成绝对位置,这个可以通过 left 和 top 改变该元素的位置,从而使...原创 2019-07-05 11:00:24 · 431 阅读 · 0 评论 -
http2 多路复用
HTTP2采用二进制格式传输,取代了HTTP1.x的文本格式,二进制格式解析更高效。多路复用代替了HTTP1.x的序列和阻塞机制,所有的相同域名请求都通过同一个TCP连接并发完成。在HTTP1.x中,并发多个请求需要多个TCP连接,浏览器为了控制资源会有6-8个TCP连接都限制。同域名下所有通信都在单个连接上完成,消除了因多个 TCP 连接而带来的延时和内存消耗。单个连接上可以并行交错的请...转载 2019-07-10 12:18:58 · 769 阅读 · 0 评论 -
从浏览器地址栏输入url到显示页面的步骤(以HTTP为例)
从浏览器地址栏输入url到显示页面的步骤从浏览器地址栏输入url到显示页面的步骤(以HTTP为例)在浏览器地址栏输入URL浏览器查看缓存 ,如果请求资源在缓存中并且新鲜,跳转到转码步骤如果资源未缓存,发起新请求如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进行验证。检验新鲜通常有两个HTTP头进行控制Expires和Cache-Control:HT...转载 2019-07-14 10:00:37 · 1086 阅读 · 0 评论 -
::before ::after 以及 clear:left, right, both
对于::before, ::after, 发现以前理解错了,在这里记录一下。起因早上看 float 布局时, 突然想起以前学的 clear:both 清除浮动, 其中有个利用 ::after 伪元素的方法, 我动手试了一下,一开始 ,我写成这样,如图:<div class="parent"> <div class="left"></div>...原创 2019-06-13 14:33:40 · 1190 阅读 · 1 评论 -
es6 class 语法注意的几点
注意的几个点 :在class中定义的方法, 均为原型方法class F{ say(){}}F.prototype.hasOwnProperty('say') //trueclass 中定义的属性, 均为实例属性, 而非在原型上, 并且构造函数中定义相同属性会覆盖class中的定义class W { a = 1 constructor(){ this.a = 2 }...原创 2019-06-21 17:19:05 · 214 阅读 · 0 评论 -
meta标签常见用法
还记得当年校招, 技术面面到了meta标签的作用, 答得吞吞吐吐的, 这里记录一下元数据(metadata)元素的概念,用来构建HTML文档的基本结构,以及就如何处理文档向浏览器提供信息和指示,它们本身不是文档内容,但提供了关于后面文档内容的信息。——《html5权威指南》元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词...原创 2019-06-17 23:51:39 · 502 阅读 · 0 评论 -
BFC / 外边距折叠
BFC 块格式化上下文 (Block Formatting Context)块格式化上下文(Block Formatting Context),它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用当涉及到可视化布局的时候,BFC提供了一个环境,HTML元素在这个环境中按照一定规则进行布局。一个环境中的元素不会影响到其它环境中的布局。比如浮动元素会形成BFC,浮动元素内部子元...原创 2019-06-17 22:56:00 · 278 阅读 · 1 评论 -
如何获取元素宽高,以及 offset / client / scroll 等属性梳理
盒模型宽高dom.style.width/height (只适用获取内联元素的宽和高, 不合法值, 取出来是空字符)dom.currentStyle.width/height (获取渲染后的宽高,但是仅IE支持)window.getComputedStyle(dom).width/height (与2原理相似,但是兼容性,通用性会更好一些)dom.getBound...原创 2019-06-17 23:46:23 · 563 阅读 · 0 评论 -
跨域解决方法
跨域如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源。如果通不符合同源策略, 即为跨域, 即域名/协议/端口, 有一个及以上不同.解决方法jsonp在HTML标签里,一些标签比如script、img这样的获取资源的标签是没有跨域限制的, jsonp利用了这一点在前端定义一个回调函数如, jsonpCb服务端返回时, 直接返回 jsonpCb(data...原创 2019-07-07 19:44:50 · 105 阅读 · 0 评论 -
js下载
window.open() //方法一:window.open() btn.click(function(){ window.open("https://codeload.github.com/douban/douban-client/legacy.zip/master"); });create form and submit bt...原创 2019-07-08 09:10:51 · 798 阅读 · 1 评论 -
null和undefined
原文1、首先看一个判断题:null和undefined 是否相等 console.log(null==undefined)//true console.log(null===undefined)//false观察可以发现:null和undefined 两者相等,但是当两者做全等比较时,两者又不等。原因:null: Null类型,代表“空值”,代表一个空对象指针,使用type...转载 2019-07-08 10:43:27 · 297 阅读 · 0 评论 -
js中的变量在内存中的具体存储形式
原文地址栈内存和堆内存基本类型是保存在栈内存中的简单数据段,它们的值都有固定的大小,保存在栈空间,通过按值访问引用类型是保存在堆内存中的对象,值大小不固定,栈内存中存放的该对象的访问地址指向堆内存中的对象,JavaScript不允许直接访问堆内存中的位置,因此操作对象时,实际操作对象的引用实例 let a1 = 0; // 栈内存 let a2 = "this is str...转载 2019-07-02 16:11:22 · 2082 阅读 · 1 评论 -
try里面放return,finally还会执行吗?
// return 执行了但是没有立即返回,而是先执行了finally function kaimo(){ try{ return 0; } catch(err) { console.log(err) } finally { console.log("a") } } console.log(kaimo()); // a 0// f...原创 2019-07-02 16:57:31 · 4698 阅读 · 0 评论 -
npm 依赖包版本号~和^的区别
~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0那么该如何选择呢?当然你可以指定特定的版本号,直接写1.2.3,前面什么前缀都没有,这样固然没问题,但是如果依赖包发布新版本修复了一些小bug,那么需要手动修改package.json文件;~和^...转载 2019-07-03 20:54:06 · 8988 阅读 · 0 评论 -
函数柯里化
概念柯里化, Currying(局部化),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。用途分步, 例如加法 function add(a, b) { return a + b } add(1, 2) // 3 function curryingAdd(a){ return func...原创 2019-07-03 22:00:14 · 84 阅读 · 0 评论 -
节流与防抖
场景window对象频繁的onresize,onscroll等事件拖拽的mousemove事件文字输入,keyup事件……防抖 (debounce)在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。例如搜索框, 每输入一个字符, 都向后端发一次请求,调节为最后一次输入后一定时间再触发, 只触发最后一次 (防抖)function debounce(func,...原创 2019-07-03 22:23:58 · 91 阅读 · 0 评论 -
ajax流程与fetch
原生 ajax var xhr; if (window.XMLHttpRequest){ // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xhr = new XMLHttpRequest(); } else { // IE6, IE5 浏览器执行代码 xmlhttp = new ActiveXObjec...转载 2019-07-03 22:45:07 · 77 阅读 · 0 评论 -
vue项目架构
- public - libs - index.html - src => - api --> 请求所需接口 - asset --> 静态资源文件 - config --> 常量, 公用配置 - lang --> 前端静态多语言文件 - router -->路由分模块, index入口 - services -> 公用方法 ...原创 2019-07-13 16:46:46 · 903 阅读 · 0 评论 -
CORS详解
https://www.cnblogs.com/lishanlei/p/8823823.html转载 2019-08-09 10:44:44 · 201 阅读 · 0 评论