9 wl_

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3w+

超微编译器

事物的特殊性往往也能反映事物的普遍性。-- 网摘背景:在了解抽象语法树的时候偶然了解到 the-super-tiny-compiler这个开源项目,一看之下似乎不复杂,原文全是英文,阅读的时候就想到翻译一下,一方面加深理解,一方面也作为阅读的成果。本文主要是对源码中注释的翻译。大多数编译器分为三个主要阶段解析转换生成代码一、解析定义:将原始代码转成更抽象的表示。详细解释:解析通常分为词法分析和句法分析两个阶段。词法分析:由词法分析器将原始代码分解成不同的标记,这些标记包括数字.

2020-06-29 18:53:19

前端e2e测试尝试

环境node: 12.14.0 puppeteer:3.3.0resemblejs:3.2.4解决问题通过puppeteer模拟用户操作,将操作后的页面效果进行截屏保存,此外保留第一次成功运行后的所有截屏图片,回归测试时可利用新旧截屏图片对比是否一致找出问题。目录及文件介绍compared :存放前后图片对比结果生成的图片imgs :存放页面截图first-test :存放第一次运行测试脚本(main.js)所产生的的页面截图src:存放核心源码test :存放测试脚本

2020-06-21 13:03:29

BDD、TDD、ATDD的对比区别(译文)

本指南旨在描述不同的测试方法或实践,例如行为驱动开发(BDD)、测试驱动开发(TDD)、验收测试驱动开发(ATDD)。它还将描述这些技术之间的主要区别。在文章最后,将描述它们是怎样工作的,它们的关键差异以及在开发过程中所扮演的独特的角色。原文:https://www.browserstack.com/guide/tdd-vs-bdd-vs-atdd什么是测试驱动开发-Test-Driven Development (TDD)?测试驱动开发是从开发人员角度使用的一种测试方法或者说编程实践。在.

2020-06-11 17:36:15

webpack4.x打包文件解析

眼睛里的东西,是被赋予的,逃脱,就分不清‘真相’与‘现实’。–极简一、环境"webpack": "^4.43.0""webpack-cli": "^3.3.11"二、源码src/index.jsexport default function() { console.log('hello world')}三、配置文件webpack.config.jsconst path = require('path');module.exports = { mode: 'de.

2020-06-09 18:33:34

web明水印

一、功能点水印文本自定义水印文本颜色自定义水印旋转角度自定义水印覆盖随容器自适应水印背景穿透

2020-05-26 23:39:13

node命令行工具-创建默认格式的vue单文件

地球上的一切工具和机器,不过是人肢体知觉的发展而已。——爱迪生背景:平常在编写vue单文件时总是拷贝一个单文件,然后修改成自己想要的格式,次数做多了未免有点繁琐。于是觉得不如写个node命令行工具,自动生成默认格式的单文件。一、准备工作node环境npm账号:用于将命令行工具存放在npm库熟悉commander.js核心工具二、实现思路基于commander.js实现一个file-create主命令,vue子命令,最终实现通过file-create vue <MyVueNam.

2020-05-23 10:28:53

多值排序算法

一、测试用例用例一入参:[[1,2],[3,4],[5,6]]出参:[1, 3, 5][1, 3, 6][1, 4, 5][1, 4, 6][2, 3, 5][2, 3, 6][2, 4, 5][2, 4, 6]用例二入参:[[‘红色’,‘白色’],[‘1.7米’,‘1.8米’],[‘男性’,‘女性’]]出参:[“红色”, “1.7米”, “男性”][“红色”, “1.7米”, “女性”][“红色”, “1.8米”, “男性”][“红色”, “1.8米”, “女性”][

2020-05-14 19:13:41

css3动画-月食一颗星

跟着时间行走,原本熟悉的东西也会变得陌生。-- 极简一、效果二、代码:CodeOpen

2020-05-01 21:29:00

webpack构建自定义vue组件库

本文描述jsplumb.js库的vue组件化过程一、步骤创建vue项目,vue create w-vue-jsplumb引入jsplumb,编写组件测试npm发布(编写自动发布脚本)二、错误1.执行 vue create w-vue-jsplumb 产生的错误:MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。...

2020-03-17 22:19:39

angular项目中配置文件实践

前言:这里的配置一般指项目构建后可能需要运维人员进行手动修改的内容,比如:url地址等(没有使用代理服务器)。因此为便于运维人员修改,会创建单独的配置文件,且构建后也能方便其修改。一、配置内容放在json文件中json文件放在assets目录下在使用处发送get请求获取json数据,请求可能需要同步二、js配置文件,把js配置文件当作第三方库使用创建配置文件src/app/ur...

2019-12-05 15:23:36

浅谈小程序运行机制

转载于:Fundebug写作背景接触小程序有一段时间了,总得来说小程序开发门槛比较低,但其中基本的运行机制和原理还是要懂的。“比如我在面试的时候问到一个关于小程序的问题,问小程序有window对象吗?他说有吧”,但其实是没有的。感觉他并没有了解小程序底层的一些东西,归根结底来说应该只能算会使用这个工具,但并不明白其中的道理。小程序与普通网页开发是有很大差别的,这就要从它的技术架构底层去剖...

2019-10-08 13:46:29

入门级Mock服务实现(一)

背景:在前后端分离开发模式中,如果前端进度超过后端,会出现前端无数据可用的情况,这时会或多或少影响前端开发效率,从而影响项目的整体进度,在这种情况下,前端开发人员可用通过定义静态数据变量、创建JSON文件等方式解决数据问题,不过这样的操作会破坏代码的整洁性,同时增加项目体积,然而这并不是必要的。这时候业界出现了一种解决方案,把模拟后端返回数据的功能脱离项目,单独实现,实现多项目共享。这就是Moc...

2019-09-19 13:50:40

简单拖拽布局客户端渲染-小结

背景:项目需要在管理端通过拖拽的方式对大屏页面进行布局,生成布局配置。然后在客户端根据布局配置进行渲染。一、特殊需求● 页面布局模块可能重合,这时需要定时切换,时间可配置● 超出布局容器时,内容可滚动,包括横向和纵向,滚动周期可配置二、大屏特性自适应,随屏幕分辨率自适应改变大小注:自适应页面不能使用px,结合使用vw、vh、%、em、rem三、实现步骤布局容器实现内容超出滚...

2019-06-22 11:48:34

可视化布局实现方案

背景:大屏展示网页,管理端实现拖拽布局配置一、功能点拖拽实现布局配置根据配置渲染出页面二、开源工具vue-grid-layout:基于vue的可视化拖拽布局工具,可拖动改变容器大小muuri:功能和vue-grid-layout差不多,不支持拖动改变容器大小三、本文采用vue-grid-layout实现,使用详情参见Github四、实现demo效果五、改进功能点...

2019-06-13 16:01:26

前端异步小结

一、异步操作XMLHttpRequest请求定时器事件WebWorkers,工作线程的运行Websocket请求二、异步编程解决方案PromiseGeneratorasync事件轮询响应式编程,RxJS多线程...

2019-05-21 10:08:40

web端分屏异显实现-Angular+Electron

要点:主屏实现-Angular实现,部署在服务器副屏实现-Angular+Electron,本地应用主副屏通信背景:类似银行柜台操作的一个应用场景:银行人员在个人电脑上一界面操作,但需要同时对办理业务的客户展示相关信息,但要求只展示操作界面的部分信息,同时硬件设备只提供一台主机和两个显示器。技术方案:在上述背景下,开始想的是利用操作系统本身的显示器扩展能力,打开两个不同的浏...

2019-05-19 20:01:54

web端分屏异显实现技术思路-同主机同域名环境

要点:数据存储两屏之间的通信存储Cookie 受同源策略限制,支持多标签页数据共享,大小4KB左右,视浏览器而定LocalStorage 受同源策略限制,支持多标签页数据共享,存储数据量大概几M,视浏览器而定SessionStorage 受同源策略限制,单标签页数据,存储数据量大概几M,视浏览器而定IndexedDB 受同源策略限制,能够存储较大的数据量通信web...

2019-05-15 19:27:05

基础算法回顾(二)

递归递归是调用自己的函数;递归函数有基线条件和递归条件,决定结束和递归;递归调用会产生调用栈;栈有压入和弹出两种操作;调用链越长,调用栈就会越长,所占用的内存就多;尾递归可以解决调用栈过长的问题。快速排序快速排序使用了分而治之的方法分而治之:递归式问题解决方法D&C分而治之的原理:1.找出简单的基线条件2.确定如何缩小问题的规模,使其符合基线条件基线条件是数...

2019-03-08 18:30:43

基础算法回顾(一)

二分查找输入:一个有序的列表输出:该元素的位置或null原理:选择列表中的中间数据与查找目标进行比较,这样就能排除一半的数据,然后再按相同的方式在剩下的列表中进行查找。结论:对于包含n个数据的列表,用二分查找最多需要log(n)次,简单查找最多需要n次选择排序前提:理解数组和链表,以及表示算法时间复杂度大O表示法输入:一个无序列表(数组或链表)输出:一个有序列的列表原理:遍...

2019-03-07 16:49:11

node调用动态链接库(.dll)

一、系统windows10二、应用环境1.安装node2.安装node-gyp3.安装windows-build-toolsnpm install -g node-gyp //依赖python2.7,包含在windows-build-tools中npm install --global --production windows-build-tools(在管理员权限打开的命令行中执行)...

2019-01-14 17:55:14

查看更多

勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。