漆黑菌的博客

也许面向工资编程才是先进生产力的发展方向...

实用webpack插件记录

webpack-bundle-analyzer webpack-bundle-analyzer可以看到项目各模块的大小,可以按需优化。官方文档: https://www.npmjs.com/package/webpack-bundle-analyzer,中文简单介绍:https://segmentfault.com/a/1190000012220132 ip 可以直接生成通过本地IP地址访...

基于mocha的简单定时api测试

业务场景描述 新入职公司后,所在小组有个问题。后端api开发进度有时会和说好的不一样,所以前端会有人在后端说通了实际上没通的接口上浪费时间。于是老大就让我写个小工具,下次后端说接口好了的时候跑一下,看看是不是真的好了。 思路 这个需求主要可以分成两部分,一个是定时任务,一个是api测试。 定时任务 其实Linux和Windows都有完善的系统级定时任务功能,但是团队有用Mac os的也有...

一道有关闭包和变量提升的前端面试题

题目 var a = 10; (function () { console.log(a) a = 5 console.log(window.a) var a = 20; console.log(a) })() 答案 undefined,10,20 详解 本题中有两个作用域,...

JavaScript的节流与防抖函数

防抖 function debounce(fn) { var time = null return function () { window.clearTimeout(time) time = setTimeout(function () { fn.call(this,ar...

科学使用npm、yarn、node和nvm

问题 npm、yarn和nvm指令有时会遇到些不可抗力问题。 nvm是解决node版本不兼容导致项目无法启动问题的node版本管理工具 方法 给npm设置代理 启动 $ npm config set proxy http://server:port $ npm config set https-proxy http://server:port 取消 npm confi...

写给自己看的前端开发神器Emmet使用手册

Emmet是干啥的?为什么要用Emmet 在前端开发过程中,重复代码片段是比不可少的。Emmet就是一款生成HTML+CSS代码片段的神器。初识Emmet是在VS code上,因为没有发现自带HTML摸板……去问怎么快速生成。回答曰,!+Tab键即可。这就是因为VS code中内置了Emmet,而!+Tab也就是Emmet快速生成<!DOCTYPE html>代码片段的快捷键。 ...

关于vue的面试总结

vue生命周期 先上官方生命周期图 由此可见主要有8个生命周期:beforeCreate和created,beforeMount和mounted,beforeUpdate和updated,beforeDestory和destoryed。 beforeCreate创建前状态 在实例初始化之后,数据观测和暴露了一些有用的实例属性与方法。 实例初始化————new Vue() 数据观测———...

如何实现一个简单的模板字符串填充方法

题目要求 提供一个摸板字符串和一组数据,返回一个渲染完毕的字符串。 方法一:用解析字符串,提取关键字,用关键字去data中取数据。 let data:object = { name:'二狗', sex:'男' } let str: string = '姓名:${name},性别:${sex},年龄:${age}' f...

如何用js实现一个简单的四则运算计算函数

别人的版本 考虑了括号,使用了递归,看上去比较靠谱。 function parse(content){ //寻找最后一个左括号 var index = content.lastIndexOf("("); //如果等式中有左括号 if(index > -1){ //寻找右括号,从左...

JavaScript中的浅拷贝和深拷贝

浅拷贝与深拷贝 在JavaScript中,对于Object和Array这类引用类型值,当从一个变量向另一个变量复制引用类型值时,这个值的副本其实是一个指针,两个变量指向同一个堆对象,改变其中一个变量,另一个也会受到影响。 这种拷贝分为两种情况:拷贝引用和拷贝实例,也就是我们说的浅拷贝和深拷贝 浅拷贝(shallow copy) 拷贝原对象的引用,这是最简单的浅拷贝。 // 对...