nodejs 发送邮箱信息 npm nodemailer 模块

nodemailer是nodejs中的邮件发送模块,本文使用的版本为4.0.1安装模块:npminstallnodemailer安装完成后项目里面引用此模块:varnodemalier=require('nodemailer');QQ邮箱:发送邮件的邮箱需要开启POP3/SMTP服务,需要获取授权码,具体操作如下:登录QQ邮箱->设置->账户->开启POP3/SMTP服务,并生产......

js 获取 数组 对象 及字符串 长度

想必大家都知道获取字符串的长度,使用length属性,同样数组也适用。varstr='hello';console.log(str.length);//输出6vararr=[1,2,3,4];console.log(arr.length);//输出4那么如果是对象呢,让我们看看输出是什么?vararr={a:1,b:2,c:3};console.log(arr.length);//输出undefi......

JavaScript 设计模式 之 策略模式

策略模式定义:定义一系列的算法,把它们一个个的封装起来,并且使用它们可以相互替换。案例1:计算员工的年终奖,绩效S的认年终奖为4倍工资,绩效A的认年终奖为3倍工资,绩效B的认年终奖为3倍工资。代码如下:varstrategies={"S":function(salary){returnsalary*4;},"A":function(salary){returnsalary*3;},"B":func......

JavaScript 设计模式 之 单例模式

在JavaScript里,实现单例的方式有很多种,其中最简单的一个方式是使用对象字面量的方法,其字面量里可以包含大量的属性和方法:varmySingleton={property1:"something",property2:"somethingelse",method1:function(){console.log('helloworld');}};如果以后要扩展该对象,你可以添加自己的私有成员......

JavaScript 高级函数其他应用 函数节流(3)

JavaScript中函数大多情况下是由用户主动触发的,除非是函数本身的实现不合理,否则我们一般不会遇到性能问题。但是在极少数情况下,函数的触发不是由用户直接控制的。在这种场景下,函数有可能被频繁的调用,而造成大的性能问题。下面举一些这样的应用场景:1)window.onresize事件。我们给window对象绑定了resize事件,当浏览器窗口大小被拖动而改变的时候,这个事件触发的频率非常之高。......

forever守护nodejs进程

nodeapp.js#方法一npmstart#方法二Express框架这样可以正常启动应用,但是如果断开客户端连接,应用也就随之停止了。也就是说这样的启动方式没有给应用一个守护线程。Forever可以解决这个问题!Forever可以守护Node.js应用,客户端断开的情况下,应用也能正常工作。安装过Node.js后再安装forever,需要加-g参数,因为forever要求安装到全局环境下:npm......

centos 7 安装 mongodb 数据库

1通过Xshell连接至CentOS7服务器;2进入到/usr/local/scr目录:cd/usr/local/scr5下载与CentOS系统匹配的mongodb-linux-x86_64-rhel70-3.2.4.tgz文件:wgethttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.4.tgz6解压缩mongodb......

JavaScript 高级函数其他应用 uncurrying (2)

uncurrying(反柯里化)的话题来自JavaScript之父BrendanEich在2011年发表的一篇Twitter.那么反柯里化函数,从字面讲,意义和用法跟函数柯里化相比正好相反,扩大适用范围,创建一个应用范围更广的函数。使本来只有特定对象才适用的方法,扩展到更多的对象。以下代码是实现uncurrying方式之一:Function.prototype.uncurrying=functio......

JavaScript 高级函数其他应用 currying(1)

今天我们来学习下高级函数的其他应用:functioncurrying(函数柯里化)currying的概念最早是由俄国数学家MosesSchonfinkel发明,而后有著名的数学逻辑学家HaskellCurry将其丰富和发展,currying由此得名。currying又称部分求值。一个currying的函数首先会接受一些参数,接受参数后,改函数并不会立即求值,而是继续返回另外一个函数,刚才传进去的参......

JavaScript 高级函数实现AOP

AOP(面向切面编程)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能模块通常包括日志统计,安全控制,异常处理等。把这些功能抽离出来后,在通过“动态植入”的方式掺入业务逻辑模块中。这样做的好处首先是可以保持业务逻辑模块的纯净和高内聚性,其次是方便地复用日志统计等功能模块。通常在JavaScript中实现AOP,都是把指把一个函数“动态植入”到另一个函数中,具体实现的......