自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(187)
  • 收藏
  • 关注

原创 抽象语法书(Abstract Syntax Tree)

webpack 和 esLint 等很多工具和库的核心都是通过 Abstract Syntax Tree(抽象语法树)来实现对代码的检查,分析等操作。通过了解抽象语法树这个概念,自己也会对类似的工具有一个更深入的认识。抽象语法书的用途代码语法检查,代码风格检查,代码高亮,代码错误提示,代码自动补全等等如JSLint,JSHint对代码错误或者风格的检查,发现一些潜在的错误IDE的...

2018-12-20 17:58:35 2299

原创 webapck打包文件之异步版学习

在这之前已经看过乞丐版webpack打包后的文件,已经阅读,这次稍微提高一丢丢难度,看看经典的异步加载的逻辑。。。。老规矩,还是从项目搭建开始基础代码这里的代码和之前乞丐版的基本上一样,知识再src新增了一个lazy.js的文件,代码如下webpack.config.jsconst path = require('path')const HtmlWebpackPlugin =...

2018-12-17 18:19:05 314

原创 Webpack打包文件之乞丐版学习

开始学习,当然是从最简单的开始,首先是搭建项目结构,具体操作如下开始搭建项目创建一个目录study_webpack进入进入study_webpack, npm init -y 初始化项目新建src目录,并进入src,新建文件index.jsindex.html新建webpack.congfig.js文件配置webpack和完成简单的代码结构webpack.con...

2018-12-16 18:03:07 476

原创 webpack4优化学习

libraryTarget 和 library当用 Webpack 去构建一个可以被其他模块导入使用的库时需要用到它们output.libraryTarget 配置以何种方式导出库output.library 配置导出库的名称 output.libraryTarget 是字符串的枚举类型,支持以下配置var (默认)编写的库将通过var被赋值给通过library指定名称的变量。in...

2018-12-14 10:39:49 1348

原创 webpack4配置简单上手

什么是webpackwebpack可以看做是模块打包机,他做的事情是,分析你的项目结构,找到Javascript模块以及其他的有些浏览器不能直接运行的拓展语言(sass, TypeScript等),将其打包为合适的格式以供浏览器调用构建就是把源代码转换成发布到线上可执行的JavaScript, HTML,css,包括一下内容代码转换: typescript编译成JavaScript,...

2018-12-14 10:37:34 600

原创 redis上手之性能测试和集群部署

性能测试Redis 性能测试是通过同时执行多个命令实现的。语法redis-benchmark [option] [option value]实例redis-benchmark -n 1000000====== PING_INLINE ====== 1000000 requests completed in 16.99 seconds 50 parallel client...

2018-12-08 14:56:46 691

原创 EGG单元测试

单元测试的优点代码质量持续有保障重构正确性保障增强自信心自动化运行测试框架mochajspower-assert测试约定测试目录结构我们约定 test 目录为存放所有测试脚本的目录,测试所使用到的 fixtures 和相关辅助脚本都应该放在此目录下。测试文件的目录和我们需要测试的文件目录必须保持一直测试脚本文件统一按 ${filename}.test.j...

2018-12-05 13:53:49 4892

原创 EGGJS学习

提供基于 Egg 定制上层框架的能力高度可扩展的插件机制内置多进程管理基于 Koa 开发,性能优异框架稳定,测试覆盖率高渐进式开发目录结构├── package.json├── app.js (app.js 和 agent.js 用于自定义启动时的初始化工作)├── agent.js (可选)├── app| ├── router.js(用于配置 URL 路由规则)...

2018-12-04 20:24:57 1805

原创 nunjucks简单上手

Nunjucks是Mozilla开发的一个纯JavaScript编写的模板引擎,既可以用在Node环境下,又可以运行在浏览器端安装npm install nunjucks使用渲染字符串let nunjucks=require('nunjucks');nunjucks.configure({autoescape: true});let ret = nunjucks.rende...

2018-12-04 15:01:52 3884 3

原创 Redis简单上手

Redis简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 优势性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。丰富的数据类型 – Redis支持二进制的字符串、列表、哈希值、集合和有序集合等数据类型操作。原子性 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执...

2018-12-02 09:09:43 411

原创 nginx简单配置上手

nginx是一个开源且高性能、可靠的HTTP中间件和代理服务器学习环境操作系统CENTOS>=7.0,位数 X64 CENTOS 7.2环境确认关闭 iptablesiptables命令是Linux上常用的防火墙软件功能命令停止防火墙systemctl stop firewalld.service永久关闭防火墙systemctl disable...

2018-11-30 14:34:12 787

原创 扩展mongoose模型

业务分层service(多个模型)->到单个模型->model 模型定义service(多个模型)->到单个模型->model (模型定义+扩展方法)statics 对类进行扩展当针对所有集合操作的扩展在使用这个扩展根据用户名查找用户文档 // this指向model// 扩展方法PersonSchema.statics.findByUsername...

2018-11-25 20:50:44 1589

原创 MongoDB上手之mongoose

MongoDB简介Mongodb是一个开源的NoSQL数据库,相比MySQL那样的关系型数据库,它更显得 轻巧、灵活,非常适合在数据规模很大、事和性不强的场合下使用。同时它也是一个对象数据库,没有表和行的概念,也没有固定的模式和结构,所有的数据都是以文档的形式存存储(文档,就是一个关联数组式的对象,它的内部由属性组成,一个属性对应的值可能是一个数、字符串、日期、数组、甚至是一个嵌套文档),数...

2018-11-25 10:54:28 332

原创 MongoDB上手之部署篇

主从复制主从复制是一个简单的数据库同步备份的集群技术在数据库集群中要明确知道谁是主服务器,主服务器只有一台从服务器要知道自己的数据源也就是知道自己的主服务器是谁–master用来确定主服务器,–slave和–source 来控制从服务器主服务器master.confdbpath=E:\ms\masterport=1000master=truemaster.batm...

2018-11-25 08:49:01 245

原创 MongoDB上手之创建索引篇

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构特殊的数据结构,按顺序保存...

2018-11-23 20:09:40 1328

原创 Umi分包加载配置

webpack配置在.umirc.js或者config.js中配置,使用webpack的优化模块optimization.splitChunks实现,具体是api这里不做解释,自己去官网看看,说的很清楚,这是传送门配置代码如下:config.optimization.splitChunks({ chunks: 'all', automaticNameD...

2018-11-22 18:52:48 15574 3

原创 MongoDB上手之配置篇

通过配置项启动数据库参数含义–dbpath指定数据库文件的目录–port端口 默认是27017 28017–fork以后台守护的方式进行启动–logpath指定日志文件输出路径–config指定一个配置文件–auth以安全方式启动数据库,默认不验证mongo.confdbpath=E:\mongo\data,logpat...

2018-11-22 15:01:04 276

原创 MongoDB上手之操作篇

什么是MongoDBMongoDB是一个基于分布式文件存储的开源数据库系统MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。MongoDB安装windows安装Windows官方安装指南mongodb32位安装版 链接: https://pan.baidu....

2018-11-21 20:40:15 1033

原创 使用socket.io写一个聊天室

之前学习了常用的api,以及概念,这里为了简单的使用,写一个demo,为了方便查找api,这里给一个传送门socket.io准备老规矩,新建一个目录,一个index.html, app.jsindex.html 为客户端app.js 为服务端基础代码首先使用最简单的代码,然后是实现客户管和服务端链接成功index.html使用html初始文档,然后引入socket...

2018-11-21 10:27:17 790

原创 socket.io

Socket.IO是一个WebSocket库,包括了客户端的js和服务器端的nodejs,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用socket.io的特点易用性:socket.io封装了服务端和客户端,使用起来非常简单方便。跨平台:socket.io支持跨平台,这就意味着你有了更多的选择,可以在自己喜欢的平台下开发实时应用。自适应:它会自动根据浏览器从WebSocke...

2018-11-21 10:26:37 12870 4

原创 websocket学习(二)

websocket客户端,服务端通信的最小单位是帧,由1个或者多个帧组成一个条完成的消息(message)发送端,将消息切割成多个帧,并发送给接收端接收端,接受消息帧,并将关联的症组装成完整的消息websocket数据帧格式单位是比特,比如FIN,RSV1各占一个bit,opcode占据四个bit。 0 1 ...

2018-11-19 11:41:20 1105

原创 websocket学习(一)

WebSockets 规范定义了一个网页浏览器和服务器建立一个socket链接。在客户端和服务器保持有一个持久链接,两边可以在任意时间发送数据HTML5开始提供了一种了iu蓝旗与服务器进行全双工通讯的网络技术基于应用层协议,他基于TCP传输协议,并复用HTTP的握手通道websocket的特点支持双向通信,实时性强更好的二进制技术较少的控制开销,链接创建后,ws客户端,服务端数据...

2018-11-19 11:40:41 656

原创 JS处理文件流

最近做一个项目,遇到了一个问题,就是导出Excel功能。多普通呀,多大众化,哪里都有,可惜我们后台说给我JSON数据,自己处理。我果断拒绝了,拒绝的里有是我菜,实现不了啊。然后后台开发看不下去了,就是转成文件流给我吧。他们那里是分布式部署,也没有办法持久化存储。遂发生了一下的故事百度没有怎么做过,肯定是百度啦,然后找打了一段代码,代码内容如下function download() {...

2018-11-14 15:10:12 35382 2

原创 JWT原理学习

恩么么,用着用着就想知道实现对不对,我也想知道,然后就有了这个。。。。。。开发前的思考我们通过调用,发现引入的是一个对象,这个对象对外暴露了两个方法,encode和decode,我们通过encode创建token,使用decode效验token。下边是实现// 1.创建对象,并暴露出两个方法let jwt = { decode (token, secret) { ...

2018-11-07 20:47:16 1217

原创 JWT在node中的简单应用

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。主要解决的问题跨域认证的问题单点登陆的问题省去服务端读取Session的步骤,这样更符合RESTful的规范JWT 构成header...

2018-11-07 20:46:42 2090

原创 React node diff算法学习

前言一直都知道node diff算法很火,最近刚好有时间,有机会出来学习一点点浅薄的知识,这里做一个简单的笔记 证明我学过。。。学习环境搭建使用create-react-app 初始化一个项目删除src目录下所哟肚饿文件自己新建一个index.js文件第一步创建Element对象index.js新增代码如如下// 这个是虚拟dom要渲染的列表对象let vert...

2018-10-22 20:42:53 487

原创 umiJS学习

安装umiJS小提示一句,如果说经常把yarn和npm混用的话会出现一些奇奇怪怪的问题,具体什么问题可以自己摸索// yarn or npm yarn global add umi # or npm install -g umi创建一个项目新建项目目录使用umi新建页面使用umi命令创建自己手动创建启动项目打包发布// 1.新建目录mkdir myappc...

2018-10-18 16:21:15 24004 3

原创 React-Dva学习

安装安装脚手架npm install dva-cli -goryarn global add dva-cli创建新应用安装完cli工具以后就可以在命令行访问到,为了方便学习,我们可以使用命令创建// 创建一个标准项目 dva new my-app// 创建一个学习的 简答的demodva new my-app --demo启动项目进入项目目录,执行...

2018-10-12 17:00:01 1768

原创 React渲染优化之immutableJS(四)

上一节实现了一个简单的immutable和react-redux的应用,在这一节,实现一个简单的处理合并redux-immutable的combineReducers方法index.js组件代码修改import { createStore } from "redux";// import {combineReducers} from 'redux-immutable' // 这里注释掉,...

2018-10-09 16:58:16 148

原创 React渲染优化之immutableJS(三)

在前两节的基础上,我们在这节引入react-redux,并在react-redux中使用immutablejs创建项目使用create-react-app创建目录删除src目录下所有文件创建入口文件// index.jsimport React,{Component} from 'react';import ReactDOM from 'react-dom';import ...

2018-10-09 16:57:34 400

原创 React渲染优化之immutableJS(二)

在上一节实现了简单的性能优化,但是因为需要一次深拷贝和属性对比,性能还是不好,遂这里使用Facebook大神写的immutable.js进行进一步优化immutable.js JavaScript的不可变集合每次修改都会返回一个新的对象,上一个对象始终会保持在哪里,他提供一些常用的数据类型, 供我们使用,常见的数据类型如下:List:有序索引集,类似于 JavaScript 中的...

2018-10-09 15:57:24 1651

原创 React渲染优化之immutableJS(一)

我们都知道react是数据变更以后就会刷新页面,但是如果我们只是变了某一个数据,然后整个页面都刷新的话,那会很消耗浏览器的性能,我门能做的,就是减少不必要的刷新,具体怎么做,我们一步步的来项目搭建这里使用create-react-app stduy_immutable初始化项目项目初始化完成之后,进入src目录,删除所有文件,自己新建一个index.js先来一个简单的计数器demo,...

2018-10-07 09:53:50 696

原创 reudx中间件原理(二)

这里主要解决多个中间件同事应用,以及redux的两个组件,compose和applyMiddleware组件。componse组件该组件主要是作用就是将多个同时执行,最后返回结果,先看下边的栗子function add1 (str) { return 1 + str}function add2 (str) { return 2 + str}function a...

2018-09-29 15:03:41 198

原创 reudx中间件原理(一)

恩么么,很多时候我们需要在状态变更前和状态变更后做一些处理,我们管这些中间处理的组件为中间件(也不知道对不对,我自己下边的),不管怎么说,我们不仅要会用,还要懂得其中的原理,接下来让我解开redux中间件的神秘面纱哈哈哈哈哈哈基础代码搭建这里的使用之前几篇文文章写的代码,传送门,在这个基础上,我一点点的拓展思路,慢慢的完成组件的编写。基本原理有一个死的写法,即使首先是嵌套了三个函...

2018-09-29 11:48:40 334

原创 redux学习(六)

为了方便操作,我们在本篇文章将完成编写react-redux的编写,事先Provider,connect组件,并将store映射到this,减少文件引入react-redux在src目录下新建目录react-redux,并在新建的目录内创建一下文件1.connect.js 仓库和组件的链接2.context.js 上下文对象3.index.js 导出文件4.Provider....

2018-09-25 17:39:03 145

原创 redux学习(五)

很多时候我们会有很多个页面,会有很多个reducer,那么我们写在一起的话不仅不方便维护,而且文件一会变得越来越臃肿,那怎么办呢,当然是写一个方法,然后处理这些琐碎的事情combineReducers, 接受多个reducer,最后合并为一个reducer,然后返回这个合并后的对象combineReducers.js在redux下新建文件,combineReducers.js代码如下...

2018-09-25 17:38:32 150

原创 redux学习(四)

上一篇文章实现了简单的redux调用,我们发现想要更新数据的时候书写非常麻烦,而且还不好记忆,为了解决这个问题,我们就写一个方法(bindActionCreators),该方法接受两个参数,一个actions对象,一个我们需要触发的函数(store.dispatch),返回一个对象,该对象可以直接调用方法,然后传入参数直接调用,实现更新state状态在redux新建文件bindActionC...

2018-09-25 17:37:22 126

原创 redux学习(三)

在之前的两篇文章我们实现了简单的redux的源码,接下来将写一个redux库,创建目录初始化一个react项目,然后删除所有src写的文件,自己创建文件如下├── redux| ├── createStore.js| └── index.js├── components| ├── Counter.js| └── ├── store| ├── acti...

2018-09-25 17:36:47 157

原创 redux学习(二)

这次,在上次的基础上完成发布和订阅,具体代码看后边redux.js 内容修改思路,我们需要一个创建state的方法,返回一个对象,整个对象上有获取state数据的方法,派发事件的dispatch方法,以及提供监听事件的方法suscribe,因为我们只有一个state对象,还有一个action处理函数reducer函数createStore方法返回一个对象,对象暴露一些我们需要...

2018-09-25 17:36:08 141

原创 redux学习(一)

这里是官方的简介:Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 (如果你需要一个 WordPress 框架,请查看 Redux Framework。)可以让你构建一致化的应用,运行于不同的环境(客户端、服务器、原生应用),并且易于测试。不仅于此,它还提供 超爽的开发体验,比如有一个时间旅行调试器可以编辑后实时预览。Redux 除了和 React 一起用外,还支持...

2018-09-25 17:35:21 251

空空如也

空空如也

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

TA关注的人

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