annvov

Results 33 issues of annvov

## 什么是puppeteer? ## puppeteer 可以用来干什么? puppeteer 可以帮我们做很多事情,比如:UI自动化测试,性能分析等。 ## puppeteer 模拟登录我遇到的几个问题,以及如何解决的? * 我想要不停的切换登录信息,我要复用我的chrome, 所以我要存下我的 websocketUrl * 我要复用socketUrl, 我有一个主脚本main.js 和一个传入用户参数的脚本b.js , 我需要把我的账号信息传递给main.js * 所以这就变成了: * 1.我要在脚本a.js 与脚本main.js 之间传递我的用户名和密码参数 * 2.我的main.js在发现有a.js 这种用户脚本连上时,需要监听到,并且把它连上之前的websocketUrl *...

tool

去求排列组合这种的思路,其实就是用有限的元素去构造一棵树的过程,然后你把这棵树打印处理。所以我之前存在的一个错误的地方就在于我忘记了去保留树的最顶部的那个根。 * 其实很简单,如果你要的最终结果是数组,你根部就放一个[]数组,如果你要的结果是字符串,你根部就放一个’'。 * 关于打印这棵树的子树,其实只要把子树的根节点都记录下来,打印出来就可以了 ### 看2个例子: ### 1.列出['b', 'a', 'o'] 三个元素可以形成的所有的排列组合字符串 ```javascript bao boa abo aob oba oab ``` 思路: 树的根是'', 一开始子树的根是b/a/o 子树的叶子为其剩下的元素 ```javascript function getArrGroup(arr) { let result...

算法

今天看了一个视频: Everything is a plugin! Mastering webpack from the inside out - Sean Larkin https://www.youtube.com/watch?v=4tQiJaFzuJ8 这个作者讲的太好了~~~推荐大家看 下面是我的一些整理 todo: - 1.引入webpack compiler 传入webpack 的config 配置文件 - 2.根据配置找到入口文件,reoslve 解析文件将文件构造成一个个Module实例 - 3.读取文件内容时:引入babylon,@babel/traverse,@babel/types 遍历文件模块的ast,...

webpack

## 最终效果 先看效果,写了一个小例子,请点击查看 https://astexplorer.net/#/gist/49a1bb9cc81e392220ffd998ff47162c/4728dec0c4645e40c58426886bc2069c959544e4 ## 前言 查找ast相关资料,看到别人引用资源里有一个ppt,《how writing a babel plugin is like... jQuery》看了一遍发现,真香!下面我就按照我的理解总结一下ppt里面的内容。通过了解如何开发一个babel插件,也能让我们更好地理解ast. 后面可以不看,重点推荐下面这两个资料: * 像写jquery一样写一个babel 插件 https://hzoo.github.io/babel-plugin-slides/assets/player/KeynoteDHTMLPlayer.html * ASTs for Beginners at Clevertech (February 2017) https://www.youtube.com/watch?v=CFQBHy8RCpg&t=3009s&list=PLq7KCQmgfYTCHovzXIZQxBDL_p9RR2XLF&index=6 ## ast...

Babel

## 思路 1.先找到预定会议室的接口,一般需要登录认证,看需要哪个cookie 2.退出登录,重新登录,看set-cookie 是在哪个response 里给的 3.如果入参没有什么加密的东西,比较简单的话那么直接通过这个接口发请求就可以了 4.如果入参比较复杂,自己比较难构造,那就使用puppeteer 模拟登录行为,最终拿到cookie ## puppeteer + node-schedule ```javascript const request = require('request-promise-native'); const puppeteer = require('puppeteer'); const fakeLogin = async () => { const...

## http报文和tcp报文的不同 http1.1 的报文 ```javascript HTTP/1.0 200 OK Content-Type: text/plain Content-Length: 137582 Expires: Thu, 05 Dec 1997 16:00:00 GMT Last-Modified: Wed, 5 August 1996 15:55:28 GMT Server: Apache 0.84 Hello...

```javascript const request = require('request-promise-native'); const cheerio = require('cheerio'); const config = require('../config'); const zhihuRoot = config.zhihu.root; const pageSize = config.page.pageSize; const ColumnModel = require('../model/column'); const ContentModel = require('../model/content'); const...

## 背景 为了在测试环境能方便的写入登录账号的cookie, 我决定写一个插件,来简化自己的操作。插件的开发和我们平时写页面并无差异,只是多了一份manifest.json文件。 关于manifest.json 插件清单的写法不在这里阐述了,给一个我的清单配置,具体的含义可以查询官网和搜索网上资料。 ```javascript // manifest.json { "manifest_version": 2, "name": "autoLogin", "version": "1.0", "description": "自动写入cookie", "icons": { "19": "icon.png" }, "browser_action": { "default_title": "自动写入cookie", "default_popup": "login.html" },...

tool

-------------------------------------------------------------------- ## 背景 一般我们的后台页面中会存在多个表单项,我们在保存前会对this.$refs.form这个数组做一次validate ## 已知 我们后台用了element-ui, 表单验证的validate 是个异步方法,那么我们怎么样等到所有表单验证完了再走下一步?很明显我们想到用Promise.all 所以我们可以把async 和 promise.all 结合起来用 ## 结果 ```javascript ... async validate() { // 返回一个PromiseArray const promiseArray = this.$refs.form.map((form) => { return form.validate();...

## 前言 之前一直没有很注意vue源码中的proxy方法,最近遇到一个问题,发现了一些忽略的细节。背景如下: ## 背景 一般我们都会在mounted钩子里面去写一些通过异步接口获取数据的方法,比如下面,发现Object.assign 下面两种写法结果不一样 ``` ``` ``` export default { data() { return { form: {} } }, mounted() { Ajax.get(url) .then((data) => { // 这样title是双向绑定的 this.form...

vue