自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

下一站,幸福

微笑面对未来,技术丰富人生......

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

原创 【Node之web通信Socket.IO】

环境:Node v8.2.1; Npm v5.3.0; OS Windows10在web开发中,我们使用HTTP协议,HTTP协议是基于文本的“单向”通讯机制,当我们想要从服务端获取数据的时候目前首选当然是Ajax,Ajax无疑是动态Web页面的一个重大发展,他不再需要我们即使更新一点内容,也需要刷新整个页面了,但是当我们在服务端将数据推送到客户端的时候,Ajax就显得力不从心了。如果我们使用Soc

2017-10-10 19:10:24 468

原创 【Node网络模块NET】

环境:Node v8.2.1; Npm v5.3.0; OS Windows10net 模块提供了创建基于流的 TCP 或 IPC 服务器(net.createServer())和客户端(net.createConnection()) 的异步网络 API。 我粘一个【TCP/IP、Http的区别】,对理解网络有帮助,里面总结得很好的一句话“TPC/IP协议是传输层协议,主要解决数据如何在网络中传输

2017-10-10 19:05:25 689

原创 【Node核心模块HTTP】

环境:Node v8.2.1; Npm v5.3.0; OS Windows10 客户端、服务端对我们都不陌生,Node.js 中的 HTTP 接口被设计成支持协议的许多特性。 比如,大块编码的消息。 这些接口不缓冲完整的请求或响应,用户能够以流的形式处理数据。为了支持各种可能的 HTTP 应用,Node.js 的 HTTP API 是非常底层的。 它只涉及流处理与消息解析。 它把一个消息解析成消

2017-09-30 10:19:09 534

原创 【Node全局变量global模块】

环境:Node v8.2.1; Npm v5.3.0; OS Windows10在浏览器中我们有window对象用于挂载全局的变量,在Node中我们有global对象可以进行挂载,很多共用的属性就可以挂载到global对象上了,本身它自己也拥有很多的属性。1、API结构图2、一些例子下面是部分API的例子,对部分API的一个简单代码实现2.1 global全局命名空间,通过 global 定义的变量

2017-09-27 21:37:23 1543

原创 【Node文件系统fs模块】

环境:Node v8.2.1; Npm v5.3.0; OS Windows101、 fs 模块APInodejs的文件操作大部分API都提供了同步和异步的两种方式,下面是异步API结构图,同步方法在异步方法后面加【Sync】就行了1.1 API结构图1.2 文件读写模式对应编码2、一些例子下面是部分API的例子,对部分API的一个简单代码实现2.1 readFile读取文件//readFile(f

2017-09-27 20:44:52 564

原创 【Node事件模块Events】

环境:Node v8.2.1; Npm v5.3.0; OS Windows101、 Node事件介绍Node大多数核心 API 都采用惯用的异步事件驱动架构,其中某些类型的对象(触发器)会周期性地触发命名事件来调用函数对象(监听器)。所有能触发事件的对象都是 EventEmitter 类的实例。 这些对象开放了一个 eventEmitter.on() 函数,允许将一个或多个函数绑定到会被对象触发的

2017-09-27 19:22:55 714

原创 【Node dgram模块实现UDP通信】

1、什么是UDP?这里简单介绍下,UDP,即用户数据报协议,一种面向无连接的传输层协议,提供不可靠的消息传送服务。UDP协议使用端口号为不同的应用保留其各自的数据传输通道,这一点非常重要。与TCP相比,占用资源更少,传输速度更快。2、了解UDP单播、广播和组播单播:向一个单播地址发送UDP数据报时,数据报只能被指定的IP主机接收,同一子网下的其它主机都不会接收该数据报。单播过程(假设子网地址:192

2017-09-26 22:57:54 1313

原创 【Node断言assert】

一. 简介断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。使用断言可以创建更稳定、品质更好且 不易于出错的代码。当需要在一个值为FALSE时中断当前操作的话,可以使用断言。【单元测试】必须使用断言。Node提供了 10 多个断言

2017-08-29 13:01:06 2231

转载 Node中Buffer对字符串的处理

声明:文章是摘自【深入浅出Node.js(六):Buffer那些事儿】,由于不能转发到这儿,为了方便自己查看,只好摘过来了,也相当于分享了。初体验作为前端的JSer,是一件非常幸福的事情,因为在字符串上从来没有出现过任何纠结的问题。我们来看看PHP对字符串长度的判断结果:<? php echo strlen("0123456789"); echo strlen("零一二三四五六七八九")

2017-08-28 17:29:10 4920

原创 Proxy

文章编写参考 阮一峰《ECMAScript 6 入门》1. 概述Proxy 用于修改某些操作的默认行为,等同于在语言层面做出的修改。属于“元编程”,是对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy原意“代理”,用在这里表示由它来“代理”某些操作,可以译为“代理器”。v

2017-07-11 09:41:14 597

原创 Set和Map数据结构

文章编写参考 阮一峰《ECMAScript 6 入门》1. Set1.1 基本用法Set是ES6提供的新的数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set数据结构和Symbol不一样,Set需要使用构造函数来生成数据结构实例。const s = new Set();上面代码通过Set构造函数生成了一个Set数据实例。const s = new Set();[1, 2, 3, 4,

2017-07-09 17:23:20 751

原创 Symbol

文章编写参考 阮一峰《ECMAScript 6 入门》1. 概述ES5中一个对象额属性名都是字符串,这很容易造成属性名冲突;比如你在使用别人提供的对象,当你向该对象中添加新的属性的时候就要特别小心,谨防属性重名造成冲突。如果有一种机制,保证每个属性的名称都是独一无二的,那么就不用担心这个问题了。也就是是ES6引入Symbol的原因。【Symbol是一种数据类型】,表示独一无二的值!Symbol值是通

2017-07-07 17:26:35 1467

原创 Module 的语法

文章编写参考 阮一峰《ECMAScript 6 入门》1. 概述模块化开发对于现在的大型的应用系统来说是必不可少的一种模式,【ES6模块的设计思想是尽量的静态化】使得编译时就能确定模块的依赖关系,以及输入和输出的变量。ES6模块不是对象,而是通过export命令显示指定输出的代码,再通过import命令导入。// ES6模块import { stat, exists, readFile } fro

2017-07-07 15:03:54 945

原创 Class的继承

文章编写参考 阮一峰《ECMAScript 6 入门》1. 简介Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。//基类class People { constructor(name, age) { this.name = name; this.age = age; } sayHel

2017-07-06 17:49:31 673 1

原创 Class的基本语法

文章编写参考 阮一峰《ECMAScript 6 入门》1. 简介在ES6之前要生成实例一般是通过构造函数function Person(name, age) { this.name = name; this.age = age;}Person.prototype.toString = function () { return "I am " + this.name}v

2017-07-06 14:32:17 957

原创 对象的扩展

文章编写参考 阮一峰《ECMAScript 6 入门》1.属性的简介表示方式ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。var name = "Blue";var Person = { name}//等同于var Person = { name: name}上面代码表明,ES6允许在对象中,直接写入变量。这时【属性名为变量名,属性值为变量值】l

2017-07-05 17:59:51 375

原创 数组的扩展

文章编写参考 阮一峰《ECMAScript 6 入门》1.扩展运算符1.1 基本用法扩展运算符(spread)是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。console.log(...[1, 2, 3])// 1 2 3console.log(1, ...[2, 3, 4], 5)// 1 2 3 4 5[...docum

2017-07-05 11:35:29 866

原创 函数的扩展

文章编写参考 阮一峰《ECMAScript 6 入门》1. 函数参数的默认值1.1 基本用法在ES6之前如果要给函数赋值一般采用以下这样的方式function fun(x, y) { y = y || "Blue"; console.log(x, y);}fun("Hi") //Hi Bluefun("Hi", "Lucky") //Hi Luc

2017-07-03 22:39:13 459

原创 字符串的扩展

文章编写参考 阮一峰 《ECMAScript 6 入门》1.字符串的遍历器接口ES6为字符串添加了遍历器接口,使得字符串可以被for…of循环遍历。for(let codePoint of "bar"){ console.log(codePoint);}// "b"// "a"// "r"2.includes(), startsWith(), endsWith()传统上,JavaSc

2017-06-30 16:03:55 402

原创 变量的解构赋值

文章编写参考 阮一峰《ECMAScript 6 入门》1.数组的解构赋值ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。1.1 基本用法以前,为变量赋值,只能直接指定值。let a = 1;let b = 2;let c = 3;ES6 允许写成下面这样。let [a, b, c] = [1, 2, 3];上面的代码会按照数组对应的位置

2017-06-30 12:35:18 554 1

原创 let和const命令

文章编写参考 阮一峰《ECMAScript 6 入门》1.let命令1.1 基本用法 ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。//let声明的变量只在代码块内有效{ let a = "外部不可访问"; var b = "外部可以访问";}a // ReferenceError: a is not de

2017-06-29 16:58:03 448

原创 Nodejs之查询字符串解析querystring

查询字符串模块提供了解析和格式化工具URL查询字符串的API一、querystring.parse(str[, sep[, eq[, options]]])这个API将URL查询字符串解析为键和值的集合str:URL查询字符串 sep:标明字符串中用于划分键值对的符号,默认为“&” eq:用以标明查询字符串中键和值之间的符号,默认为“=”例子如下:const querystring = re

2017-03-03 23:09:02 3723

原创 Nodejs之地址解析模块URL

url结构化/模块化/路径解析结构化:url.parse(urlString[, parseQueryString[, slashesDenoteHost]]) 模块化:url.format(urlObject) 路径解析:url.resolve(from, to)一个URL字符串是一个结构化的字符串包含多个有意义的组件。在解析时,返回一个URL对象包含每一个组件的属性。官方手册上面的一张图是这

2017-03-03 10:48:30 2157

原创 Nodejs之路径处理模块path

路径处理在nodejs中使用频率是非常高的一个模块,但是官方手册在部分API中说得太简陋了,而且由于平台的差异性,使得有的API让人很费解。获取 /路径/文件名/扩展名获取路径:path.dirname(filepath)获取文件名:path.basename(filename)获取扩展名:path.extname(filepath)获取所在路径const path=require("pat

2017-03-02 22:38:44 13581

原创 两张图理解Node的事件驱动和非阻塞机制

下面两张图帮助理解Node的事件驱动和非阻塞机制

2016-12-07 13:37:45 1292

原创 Node异步编程

1.异步操作 Node 采用 Chrome V8 引擎处理 JavaScript 脚本,V8 最大特点就是单线程运行,一次只能运行一个任务。 Node 大量采用异步操作(asynchronous operation),即任务不是马上执行,而是插在任务队列的尾部,等到前面的任务运行完后再执行。 提高代码的响应能力 2.什么是异步 每一个任务有一个或多个回调函数(callb

2016-12-07 12:34:31 670

原创 全局作用域成员

1.全局对象global 类似于客户端 JavaScript 运行环境中的 windowprocess 用于获取当前的 Node 进程信息,一般用于获取环境变量之类的信息console Node 中内置的 console 模块,提供操作控制台的输入输出功能,常见使用方式与客户端类似—1.1对process的解释 process中一般带有参数信息,默认会有两个参数;process.s

2016-12-07 10:58:49 635

原创 Node命令基本用法

1.REPL环境介绍REPL(Read-eval-print-loop):交互式解析器在REPL环境下,可以定义和运行变量、函数、对象。 2.REPL 环境操作进入 REPL nodenode –use_strictREPL 环境中 类似 Chrome Developer Tools → Consoles特殊变量下划线(_)表示上一个命令的返回结果通过 .exit 或执行 proce

2016-12-07 10:09:58 9975

原创 Node在windows中的环境配置

为什么是在windows中的环境中配置呢,这不禁让我觉得很悲伤,因为屌丝我用的是windows,至于苹果,我只能在路边买,专卖店的就只能想玩的时候去玩。这里介绍两种配置方式 1. 安装包的方式配置(不推荐) 2. 通过NVM工具配置1.安装包的方式配置安装包下载链接: MacOSX:http://npm.taobao.org/mirrors/node/v5.7.0/n

2016-12-06 21:48:32 1400

原创 几张图简单说明Node结构

Node 的实现Node 内部采用 Google Chrome 的 V8 引擎,作为 JavaScript 语言解释器;通过自行开发的 libuv 库,调用操作系统资源。 Node 在 Web 中的用途把上面一张图继续拆分为下面这张图 以上的只是一些简图,先理解Node大致的工作结构,具体的工作机制之后再详细的描述!

2016-12-06 20:24:42 2409

原创 初识Node

1.Node是个什么东西在了解之前新看一下作者(Ryan Dahl)长什么样子吧,就只是看看,“废话,我还能干嘛!” 其实他长什么样我觉得还是不重要,反正我又不拜他官方对Node的解释是这样的 这是对Node一个大的解释,对于Node到底是个什么东西肯定是不知道的!这里有个问题“在开发人员能力相同的情况下编程语言的能力取决于什么?”答1:“取决于语言本身的能力!” 解释1:“其实我们会发现

2016-12-06 17:57:56 404

原创 添加地形图

描述此示例设置初始范围的地图在成都的区域,使用下面的代码: var initExtent = new esri.geometry.Extent({ "xmin": 103.06, "ymin": 30.67, "xmax": 105.06, "ymax": 30.77, "spatialReference": { "wkid": 4326 } });<!DOCTYPE html><html xml

2016-11-10 15:52:50 507

原创 图形绘制

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=u

2016-11-10 15:32:28 426

原创 Slot分发内容

在使用组件时,常常要像这样组合它们:<app> <app-header></app-header> <app-footer></app-footer></app>注意两点:app> 组件不知道它的挂载点会有什么内容,挂载点的内容是由 app> 的父组件决定的。app> 组件很可能有它自己的模板。当app有自己的模板的时候,app-header和app-footer与app进行组合的时候

2016-10-23 18:49:42 3092

原创 Vue.js组件

组件简介组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用,任意类型的应用界面都可以抽象为一个组件树: 那么什么是组件呢? 组件可以扩展HTML元素,封装可重用的HTML代码,我们可以将组件看作自定义的HTML元素。组件的创建和注册基本步骤 Vue.js的组件的使用有3个步骤:创建组件构造器、注册组件和使用组件。 下面的代码演示

2016-10-23 13:29:40 1511

原创 JS中的call()和apply()方法

1、方法定义call方法: 语法:call(thisObj,arg1, arg2, 、、) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。ap

2016-06-15 16:26:41 437

原创 C#子线程执行完后通知主线程

其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿。 那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就很简单了委托传值嘛;下面有一个例子,子线程干一件事情,做完了通知主线程public class Program { //定义一个为委托 public deleg

2016-06-01 10:40:18 8447 1

原创 接口实现多态

由于继承有单根性这一个特点,也就是说一个类只能继承与一个父类,但是有时候我们需要继承多个类,那莪这样就有了接口的出现, 接口实现让一个类可以继承多个类,继承的多个类实际上就是继承的接口接口使用interface关键字来表示一个类是一个几接口接口的特点 1、接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员) 2、为了多态。接口不能被实例化。也就是说,接口不能new(不能

2016-05-26 21:52:30 13302 3

原创 抽象类实现多态

实现多态的第二种方法也就是实用抽象类(Abstract),那么虚方法可以实现多态,抽象类也可以实现多态,那么到底什么时候使用抽象类呢当父类中的方法不知道如何去实现的时候,可以考虑将父类写成抽象类,将方法写成抽象方法抽象类几个特别注意的地方:抽象成员必须标记为abstract,并且不能有任何实现,也就是没有方法体{}抽象成员必须在抽象类中抽象类中可以有抽象成员,也可以有非抽象成员,非抽象成员可以

2016-05-26 21:21:24 4362

原创 虚方法实现多态

大家都知道面向对象的三大特征,封装、继承、多态,这里解释一下多态——什么叫多态同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。换句话说,实际上就是同一个类型的实例调用“相同”的方法,产生的结果是不同的。这里的“相同”打上双引号是因为这里的相同的方法仅仅是看上去相同的方法,实际上它们调用的方法是不同的。 ——里氏转换多态是基于对象继承和里氏转换的,那么什么叫叫作里氏转换呢

2016-05-26 20:56:15 2712

03脚本化文档

文件格式为Xmind,需要下载Xmind查看

2016-04-08

AngularJS 中文API参考手册

AngularJS作为一推出就获得青睐,值得好好研究研究

2016-03-10

[JavaScript权威指南(第六版)

JavaScript权威指南中文版,这本书是每个前端工程师都必须仔细阅读的

2016-02-23

空空如也

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

TA关注的人

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