自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Fancyzhe

fancyzhe.com

  • 博客(32)
  • 资源 (3)
  • 收藏
  • 关注

原创 通过实现getData接口了解egg.js

egg的路由跟umi的路由比较相似,是一种约定式路由的实现。UMI是在指定文件夹下建立相应文件,umi会自动生成路由配置。对下面这段代码进行增加修改:'use strict';//脚手架生成的router.js/** * @param {Egg.Application} app - egg application */module.exports = app => { co...

2019-03-27 15:30:40 875

原创 用Node从零开始实现小爬虫

前言node和Python一样适合做爬虫爬取数据进行解析输出相应格式的json数据。这个项目爬虫的基本原理在,获取到页面的HTML内容,使用cheerio去解析HTML,操作DOM节点获取数据。技术栈node+express+axois项目运行git clone https://github.com/fancyzhe/nodeGetData.gitnpm installnpm st...

2019-03-04 11:29:28 266

原创 说几道有意思的面试题

很长时间没有写博客,突然想起来现在的公司的面试题。选了比较有意思的几道题,写一篇博客谈一谈。祖传代码的重构题目描述:现在有一个函数Add(),里面代码很复杂实现了一系列的功能。不能不去重构他会波及太大,所以不能改函数里面的代码。但新需求是要知道在哪里调用了这个函数,这个函数被调用了多少次(count)和被实例化了多少次(newCount)。function Add(...){ .....

2019-03-02 16:02:56 269

原创 我知道的JavaScript(1)-- 理解作用域

介绍作用域程序中的一段源代码在执行会经历三个步骤,统称“编译”。词法分析 -> 语法分析 -> 代码生成词法作用域词法作用域意味着作用域是由书写代码时函数声明的位置来决定。编译的词法分析阶段基本能知道全部标识符在哪里以及是如何声明的,从而能够预测在执行过程中如何对他们进行查找。var x = 4;function foo(a){ var b = 1; ...

2018-12-28 18:03:52 199

原创 我知道的JavaScript(2)-- 解决跨域

CORS Cross-Origin Resource Sharing跨域资源共享前言同源策略是为了减少XSS和CSRF攻击,跨域是由浏览器的同源策略导致的。同源策略会导致缓存无法访问DOM和JS无法访问AJAX请求不能使用解决方案JsonP基本原理是动态加载一个script便签,从而实现跨域访问。仅限于get请求CORS跨域资源共享在服务器端要开放跨域,设置Acc...

2018-12-28 18:03:14 161

原创 Node基础(2)-- 异步I/O和异步编程

阻塞和非阻塞操作系统内核对于I/O操作只有两种方式,阻塞和非阻塞。阻塞是要等事件在系统内核层面完成所有的操作,才是调用结束可以进行下一个调用。造成了一定的CPU浪费,CPU不能得到充分利用。阻塞调用->等待数据->返回数据非阻塞调用不带数据返回,调用后立即返回。返回过后,CPU就可以执行其他的事件,如果需要获取数据的话,需要通过文件描述符再次获取。非阻塞调用-...

2018-12-17 09:43:03 235

原创 react的setState进行Promise化

很多时候业务需要,在setState后再进行操作,比如改变下拉框的state值需要刷新table列表。这时候不可避免的需要使用setState中自带的callback方式。callback方式缺点是不好定位错误,很容易就进入了回调地狱。所以想到了可以将setState进行promise化,用.then的方式取代回调。/** * 将setState方法promise化,用promise的方式去...

2018-12-11 18:13:01 2316 1

原创 expo搭建react-native项目

react-native官网中推荐开发使用expo去开发和真机启动项目。在项目中可以使用expo的脚手架expo-cli去搭建,也可以使用create-react-native-app 脚手架去搭建。博客中使用的后者。前者可以参考官网 Get Started全局安装脚手架cnpm -g i create-react-native-app创建项目create-react-native-ap...

2018-12-03 11:15:41 8844 2

原创 Node基础(1)--模块机制

JavaScript从最开始的表单校验到现在的大型应用,大概经历工具类库、组件库、前端框架、前端应用的变迁。在经过了很长时间的努力,JavaScript不断被类聚和抽象,通过script标签的方式去引用代码的方式显得杂乱无章。不得不使用命名空间的方式去约束代码,以达到安全易用的目的。JavaScript的痛点在没有模块系统标准库较少没有标准的接口缺乏包管理系统CommonJS规...

2018-11-25 18:59:39 563

原创 未知宽度的水平居中全面解析

1.相对浮动<html><head><title>我的第一个 HTML 页面</title></head><style>.unknow_width_center1 {position:relative; left:50%; float:left;}</style><body&

2018-11-16 12:22:26 606

原创 对JS值类型和引用类型的整理

Js变量类型:值类型和引用类型1.值类型占用空间固定,保存在栈中。2.保存和复制的都是本身3.用typeof可以检测数据类型4.基本数据类型数据是值类型1.引用类型占用空间不固定,保存在堆中。2.保存的是指向对象的指针。3.用instanceof去检测数据类型。4.用new()方法构造出的引用类型。值传递和引用传递,引用对象保存的不是值,是值的物理地址。(传值和传址)对象没有被...

2018-11-14 12:16:25 314

原创 js中 call bind apply区别

call、apply、bind都是js中改变this的指向,但是使用起来不太一样。call(this,agrument1,agrument2)apply(this,[agrument1,agrument2])bind(this)(agrument1,agrument2)注意如果call和apply的第一个参数写的是null,那么this指向的是window对象...

2018-11-14 12:14:44 172

原创 Git从原理到解决冲突

浅谈原理 首先说一下git是怎么样保存数据的。git通过保存快照的方式保存着数据,计算机储存结构类似TCP/IP一样的栈结构,有兴趣的可以更多的去看一下网络的七层协议。应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。快照的储存栈分为四部分,应用层、文件系统层、卷管理层、物理层。 git仓库中保存着五个对象,分别是两个树对象和三个blob对象。两个树对象分别是,提交信息对象...

2018-09-11 18:05:24 7665

原创 梳理css的position属性

1.absolute(绝对定位) 生成绝对定位的元素,相对于第一个父元素进行定位。通过left,top,right,bottom来定位远。2.fixed(绝对定位) 也是生成绝对定位的元素,相对于浏览器进行定位。也是通过left,top,right,bottom来定位远。与absolute不同的是相对的定位元素不同。3.relative(相对定位) ...

2018-09-10 17:44:03 163

原创 一步步学会flex布局

从概念说起,flex布局叫弹性布局。 采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。flex布局的多个属性 1.flex-direction决定flex布局主轴 的方向,就是项目item排列的方向。 2.flex-wrap决定item在一行放不下的时候如...

2018-08-27 11:57:52 215

原创 git工作中常用操作

1、生成密钥对a.生成密钥对命令:ssh-keygen -t rsa -C你的邮箱 —–其中C是大写。 b.生成之后用 notepad c:/User/Administrator/.ssh/id_rsa.pub 打开文件,然后将公钥添加的Gitlab中2、获取远程git库git clone <库名> 如:git clone [email protected]、添加...

2018-08-16 17:35:49 165

原创 js中map和forEach的相同和不同

相同点: 都是循环遍历数组中的每一项forEach和map方法里每次执行匿名函数都支持3个参数,参数分别是item(当前每一项)index(索引值)、arr(原数组) 匿名函数中的this都是指向window 只能遍历数组不同点: Map返回的是新数组,forEach没有返回值。map不改变原数组,forEach会改变原数组。map是新建了一个数组进行操作后返回,而forEach是...

2018-07-10 16:34:47 597

原创 vue怎么样实现MVVM数据双向绑定

关键词:vue MVVMMVC是model、view和control, MVVM是model view view model,通过数据驱动视图层。 MVC、MVP和MVVM之间的区别–阮一峰三大框架中两种实现数据双向绑定 1.angular是通过脏值检测,特定的事件才会触发脏值检测。 1.DOM操作 2.请求接口XHR 3.$time事件 ...

2018-06-21 10:43:54 391

原创 DOM元素遍历——红皮书上的API

childElement:返回子元素的个数firstElement:指向第一个子元素lastElement:指向最后一个子元素previousElementSibling:指向前一个同辈元素nextElementSibling:指向后一个同辈元素...

2018-05-23 16:08:15 268

原创 深度解析JavaScript事件循环--EventLoop

为什么有事件循环? JavaScript是单线程语言,所以会产生异步。在执行任务的时候,先检查事件队列是否为空,不为空的话将任务放到执行栈执行,执行栈执行过后为空就会又回到事件队列去判断事件队列是否为空,这样就形成了事件循环的简单机制。**栈:先进后出 队列:先进先出****执行栈:可以理解为js的单线程执行(正在做的事情)唯一的 事件队列:js的todolist(后...

2018-05-22 18:55:13 189

原创 NodeJS Module实现原理

**Node引入模块的时候: 路径分析 -> 文件定位 -> 编译执行****对应加载module加载顺序 缓存加载 -> 核心模块->自定义模块** 核心模块指的是fs,http等1.路径分析 相对路径模块在分析路径的时候,require会把路径变成真实路径。以绝对路径作为索引,编译执行后放入...

2018-05-22 18:04:08 707

原创 react+materialUI完成自己的翻页组件

material是不带翻页工具的,这一点相比较antd还是有一些鸡肋。所以楼主简单封装了一个翻页组件,话不多说。上代码import React from "react";import ChevronLeft from 'material-ui/svg-icons/navigation/chevron-left';import ChevronRight from 'material-...

2018-03-27 17:25:17 5592 2

原创 angular路由

自带的路由ngRoute,第三方路由ui-router。在页面中点击跳转到某一个指定的页面可以用ngRoute,如果有多个不同的点击跳转就要用到ui-router了ui-router    $urlRouterProvider 负责监听$location,当$location发生了变化的时候,就会在定义好的规则列表中一个个去查找匹配。

2018-03-06 10:11:01 188

原创 从基础开始学习angular

angular通过指令扩展HTML,通过表达式绑定数据到HTML指令:(angular相对于HTML扩展的属性,带有前缀ng-)ng-app指定一个angular应用程序(表明div是angular应用程序的所有者)指定了angular的根元素,会在网页加载完成后自动初始化应用程序。ng-model指令把元素值绑定到应用程序ng-bind指定把应用程序数据绑定到HTML视图ng-init  指令初...

2018-02-12 17:02:48 426

原创 对比起来学习前端三大框架(持续更新)

angular:数据双向绑定,模板功能强大。依赖注入和自定义directive非常灵活。学习路线长,框架偏重。优缺点详见:angularJS在实际开发中有哪些优缺点?vue:轻量级。每一个组件自带shouldComponentUpdate react:虚拟DOM操作,设置state值render页面。 在vue的官网中有提到,跟其他框架的不同,可以去仔细了解...

2018-02-10 10:33:29 14220

原创 TypeScript学习心得

比较文绉绉的形容typescript的一句话是,“可选静态系统,基于类的编译型语言”(其实我也不太懂这句话的深刻意思)通俗易懂点描述它就是“js的超集,支持js的所有属性还有其他的优势”npm安装typescriptnpm i -g typescript在命令行上,运行TypeScript编译器:>tsc 你的typescript文件.ts得到 你的文件名.js,

2018-02-06 11:35:48 1672

原创 react修改标题

react是单页应用,所以我们可能需要根据不同的路由改变文档的title。使用原生的js来修改标题可以在路由index.js中添加一个setTitle的函数const setTitle = title => () => document.title = title;使用

2018-01-31 09:57:25 8078

原创 学习lodash——这一篇就够用

在ES6盛行,ES78马上就要出来的情况下;我们还是需要懂得一些工具库的使用,比较推荐的是lodash。在下面就会谈一谈为什么要使用lodash和lodash的基本使用。 首先要明白的是lodash的所有函数都不会在原有的数据上进行操作,而是复制出一个新的数据而不改变原有数据。类似immutable.js的理念去处理。 lodash是一套工具库,内部封装了很多字符串、数组、对象...

2018-01-17 09:40:42 83703 17

转载 JavaScript与浏览器的那些事-引擎与线程

如果你做过可视化开发:因为需要向页面中添加大量的图表或点线元素而导致页面卡顿、性能下降。这时候应该更多的了解JavaScript与浏览器之间的关系。

2018-01-10 14:20:45 463

原创 开发之前应该了解的HTTP

HTTP简介HTTP是网络上传输的协议,用于浏览器和服务器的通信。基于TCP/IP通信协议来传递数据属于应用层(七层协议:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层)在客户端-服务端架构上工作。特点简单快速灵活无连接(无连接的含义是每次只处理一个请求,处理完成断开连接。)无状态(无状态协议,后续操作需要前面的信息,数据必须重传。)支持服务器/客户  

2018-01-05 14:39:08 1119

原创 一个星期初步了解学习react的心得

作为一个实习生,刚刚入职公司。工作需要,在快速的熟悉公司的项目和开发流程,于是在一个星期恶补了react。最开始看的还是阮老师最经典易懂的教程        React 入门实例教程对着这13个demo,原封不动敲了一遍,还是不能懂为什么要用react。只是一直在重复强调一个概念“组件化”,也没有真正去弄懂模块化和组件化的区别在哪儿。现在大概能背出来概念,组件化是U

2017-11-27 10:07:20 10905 5

原创 Windows下编写.bat文件一键启动nginx+php

不用集成安装包搭建PHP运行环境的情况下,项目启动的时候需要先后启动nginx服务器和PHP服务。点击快捷方式还算比较方便,但我们更可以通过自己编写的.bat文件一键启动。在不了解.bat 文件的基本语法的情况下,可以先百度一下BAT文件语法和技巧(bat文件的编写及使用)基础文件有三个,其实也可以写在一个.bat文件里面,但是便于理解就分开写不同的

2017-11-14 18:57:14 4952

expo最新安装包

expo的安装包

2018-12-03

AccessBalllog

expo apkexpo apk

2018-11-27

git常用命令

git常用资源归类,分别有git常见的指令和在刚开始使用git的时候应该掌握的。

2018-09-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除