图片处理

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. win10更新后无法远程,报 credssp加密oracle修正

    答案都在图里,看不清就浏览器放大观看 打开开始菜单,搜索“编辑组策略”  进入

  2. Spark ML 几种 归一化(规范化)方法总结

    规范化,有关之前都是用 python写的,  偶然要用scala 进行写, 看到这位大神写的, 那个网页也不错,那个连接图做的还蛮不错的,那天也将自己的博客弄一下那个插件. 本文来源 原文地址:htt ...

  3. JavaScript的NaN-唯一 一个自己不等于自己的对象!!

    JavaScript的NaN为什么不等于NaN 在JS中 Object === Object 感觉没有任何问题 这两个都代表的一个东西 但是如果你试过 NaN === NaN 是返回false为什么呢 ...

  4. 使用google chart api生成报表图片

    使用google chart api生成报表图片 截图 折线图 饼图 柱状图   实现方法 原理是调用google的报表服务,动态拼接url字符串,得到一张图片,数据和说明文字都是从url中传进去的. ...

  5. 【C#入门经典视频教程】-第001课-C#入门-认识C#

    C#入门-认识C# C ---> C++ --> C# (C++++) j++ j++ 有一门可能比这个C#更流行的语言 java 使用的教程:c#入门经典第五版 操作系统:windows ...

  6. 【LeetCode】3. Longest Substring Without Repeating Characters (2 solutions)

    Longest Substring Without Repeating Characters Given a string, find the length of the longest substr ...

  7. HDU 3032 Nim or not Nim? (sg函数)

    Nim or not Nim? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. POJ 3683 Priest John's Busiest Day (2-SAT)

    Priest John's Busiest Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6900   Accept ...

  9. C 简单1

    #include <stdio.h> #define Height 10 int main(){ int width; int clong; int result; printf(&quo ...

  10. iOS 不支持 PWA,那又怎么样?

    原文链接http://www.zcfy.cc/article/ios-doesn-8217-t-support-progressive-web-apps-so-what-cloud-four-3400 ...