大树洞 
  • Home
  • Archives
  • Categories
  • Tags
  • About
  •     

Angular在懒加载子模块无法触发主模块的interceptor

问题书写了一个service,请求后端,但是无法身份验证拦截,没有将其返回登陆界面 调查通过log的方式检查,发现其本身无法被触发,在intercept钩子中无法触发响应,但是也有其他模块的http service是可以正常访问的 发现与猜测通过代码比对与逻辑思考,发现我当初企图将service挂载在子模块上的行为导致了这个结果(将providedIn改为了any) 而interceptor是挂载在app层的 将providedIn修改为root即可修复该问题 在网上进行搜索的时候发现大部分人也没有修改过providedIn这个DI配置项。。。也就没啥找到可以参考的案例 猜测是模块隔离导致的无法访问,暂且先搁置 先记录下来,以便之后review
 2020-09-16   interceptor 

jasmine-angular

使用angular自带的unit-test框架引言Angular集成了一个unit-test框架,比起react和vue那种自己找unit-test框架,有时候还会发现官方文档挂着的unit-test库已经不维护的蛋疼感要好不少,这也算是angular用起来的一个很大的优点了 Angular集成了的框架其实是jasmine,本身是可以脱离angular单独运行的,不过由于是angular主动集成的,所以angular提供了很多可以测试用的工具,以在jasmine中直接运行,这确实省了很多力气 基本使用方法jasmine的基本使用很简单,和其他的几个单测框架差不多,主要就是分为生命周期,断言 github地址文档 Simple Sample Codedescribe("A suite is just a function", function() { var a; it("and so is a spec", function() { a = true; expect(a).toBe(true); }); }); 基
 2020-09-10   unit-test 

关于webgl的共享context

共享context的调查期望:与opengl实现组相同,使用共享context资源来实现优化,避免代码冗余(2套实现标准)背景:经过技术组调查,发现webgl 2 以 opengl es 3的为目标实现了很多特性,故调查webgl2是否支持opengl es 3的shareGroup特性过程首先根据百度进行搜索共享context,基本没有什么有用的消息 继而搜索webgl 2 新实现的一些特性,依旧无果,得到了别人的一些调研结果,貌似webgl2对于实现并不积极的结果 得到WebGL部分文档与demo (知乎回答)https://www.zhihu.com/question/41447132?sort=created (demo)https://link.zhihu.com/?target=https%3A//github.com/WebGLSamples/WebGL2Samples (webgl文档)https://www.khronos.org/registry/webgl/specs/latest/2.0/ (opengl es 3文档)https://www.khronos.o
 2020-09-09  

函数防抖

函数防抖短时间内多次触发同一事件,只执行一次 目的只执行最后一次,或者只执行最开始的一次,中间的不执行。 实现// 合成版 /** * @desc 函数防抖 * @param func 目标函数 * @param wait 延迟执行毫秒数 * @param immediate true - 立即执行, false - 延迟执行 */ function debounce(func, wait, immediate) { let timer; return function() { let context = this, args = arguments; if (timer) clearTimeout(timer); if (immediate) { let callNow = !timer; timer = setTimeout(() => { timer = null;
 2020-07-07   编程常见方式 

函数节流

函数节流函数节流是主要取消一段时间内的多次调用 目的在一定时间内,比如一秒内只调用一次,然后下一秒内再调用一次 实现具体的实现方式,其实是使用的一个变量作为开关,以控制节流的是否处罚 // 时间戳版 function throttle(func, wait) { let previous = 0; return function() { let now = Date.now(); let context = this; let args = arguments; if (now - previous > wait) { func.apply(context, args); previous = now; } } } content.onmousemove = throttle(count,1000); 这段代码参考来源 第一个参数为方法,为节流时调用的函数 第二个参数为防抖时间,用于防抖的延迟时间
 2020-07-07   编程常见方式 

《一个64操作系统的设计与实现》阅读笔记(一)

第二章2019/03/02bochs是真的让人摸不着头脑。。按照书中的 ./configure –with-x11 –with-wx –enable-debugger –enable-disasm –enable-all-optimizations –enable-readline –enable-long-phy-address –enable-x86-64 –enable-smp –enable-cpu-level=6 –enable-large-ramfile –enable-ltdl-install –enable-idle-hack –enable-plugins –enable-a20-pin –enable-repeat-speedups –enable-fast-function-calls –enable-handlers-chaining –enable-trace-linking –enable-configurable-msrs –enable-show-ips –enable-cpp –enable-debugger-gui –enable-iodebug
 2020-03-03  

网页端通过url直接打开pc版钉钉

钉钉统一开发协议 PC端统一跳转协议(我照抄的)html页面填写钉钉PC端指定链接,当用户点击链接时,唤起PC客户端,并执行相应操作。 如打开个人profile页链接: 打开个人profile页,在站点挂个人钉钉联系方式,点击打开个人profile页,步骤如下: 第一步,确认钉钉号:在钉钉移动客户端“我的”,打开”我的信息”页面下查看,钉钉号为xxxxxx; 第二步,替换{id},替换后链接为 dingtalk://dingtalkclient/action/sendmsg?dingtalk_id=xxxxxx; 第三步,打开个人profile页示例:PC端打开个人profile页,点击钉钉联系我。 注意: PC端统一跳转协议暂时不支持服务端获取 dingtalk_id,若页面在钉钉PC端容器内执行,可尝试使用 biz.util.open(需要改跳转链接)JSAPI打开个人资料页。 如何实现客户端注册urlScheme实现原理:window是把自定义协议写入注册表,打开对应exe程序mac是在Info.plist文件添加CFBundleURLTypes 参考文章:实现网页调起PC
 2020-01-20   前端 

记一个ie下特有的代码情况

起因起因是接到了一个bug,说是代码在ie下运行,无法正常运行。当时想了一下,那不是理所当然的嘛,没有接babel-polyfill,所以打不开是正常的一踏糊涂,代码里还有不少Promise相关的代码。 结果出现了反转,他们说打开了f12(控制台)以后,跟我说界面可以正常加载出来了。我当时就???????了 然后我喊上了我的同事,一起来围观ie11下的神秘问题。 然后他表示 这是我工作以来碰到的最神秘的bug 好了,这下懵逼的人又多了一个 调查既然出现了这么有趣的问题,那怎么可以放过它呢。。 通过在google上搜索关键字 ie11 不开 调试器 查到了一个很相似的网页内容 救星啊!!曙光啊!!女神啊!! 然后点了进去 女神他门坏啦!!!女神他穿上了坦克装甲!!! 不过幸好的是,我们找到了关键字,所以我们继续按照这个页面的关键字进行检索,他已经给出了大方向 我们将关键字修改为 ie11 调试器 除非启动 果不其然,正确答案出现了(按F进入坦克) 正确答案 https://xbuba.com/questions/44036862 在这篇文章中,将这个问题的关键描绘了出
 2019-12-30   前端 

regex零宽断言

为啥写这篇文章呢,起因其实是因为收到了一个神秘的链接,也就是下面的万恶之源,然后让我又涨了新姿势 万恶之源 这本质上是一个javascript的正则表达式锻炼网站,学习网站。 在写level 2的时候,踩入了一个深坑,想了半天也么想到一个好的有效的办法,当时就懵了 本质上是匹配ipv6的地址,题目如下 Jan 13 00:48:59: DROP service 68->67(udp) from 213.92.153.167 to 69.43.107.219, prefix: "spoof iana-0/8" (in: eth0 69.43.112.233(38:f8:b7:90:45:92):68 -> 217.70.100.113(00:21:87:79:9c:d9):67 UDP len:576 ttl:64) Jan 13 12:02:48: ACCEPT service dns from 74.125.186.208 to firewall(pub-nic-dns), prefix: "none" (in: eth0 74.1
 2019-12-12   regex 

前端分层结构(mvc->mvvm)的前世今生

本文章含有较多的主观成分,交流为主,大部分内容会参杂个人理解,如有差错,请读者指出mvc首先,我们从MVC这个经典的结构开始说起 mvc的结构分层模式(其实说是模式也很勉强,只是单纯的分层),在那个大部分都是服务端直出的年代,这个结构分层的主要目的,是将原本代码直接从Model直接转化为View的这种强耦合形式进行拆分,使得View层和Model层实现弱耦合的形式,从而达到Model/View复用的形式,其实其本质就是将界面层和数据层进行了分离。 直观一点说是,将原本在jsp页面上直接取数据库字段的行为,修改为了由控制器去获得数据,然后Controller拿到数据后,将数据再渲染到view层。这样做的好处是显而易见的 将数据库字段和界面进行了解耦,不用因为界面需要,而将同一数据源的数据进行转换后再存一次 将界面逻辑进行简化,不需要将每个显示数据的地方进行数据适配 当数据源变动时,只需要将Controller中取值部分进行修改,将数据变动在Controller层进行封装,这样可以实现比较优秀的数据复用 当然这里的Controller层并不是一味的指单纯的Controller,它承载
 2019-11-28   前端 
123

搜索

Hexo Fluid
 总访问量 次   总访客数 人