var

使用 Nodemailer 发送邮件

Nodemailer 是一个基于Node的邮件服务模块。使用 Nodemailer 完成一个发邮件功能非常简单,只需3步:引入模块创建 transport发送邮件引入模块首先安装 Nodemailernpm install nodemailer引入var mailer = require('nodemailer');创建transport创建 transport 使用 No

【源码解析】Vue.js的监听实现

一说到监听,当然就离不了设计模式中鼎鼎大名的观察者模式。举个例子,你家后院着火了,可一定要等到烟雾很大火光很亮你才能发现啊,可是当你安装了一个火灾预警器,当发生火灾就立马能够通知到你了。这就是一个典型的观察者模式。当然也还有一些其他变种,比如发布/订阅(publish/subscribe)模式。我们知道如果要将数据和视图关联起来,在数据变更的时候,同步视图,同理视图变更,数

(1/2)Canvas的交互&存为图片-基本篇

前言公司的产品同学看到朋友圈疯传的这场图后。一拍脑袋,决定做个H5版本的来推广一波。需求如下:文字变成可以点击的,而且还要能够变色(闪瞎有木有)中间的姓名换成用户的微信头像点击button后,将canvas的操作结果保存成图片,来现微信长按保存到本地的功能。难点总结:页面元素canvas基本的api画到画布上(要解决显示自适应的问题);如何实现点击canvas,识别点击文字

实现小小的fullpage

需求背景今天运营给了一个需求,要做个引导页,也就是全屏滚动。考虑到只有3张图,就自己码个吧!说干就干。思路设置一个外层container, 用户的可见区域,也就是全屏container内有3个层次,每个层次大小都跟container一样大小每次滚动时候通过css的transform属性进行偏移,并结合transition过渡一下效果*{margin: 0;padding:

JavaScript设计模式----装饰者模式

装饰者模式的定义:装饰者(decorator)模式能够在不改变对象自身的基础上,在程序运行期间给对像动态的添加职责。与继承相比,装饰者是一种更轻便灵活的做法。装饰者模式的特点:可以动态的给某个对象添加额外的职责,而不会影响从这个类中派生的其它对象;继承的一些缺点:继承会导致超类和子类之间存在强耦合性,当超类改变时,子类也会随之改变;超类的内部细节对于子类是可见的,继承常常被

backbone

backboneBackbone.js提供模型(models)、集合(collections)、视图(views)的结构。Models: 是引用程序的核心,也是表示数据,用于绑定键值数据和自定义事件Collectoins:是对Model的一个容器,包含多个模型,并提供一些方法,来访问这些模型,集合附有可枚举函数的丰富APIView:可以在视图中声明时间,在视图中处理集合或者

怎么写好组件

我们为什么要写组件呢?这里不细分组件、插件、控件,追究其原因无非让代码,能够复用,追求更快的开发效率。其实还有个重要的原因,项目大了之后,难以维护。这个时候就会把项目中重复的部分抽取出来,形成一个组件。但是组件也会有些'缺点',这个最后讲。组件需求要实现如图的一个条件选择器','全选','','','','全不选',''].join('');},getChoseItem:

【算法之美】logn 时间复杂度求解两个有序数组的中位数

一道非常经典的题目,Median of Two Sorted Arrays。(PS:leetcode 我已经做了 190 道,欢迎围观全部题解 https://github.com/hanzichi/leetcode)题意非常简单,给定两个有序的数组,求中位数,难度系数给的是 Hard,希望的复杂度是 log 级别。回顾下中位数,对于一个有序数组,如果数组长度是奇数,那么中

关于 JavaScript 闭包的简单例子

JavaScript 闭包 于控制台中运行如下例子: 无闭包: var x = []; for (var i = 0; i 闭包: var y = []; function doSetTimeout(i) { setTimeout(function () { y[i] = i; }, 1000); } for (var i = 0; i 简写: var z = []; fo