
前端开发
清风乐鸣
前端开发工程师
展开
-
React Native搭建iOS开发环境 && 定制化VSCode编辑器
React NativeCocoaPods是用 Ruby 编写的包管理器。从 0.60 版本开始 react native 的 iOS 版本需要使用 CocoaPods 来管理依赖。你可以使用下面的命令来安装 cocoapods。镜像使用对于旧版的 CocoaPods 可以使用如下方法使用 tuna 的镜像:pod repo remove masterpod repo add master https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Sp原创 2020-10-16 14:55:39 · 551 阅读 · 0 评论 -
我常用的命令集
Linux命令rm -rf 目录名字 删除文件夹mkdir 新建文件夹touch 新建文件chflags hidden 文件夹/文件名 隐藏文件/夹backup 备份 链式 mkdir *** backupcd www , 意思是 到www目录; cd … , 意思是到上一级目录; cd - ,意思是返回到上次的目录 ; cd ~,系统管理员的主目录 ; cd / 根目录;reboot 重启 halt 马上关机gunzip 文件名 解压tar.gz文件 t原创 2020-10-16 14:52:27 · 339 阅读 · 0 评论 -
编写omniPoller模拟接口请求逻辑
今天看到简书上一个动态,有道题挺感兴趣的,我把原来的链接发出来:请实现一个功能’ omniPoller ', 用来模拟真实的轮询我把要求列出来:omniPoller函数接受两个参数:queryStatus和successCallbackqueryStatus是一个返回true或false的函数successCallback是一个函数,应该在queryStatus返回true时调用。omniPoller应该定期调用queryStatus当调用一把queryStatus即成功时,即一次就返回t原创 2020-07-14 16:53:41 · 630 阅读 · 0 评论 -
webpack2中 open-browser-webpack-plugin 不生效
今天用webpack2配置了一个项目,想实现一个开启服务,浏览器自动开发首页,但是配置了open-browser-webpack-plugin后不生效,是因为该插件只能在node版本为7.0的情况下才能正常运行,我猜想原因可能是webpack2比较老旧,该项目的很多的插件也是在原来node版本比较旧的情况下才能正常运行,故记录如下,告知后人,此处有坑。var HtmlwebpackPlugin = require('html-webpack-plugin');var OpenBrowserPlugin原创 2020-05-18 17:56:15 · 561 阅读 · 0 评论 -
前端面试必问问题18道---一篇文章进大厂
谈谈数组Array在项目中常见的场景求和,求最大(小)值,排序,多个数组合并(concat),去重,分割,find,indexOf,filter,join, toString等等数组的concat,join,slice,toString方法不会改变原数组数组的splice,push,pop,unshift,shift,sort,reverse方法会改变原数组类数组怎么转化为数组什么是...原创 2020-04-03 19:03:47 · 606 阅读 · 0 评论 -
由/(\w+)\s(\w+)/ 而感,一篇道尽js中的正则表达式
类别: 正则表达式博客: https://blog.youkuaiyun.com/qtfying掘金: https://juejin.im/user/57739929c4c9710055376671QQ: 2811132560邮箱: qtfying@gamil.com上面的这个正则表达是很简单,但是在谈这个问题之前呢,我还是想聊聊正则表达式,一来呢,增加文章的可读性,二呢,也能帮助读者循序渐进...原创 2019-12-30 20:33:20 · 3009 阅读 · 2 评论 -
生动形象解密Promise、Generator 函数、Async 函数三者之间的关系(下)
博客: https://blog.youkuaiyun.com/qtfying掘金: https://juejin.im/user/57deadcd0e3dd90069721916QQ: 2811132560邮箱: qtfying@gamil.com咱们书接上回,聊到哪了来着,奥,Generate的遍历~~~没有看到上篇的文章,来来来,我带你传送生动形象解密Promise、Generator ...原创 2019-12-19 16:41:05 · 570 阅读 · 1 评论 -
生动形象解密Promise、Generator 函数、Async 函数三者之间的关系(上)
博客: https://blog.youkuaiyun.com/qtfying掘金: https://juejin.im/user/57deadcd0e3dd90069721916QQ: 2811132560邮箱: qtfying@gamil.com最近被这三个兄弟搞得是晕头转向,然后决定花一番功夫比较深入的去了解一番,本着做为一名资深前端老油条的善良初心,决定还是布道,对还是布道一下,不但是...原创 2019-12-18 17:29:29 · 942 阅读 · 0 评论 -
从零开始撸一个ajax框架
写这篇文章的初衷:写了5年代码,发现每天的工作都是在像拼积木一样,拼凑着一个又一个功能,但是基本的实现原理可能就那几把刷子,想着想着就干脆整理成一个自己风格的公共库,既然说了,那就干呗,先把最常用的一个方法—ajax入手,发现认真去做一件事情还真的不容易,所以就把这个封装ajax的过程整理成一个博客,供大家参考,小弟也虚心听取各位大佬建议~~框架起步框架的封装是一个开发者综合能力的一个体现...原创 2019-12-12 19:26:37 · 1752 阅读 · 5 评论 -
三端开发调研之京东Taro
三端开发调研之TaroTaro 是由凹凸实验室打造的一套遵循 React 语法规范的多端统一开发框架。使用 Taro,我们可以只书写一套代码,再通过 Taro 的编译工具,将源代码分别编译出可以在不同端(微信小程序、H5、App 端等)运行的代码。实现 一次编写,多端运行。和JDreact的关系Taro 是基于 Nerv.js 搞的。Nerv 是在 2017 年初就已经开发了的基于 v...原创 2019-03-07 09:37:08 · 777 阅读 · 0 评论 -
Set和Map
产生起因JavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对。但是JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。为了解决这个问题,最新的ES6规范引入了新的数据类型Map和set.Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构应用场景数组...原创 2019-01-25 13:56:40 · 354 阅读 · 0 评论 -
对象,数组,Set,Map的遍历方法
var a = ['A', 'B', 'C'];for(var i of a.keys()) { console.log(i)}for (var i of a) { console.log(i)}a.forEach(function (element, index, array) { console.log(element + ', index = ' + index)...原创 2019-01-24 15:04:32 · 393 阅读 · 0 评论 -
为什么数组是对象(javascript基本数据类型)
关于javascript的基本数据类型,网上搜的结果是:W3CSchool结果:字符串、数字、布尔、数组、对象、Null、UndefinedMDN的结果:最新的 ECMAScript 标准定义了 7 种数据类型:6 种原始类型:BooleanNullUndefinedNumberStringSymbol (ECMAScript 6 新定义)和 Object怎么解释...原创 2019-01-23 18:07:10 · 2688 阅读 · 0 评论 -
再次浅谈ReactDom.render( )
今天遇到一个问题,在用creat-react-app脚手架搭建React项目的时候,我们能不能在index.js这个页面传值或者写其他的函数呢,我一开始以为是不可以的,但是没想到试试后竟然也是OK的,就拿属性延展来举例子吧:原来页面:import React from 'react';import ReactDOM from 'react-dom';import './index.cs...原创 2019-04-02 15:59:01 · 1545 阅读 · 0 评论 -
终于弄清楚JS的深拷贝和浅拷贝了[转]
今天在看js的深浅拷贝的时候,发现一个很好的帖子,神贴,来自作者:一只努力的程序媛为了节省时间,我就直接先复制过来啦,致敬致敬!!!今天,CVTE面试官问了深拷贝和浅拷贝的问题我的回答是:浅拷贝是拷贝了对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化;深拷贝是另外申请了一块内存,内容和原对象一样,更改原对象,拷贝对象不会发生变化;但是面试官给我说:浅拷贝是拷贝一层,深层次的对象级...转载 2019-05-21 15:17:15 · 370 阅读 · 0 评论 -
理解深浅拷贝的原理---栈(stack)和堆(heap)
1、栈(stack)和堆(heap)stack为自动分配的内存空间,它由系统自动释放;而heap则是动态分配的内存,大小不定也不会自动释放。2、基本类型和引用类型基本类型:存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配。5种基本数据类型有Undefined、Null、Boolean、Number 和 String,它们是直接按值存放的,所以可以直接访问。引用类型:存放在堆...转载 2019-05-21 17:01:15 · 1126 阅读 · 0 评论 -
slice,splice和split方法的区别和异同
每见到这三个函数,懵不懵,晕不晕…,一遍文章搞定slice(数组)用法:array.slice(start,end)解释:该方法是对数组进行部分截取,并返回一个数组副本;参数start是截取的开始数组索引,end参数等于你要取的最后一个字符的位置值加上1(可选)//如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾var a=[1,2,3,4,5,6];var b=a.s...原创 2019-10-09 17:11:02 · 608 阅读 · 0 评论 -
React Router 页面传值的四种方法
注:本文示例React Router版本为:3.0.2,使用前请注意检查版本一. props.params官方例子使用 React router 定义路由时,我们可以给<Route>指定一个 path,然后指定通配符可以携带参数到指定的 path: 首先定义路由到 UserPage 页面:import { Router,Route,hashHistory} from 'react-...原创 2017-09-11 23:07:58 · 33158 阅读 · 5 评论 -
知乎项目代码阅后总结
项目源地址源码地址项目中增加Reactotron:使用方法项目中的问题[白图为源码,彩图为修改后的正确代码]:setStateaxios请求回来的数据回填到setState中,应该只调用一次setState一个页面需要调用2次接口才能渲染出时候,应该用回调改为回调axios,同时setState只设置一次个人还是比较崇拜先定义后导出的写法ex...原创 2018-12-19 10:47:05 · 401 阅读 · 0 评论 -
React项目打包部署到服务器上的遇到的问题
上一篇我我们讲到关于vue-cli的项目部署的一些小坑,但是对于React项目,如果用create-react-app脚手架运行npm run build后,直接把build文件夹扔到服务器,也会出现同样的问题,怎么才能直接点击运行index.html呢???最简单的方法:个人比较推荐这种,省事----修改package.json修改配置文件----node_modules/reac...原创 2018-12-19 22:38:53 · 3252 阅读 · 5 评论 -
重写移动端滚动条[iScroll.js核心代码]
最近写一个popover弹窗时,发现这个滚动条是真的丑啊,决定重新撸一个滚动条:首先咱们回顾一下移动端浏览器滚动条特性:滚动条在开始滚动时渐显,滚动结束后渐隐 滚动条不占内容区宽度,悬浮固定 滚动条高度(深灰)和滚动区可视高度(浅灰)比等于滚动区可视高度和滚动目标的高度 当滚动目标的高度小于滚动区可视高度的时候,滚动条不显示,并且无法滚动 只有在滚动滚动目标时,才能触发滚动 当滚...原创 2018-12-12 21:42:56 · 1149 阅读 · 0 评论 -
React 使用技巧总结 <二>
7. 渲染一个木偶组件import React from 'react';function NotFound(props) { return ( <div>NotFound</div> )}export default NotFound; 8.ES5 的时候,一个页面可以有多个 React.createClass,同理在 class 类中一个页面中也可以有多个 class 类原创 2017-12-01 23:48:44 · 410 阅读 · 0 评论 -
React使用技巧总结 <一>
1. 当渲染的只有一个目标元素的时候可以直接省去 returnfunction FormList({ color = 'blue', text = 'Confirm'}) { return( <button className = {`btn btn-${color}`}> <em>{text}</em> </button> )}const FormList原创 2017-12-01 23:38:10 · 1959 阅读 · 1 评论 -
使用JS判断移动设备的终端类型(浏览器UserAgent)
JavaScript 是如何判断移动设备的类型呢?答案是:User Agent。什么是 User Agent?懂一点网页制作的人应该都明白。简单的说,User Agent 就是用来识别浏览器名称、版本、引擎以及操作系统等信息的内容。 User Agent 的判断是识别浏览器的关键,不仅仅如此,移动互联网开发势头迅猛,通过 User Agent 判断桌面端设备或移动设备就变的很为重要。当然,通过原创 2017-12-01 17:03:27 · 8696 阅读 · 0 评论 -
开发 react 应用最好用的脚手架 create-react-app
1. 介绍在开发react应用时,应该没有人用传统的方法引入react的源文件(js),然后在html编辑吧。大家都是用webpack + es6来结合react开发前端应用。这个时候,我们可以手动使用npm来安装各种插件,来从头到尾自己搭建环境。比如:npm install react react-dom --savenpm install babel babel-loa...原创 2017-11-29 15:15:43 · 73062 阅读 · 10 评论 -
$.each 循环json以及JSON.parse() JSON.stringify() jQuery.parseJSON()的用法:
$.each JSON.parse() JSON.stringify() jQuery.parseJSON()原创 2017-09-14 15:03:27 · 2862 阅读 · 0 评论 -
设备像素比devicePixelRatio的应用
我们这里所说的devicePixelRatio其实指的是window.devicePixelRatio, 被所有WebKit浏览器以及Opera所支持。概念devicePixelRatio ,它是设备上物理像素和设备独立像素( device-independent pixels (dips) )的比例,即 devicePixelRatio = 屏幕物理像素/设备独立像素 例原创 2017-08-22 16:25:08 · 2288 阅读 · 0 评论 -
Gulp结合Babel实时编译编译ES6:
编译ES6我们常用到的是Babel,首先我们要保证安装了Babel,具体方法我就不啰嗦了,直接上阮大神的教程:阮一峰Babel入门额教程其中教程中有一点要强调的地方就是,在全局状态下如果要手动编译整个文件夹下的ES6的话,我们首先先更改package.json文件中的scripts,修改成自己的文件路径和要计划编译后的路径: "scripts": { "build": "babel src原创 2017-07-28 11:10:53 · 1688 阅读 · 0 评论 -
React点击谁谁显示
实现效果如下:首先 app.js 组件代码import React, { Component } from 'react';import ReactDOM from 'react-dom';import Btn from './button'class App extends Component { constructor(props){ super(props)原创 2017-12-07 15:41:59 · 1599 阅读 · 0 评论 -
<Link>s rendered outside of a router context cannot navigate<React-router报错>
今天这个问题找了好久,终于找到为什么了,我们在百度上搜这个问题基本上只有一个答案点击打开链接其实不是说人家回答的不对,只是比较含糊,看截图:其实答案就是这样的,当我们在用react-router的时候,react-router的思想就是让我们写成一个单独的组件Navigation.js,然后import进来,通过this.props.children 传递给各路由原创 2018-02-01 20:17:41 · 1196 阅读 · 0 评论 -
js一行代码实现数组去重
ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如: let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3]; let set = new Set(array); console.log(set); // => Set {1, 2, 3, 4, 5}ES6中Array新增了一个静态方法A...原创 2018-11-13 15:08:26 · 1340 阅读 · 0 评论 -
理解 JavaScript 中的 for…of 循环
什么是 for…of 循环for...of 语句创建一个循环来迭代可迭代的对象。在 ES6 中引入的 for...of 循环,以替代 for...in 和 forEach() ,并支持新的迭代协议。for...of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。语法for (variable of ...转载 2018-11-13 15:03:14 · 256 阅读 · 0 评论 -
手把手教你写ES6箭头函数
通常函数的定义方法var fn = function(...){ ...... }例如:var add = function(a,b){ return a+b;}//或者:function fn(...){ ......}//例如:function add(a,b){ return a+b;}简写方法速记将原...原创 2018-10-25 14:26:05 · 431 阅读 · 0 评论 -
一看就懂的ES6箭头函数(Arrow Functions)
ES6可以使用" => "定义函数,注意是函数,不要使用这种方式定义类(构造器)。一. 语法1.具有一个参数的简单函数var single = a => a;single('hello, world') //'hello, world'2.没有参数的需要在箭头前加上小括号var log = () => { alert('no param')}...原创 2018-10-25 11:10:24 · 453 阅读 · 0 评论 -
将现有数组重新分组(将数组分每四个渲染到一组)
最近做项目有一个小功能,将数组玩出了花样,就是要将ajax从后台拿到的数据,四个一组,渲染到页面上,特此记下笔记,以作安利:首先,页面上建立一DOM节点:<div id="test"></div>假如我们从后台拿到的数据结构为:var data = [1, 2, 3, 4, 5, 6, 7, 8, 9,10];接下来直接上代码:var result = [...原创 2018-10-11 16:14:35 · 8026 阅读 · 2 评论 -
JavaScript 函数节流和函数去抖
概念节流 (throttle) 让一个函数不要执行的太频繁,减少执行过快的调用,叫节流去抖 (debounce) 去抖就是对于一定时间段的连续的函数调用,只让其执行一次throttle 应用场景DOM 元素的拖拽功能实现(mousemove) 射击游戏的 mousedown/keydown 事件(单位时间只能发射一颗子弹) 计算鼠标移动的距离(mousemove) Canva...原创 2018-07-31 23:16:09 · 362 阅读 · 0 评论 -
js数组分割【分页】(或者动态渲染td,每四个渲染一个tr)
当我们在处理表格的时候,或者是将数组每4个分为一组,进行渲染的时候,也就是分页的时候,我们经常会将一个数组进行一次分割,我接下来就总结一下各种情况下的做法:例如一个数组是var data = [1, 2, 3, 4, 5, 6, 7, 8, 9,10]; var result = []; var data = [1, 2, 3, 4, 5, 6, 7, 8, 9,10...原创 2018-04-18 22:06:55 · 3865 阅读 · 1 评论 -
js处理多次ajax请求
通常 为了减少页面加载时间,先把核心内容显示处理,页面加载完成后再发送ajax请求获取其他数据这时就可能产生多个ajax请求,为了用户体验,最好是发送并行请求,这就产生了并发问题,应该如何处理?1)并行改串行如果业务逻辑和用户体验允许的情况下,可以改为串行,处理起来最简单function async1(){ //do sth...}function async2(){ //do sth...原创 2018-03-23 15:02:57 · 2014 阅读 · 0 评论 -
Javascript 自执行函数(匿名函数)
前言大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行。在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以按照你自己的理解来取一个名字,不过我听很多人都叫它为“自执行”,但作者后面说了很多,来说服大家称呼为“立即调用的函转载 2017-08-02 22:04:22 · 630 阅读 · 0 评论