写包称呼大全写包格式(现代流行的)

大家好,我是Echa。

今天继续聊聊NPM, 若Node.js没有NPM,会怎样呢?

小编一句话概括:npm 之于 Node.js ,就像 pip 之于 Python, gem 之于 Ruby, pear 之于 PHP ,JDK 之于 Java , mod 之于 golang。

可见npm 的在Node.js中的位置有多么重要。

昨天小编详细介绍了npm,以及其他现代流行的npm 集合,从1-14 个npm集合,建议看看上篇:现代流行的 npm包大全(上)

接下来,小编直接从全文大纲 15 点开始细聊。继续往下看,惊喜不断,收获满满。

全文大纲

  1. NPM介绍
  2. 前端框架npm 集合
  3. 样式框架npm 集合
  4. 后端框架npm 集合
  5. CORS和请求 npm 集合
  6. API 服务 npm 集合
  7. Web sockets npm 集合
  8. 记录器npm集合
  9. 数据库工具npm集合
  10. 安全认证工具npm集合
  11. 配置模块npm集合
  12. 静态网站生成器npm集合
  13. 模板语言npm集合
  14. 图像处理npm集合
  15. 日期格式npm集合
  16. 数据生成器npm集合
  17. 验证者npm集合
  18. 表格和电子邮件npm集合
  19. 测试工具npm集合
  20. 网页抓取和自动化npm集合
  21. Linters 和格式化程序npm集合
  22. 模块打包器和最小化器npm集合
  23. 流程管理器和运行器npm集合
  24. CLI 和调试器npm集合
  25. 实用程序npm集合
  26. 系统模块npm集合
  27. 其他npm集合

日期格式npm集合

  1. DayJS

npm 地址:https://www.npmjs.com/package/dayjs

DayJS 是 MomentJS 的快速轻量级替代品(自 2020 年 9 月起处于维护模式)。使用类似的 API - 如果您使用过 MomentJS,那肯定已经知道如何使用大部分 DayJS。

安装

npm i dayjs

案例

dayjs('2018-08-08') // parse

dayjs().format('{YYYY} MM-DDTHH:mm:ss SSS [Z] A') // display

dayjs().set('month', 3).month() // get & set

dayjs().add(1, 'year') // manipulate

dayjs().isBefore(dayjs()) // query

如下图:


  1. Luxon

npm 地址: https://www.npmjs.com/package/luxon

如果您喜欢另一种轻量级的替代方案,API 略有不同,那么 Luxon 可能是我们的正确选择。

安装

npm i luxon

案例

DateTime.now().setZone("America/New_York").minus({ weeks: 1 }).endOf("day").toISO();

如下图:


数据生成器npm集合

  1. Shortid

npm 地址: https://www.npmjs.com/package/shortid

它可以创建一个非常短的非顺序的url 唯一id。它非常适合 url 缩短器、DB id 和任何其他 id。

安装

npm i shortid

案例

~/projects/shortid ❯ node examples/examples.js
eWRhpRV
23TplPdS
46Juzcyx
dBvJIh-H
2WEKaVNO
7oet_d9Z
dogPzIz8
nYrnfYEv
a4vhAoFG
hwX6aOr7

如下图:


  1. Uuid

npm 地址:https://www.npmjs.com/package/uuid

这是一个非常方便的微型包,可快速轻松地生成更复杂的通用唯一标识符 (UUID)。

安装

npm i uuid

案例

import { parse as uuidParse } from 'uuid';

// Parse a UUID
const bytes = uuidParse('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b');

// Convert to hex strings to show byte order (for documentation purposes)
[...bytes].map((v) => v.toString(16).padStart(2, '0')); // ⇨ 
  // [
  //   '6e', 'c0', 'bd', '7f',
  //   '11', 'c0', '43', 'da',
  //   '97', '5e', '2a', '8a',
  //   'd9', 'eb', 'ae', '0b'
  // ]

如下图:


  1. Faker

npm 地址: https://www.npmjs.com/package/faker

用于在浏览器和 Node.js 中生成大量虚假数据的有用包。

安装

npm i faker

如下图:


验证者npm集合

  1. Validator

npm 地址: https://www.npmjs.com/package/validator

这是一个非常方便的字符串验证器库。它有许多有用的方法,可以便于我们快速使用,例如 isEmail()、isCreditCard()、isDate() 和 isURL()。

安装

npm i validator

案例

var validator = require('validator');

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

如下图:


  1. Joi

npm 地址: https://www.npmjs.com/package/joi

它是一个强大的 JavaScript 模式,描述语言和数据验证器。

安装

npm i joi

如下图:


表格和电子邮件npm集合

  1. Formik

npm 地址: https://www.npmjs.com/package/formik

Formik 是一个流行的 React 和 React Native 开源表单库。它易于使用、声明性和自适应性。

安装

npm i formik

如下图:



  1. Multer

npm 地址: https://www.npmjs.com/package/multer

Multer 是一个用于处理 multipart/form-data 的 Node.js 中间件,主要用于上传文件。

安装

npm i multer

案例

<form action="/profile" method="post" enctype="multipart/form-data">
  <input type="file" name="avatar" />
</form>

const express = require('express')
const multer  = require('multer')
const upload = multer({ dest: 'uploads/' })

const app = express()

app.post('/profile', upload.single('avatar'), function (req, res, next) {
  // req.file is the `avatar` file
  // req.body will hold the text fields, if there were any
})

app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) {
  // req.files is array of `photos` files
  // req.body will contain the text fields, if there were any
})

const cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }])
app.post('/cool-profile', cpUpload, function (req, res, next) {
  // req.files is an object (String -> Array) where fieldname is the key, and the value is array of files
  //
  // e.g.
  //  req.files['avatar'][0] -> File
  //  req.files['gallery'] -> Array
  //
  // req.body will contain the text fields, if there were any
})

如下图:


  1. Nodemailer

npm 地址: https://www.npmjs.com/package/nodemailer

Nodemailer 是 Node.js 应用程序的一个模块,可以轻松发送电子邮件。该项目早在 2010 年就开始了,今天它是大多数 Node.js 用户默认使用的解决方案。

安装

npm i nodemailer

案例

let configOptions = {
    host: "smtp.example.com",
    port: 587,
    tls: {
        rejectUnauthorized: true,
        minVersion: "TLSv1.2"
    }
}

如下图:


测试工具npm集合

  1. Jest

npm 地址: https://www.npmjs.com/package/jest

Jest 是一个令人愉快的 JavaScript 测试框架,专注于简单性。它允许我们使用平易近人、熟悉且功能丰富的 API 编写测试,从而快速为我们提供结果。

安装

npm i jest

如下图:


  1. Mocha

npm 地址: https://www.npmjs.com/package/mocha

Mocha 是一个 JavaScript 测试框架,让异步测试变得简单有趣。Mocha 测试连续运行,允许灵活准确的报告,同时,将未捕获的异常映射到正确的测试用例。

安装

npm i mocha

如下图:


网页抓取和自动化npm集合

  1. Cheerio

npm 地址: https://www.npmjs.com/package/cheerio

Cheerio 广泛用于网络抓取工作,有时还用于自动化任务。它基于 jquery 非常快速和快速。Cheerio 封装了 Parse5 解析器,能够解析任何类型的 HTML 和 XML 文档。

安装

npm i cheerio

案例

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

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

$.html();
//=> <html><head></head><body><h2 class="title welcome">Hello there!</h2></body></html>

如下图:


  1. Puppeteer

npm 地址: https://www.npmjs.com/package/puppeteer

Cheerio 广泛用于网络抓取工作,有时还用于自动化任务。它基于 jquery 非常快速和快速。Cheerio 封装了 Parse5 解析器,能够解析任何类型的 HTML 和 XML 文档。

安装

npm i puppeteer

案例

import puppeteer from 'puppeteer';

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto('https://developer.chrome.com/');

  // Set screen size
  await page.setViewport({width: 1080, height: 1024});

  // Type into search box
  await page.type('.search-box__input', 'automate beyond recorder');

  // Wait and click on first result
  const searchResultSelector = '.search-box__link';
  await page.waitForSelector(searchResultSelector);
  await page.click(searchResultSelector);

  // Locate the full title with a unique string
  const textSelector = await page.waitForSelector(
    'text/Customize and automate'
  );
  const fullTitle = await textSelector.evaluate(el => el.textContent);

  // Print the full title
  console.log('The title of this blog post is "%s".', fullTitle);

  await browser.close();
})();

如下图:


Linters 和格式化程序npm集合

  1. ESLint

npm 地址: https://www.npmjs.com/package/eslint

ESLint 是一种用于识别和报告在 ECMAScript/JavaScript 代码中发现的模式的工具。ESLint 是完全可插拔的,每一条规则都是一个插件,我们可以在运行时添加更多。

安装

npm i eslint

案例

{
    "rules": {
        "semi": ["error", "always"],
        "quotes": ["error", "double"]
    }
}

如下图:


  1. Prettier

npm 地址: https://www.npmjs.com/package/prettier

Prettier 是一个固执己见的代码格式化程序。它通过解析您的代码并使用自己的规则重新打印它来执行一致的样式,这些规则考虑了最大行长度,并在必要时包装代码。

安装

npm i prettier

案例

foo(
  reallyLongArg(),
  omgSoManyParameters(),
  IShouldRefactorThis(),
  isThereSeriouslyAnotherOne()
);

如下图:


模块打包器和最小化器npm集合

  1. Webpack

npm 地址: https://www.npmjs.com/package/webpack

著名且功能强大的模块捆绑器。它的主要目的是捆绑 JavaScript 文件以在浏览器中使用,但它也能够转换、捆绑或打包几乎任何资源或资产。

安装

npm i webpack

如下图:


  1. HTML-Minifier

npm 地址: https://www.npmjs.com/package/html-minifier

著名且功能强大的模块捆绑器。它的主要目的是捆绑 JavaScript 文件以在浏览器中使用,但它也能够转换、捆绑或打包几乎任何资源或资产。

安装

npm i html-minifier

案例

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

如下图:


  1. Clean-CSS

npm 地址: https://www.npmjs.com/package/clean-css

适用于 Node.js 平台和任何现代浏览器的快速高效的 CSS 优化器。高度可配置和许多兼容模式。

安装

npm i clean-css

案例

var CleanCSS = require('clean-css');
var input = 'a{font-weight:bold;}';
var options = { /* options */ };
var output = new CleanCSS(options).minify(input);

如下图:


  1. UglifyJS2

npm 地址: https://www.npmjs.com/package/uglify-js

JavaScript 解析器、压缩器、压缩器和美化工具包。它可以接受多个输入文件并支持许多配置选项。

安装

npm i uglify-js

案例

// example.js
var x = {
    baz_: 0,
    foo_: 1,
    calc: function() {
        return this.foo_ + this.baz_;
    }
};
x.bar_ = 2;
x["baz_"] = 3;
console.log(x.calc());

如下图:


流程管理器和运行器npm集合

  1. Nodemon

npm 地址: https://www.npmjs.com/package/nodemon

用于开发 Node.js 应用程序的简单监控脚本。对开发很有用,因为它非常容易重新启动,并且默认启用和烘焙文件监视。

安装

npm i nodemon

案例

if (cluster.isMaster) {
  process.on("SIGHUP", function () {
    for (const worker of Object.values(cluster.workers)) {
      worker.process.kill("SIGTERM");
    }
  });
} else {
  process.on("SIGHUP", function() {})
}

如下图:


  1. PM2

npm 地址: https://www.npmjs.com/package/pm2

带有内置负载均衡器的 Node.JS 应用程序的生产流程管理器。更全面,更适合生产。为我们提供许多参数来调整/采取行动。

安装

npm i pm2

如下图:


  1. Concurrently

npm 地址: https://www.npmjs.com/package/concurrently

简单直接 - 用于同时运行多个命令的有用工具。

安装

npm i concurrently

案例

const concurrently = require('concurrently');
const { result } = concurrently(
  [
    'npm:watch-*',
    { command: 'nodemon', name: 'server' },
    { command: 'deploy', name: 'deploy', env: { PUBLIC_KEY: '...' } },
    {
      command: 'watch',
      name: 'watch',
      cwd: path.resolve(__dirname, 'scripts/watchers'),
    },
  ],
  {
    prefix: 'name',
    killOthers: ['failure', 'success'],
    restartTries: 3,
    cwd: path.resolve(__dirname, 'scripts'),
  }
);
result.then(success, failure);

如下图:

CLI 和调试器npm集合

  1. Commander

npm 地址: https://www.npmjs.com/package/commander

提供流畅的 API 用于定义 CLI 应用程序的各个方面,例如命令、选项、别名和帮助。简化命令行应用程序的创建。

安装

npm i commander

案例

const { program } = require('commander');

program
  .option('--first')
  .option('-s, --separator <char>');

program.parse();

const options = program.opts();
const limit = options.first ? 1 : undefined;
console.log(program.args[0].split(options.separator, limit));

如下图:


  1. Inquirer

npm 地址: https://www.npmjs.com/package/inquirer

用于 Node.js 的易于嵌入且美观的命令行界面。提供很棒的查询会话流程。

安装

npm i inquirer

案例

import inquirer from 'inquirer';

inquirer
  .prompt([
    /* Pass your questions in here */
  ])
  .then((answers) => {
    // Use user feedback for... whatever!!
  })
  .catch((error) => {
    if (error.isTtyError) {
      // Prompt couldn't be rendered in the current environment
    } else {
      // Something else went wrong
    }
  });

如下图:


  1. Chalk

npm 地址: https://www.npmjs.com/package/chalk

Chalk 是一个非常简单的库,创建一个简单的目的 - 为我们的终端字符串设置样式。

安装

npm i chalk

案例

import chalk from 'chalk';

console.log(chalk.blue('Hello world!'));

如下图:


  1. Debug

npm 地址: https://www.npmjs.com/package/debug

一个小型的 JavaScript 调试工具。只需将模块名称传递给函数,它就会返回console.error 的修饰版本,供我们传递调试语句。

安装

npm i debug

案例

var debug = require('debug')('http')
  , http = require('http')
  , name = 'My App';

// fake app

debug('booting %o', name);

http.createServer(function(req, res){
  debug(req.method + ' ' + req.url);
  res.end('hello\n');
}).listen(3000, function(){
  debug('listening');
});

// fake worker of some kind

require('./worker');

如下图:


实用程序npm集合

  1. Lodash

npm 地址: https://www.npmjs.com/package/lodash

提供模块化、性能和附加功能的现代 JavaScript 实用程序库。在 JavaScript 数组、对象和其他数据结构上公开了许多有用的方法。

安装

npm i lodash

案例

// Load the full build.
var _ = require('lodash');
// Load the core build.
var _ = require('lodash/core');
// Load the FP build for immutable auto-curried iteratee-first data-last methods.
var fp = require('lodash/fp');

// Load method categories.
var array = require('lodash/array');
var object = require('lodash/fp/object');

// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
var at = require('lodash/at');
var curryN = require('lodash/fp/curryN');

如下图:


  1. Underscore

npm 地址: https://www.npmjs.com/package/underscore

Underscore 提供了许多常用的函数助手以及更专业的好东西:函数绑定、javascript 模板、创建快速索引、深度相等测试等。

安装

npm i underscore

如下图:


  1. Async

npm 地址: https://www.npmjs.com/package/async

Async 是一个实用模块,它为使用异步 JavaScript 提供了直接、强大的功能。

安装

npm i async

案例

// for use with Node-style callbacks...
var async = require("async");

var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"};
var configs = {};

async.forEachOf(obj, (value, key, callback) => {
    fs.readFile(__dirname + value, "utf8", (err, data) => {
        if (err) return callback(err);
        try {
            configs[key] = JSON.parse(data);
        } catch (e) {
            return callback(e);
        }
        callback();
    });
}, err => {
    if (err) console.error(err.message);
    // configs is now a map of JSON data
    doSomethingWith(configs);
});

如下图:


系统模块npm集合

  1. Fs-extra

npm 地址:https://www.npmjs.com/package/fs-extra

Fs-extra 包含原版 Node.js fs 包中未包含的方法,例如 copy()、remove()、mkdirs()。

安装

npm i fs-extra

案例

const fs = require('fs-extra')

// Async with promises:
fs.copy('/tmp/myfile', '/tmp/mynewfile')
  .then(() => console.log('success!'))
  .catch(err => console.error(err))

// Async with callbacks:
fs.copy('/tmp/myfile', '/tmp/mynewfile', err => {
  if (err) return console.error(err)
  console.log('success!')
})

// Sync:
try {
  fs.copySync('/tmp/myfile', '/tmp/mynewfile')
  console.log('success!')
} catch (err) {
  console.error(err)
}

// Async/Await:
async function copyFiles () {
  try {
    await fs.copy('/tmp/myfile', '/tmp/mynewfile')
    console.log('success!')
  } catch (err) {
    console.error(err)
  }
}

copyFiles()

如下图:


  1. Node-dir

npm 地址:https://www.npmjs.com/package/node-dir

用于一些常见目录和文件操作的模块,包括用于获取文件数组、子目录以及读取和处理文件内容的方法。

安装

npm i node-dir

案例

// display contents of files in this script's directory
dir.readFiles(__dirname,
    function(err, content, next) {
        if (err) throw err;
        console.log('content:', content);
        next();
    },
    function(err, files){
        if (err) throw err;
        console.log('finished reading files:', files);
    });
 
// display contents of huge files in this script's directory
dir.readFilesStream(__dirname,
    function(err, stream, next) {
        if (err) throw err;
        var content = '';
        stream.on('data',function(buffer) {
            content += buffer.toString();
        });
        stream.on('end',function() {
            console.log('content:', content);
            next();
        });
    },
    function(err, files){
        if (err) throw err;
        console.log('finished reading files:', files);
    });
 
// match only filenames with a .txt extension and that don't start with a `.´
dir.readFiles(__dirname, {
    match: /.txt$/,
    exclude: /^\./
    }, function(err, content, next) {
        if (err) throw err;
        console.log('content:', content);
        next();
    },
    function(err, files){
        if (err) throw err;
        console.log('finished reading files:',files);
    });
 
// exclude an array of subdirectory names
dir.readFiles(__dirname, {
    exclude: ['node_modules', 'test']
    }, function(err, content, next) {
        if (err) throw err;
        console.log('content:', content);
        next();
    },
    function(err, files){
        if (err) throw err;
        console.log('finished reading files:',files);
    });
 
 
// the callback for each file can optionally have a filename argument as its 3rd parameter
// and the finishedCallback argument is optional, e.g.
dir.readFiles(__dirname, function(err, content, filename, next) {
        console.log('processing content of file', filename);
        next();
    });

如下图:


  1. Node-cache

npm 地址:https://www.npmjs.com/package/node-cache

一个简单的缓存模块,具有设置、获取和删除方法,工作方式有点像 memcached。密钥可以有一个超时 (ttl),之后它们就会过期并从缓存中删除。

安装

npm i node-cache

案例

myCache = new NodeCache( { stdTTL: 100 } )
 
// Date.now() = 1456000500000
myCache.set( "ttlKey", "MyExpireData" )
myCache.set( "noTtlKey", "NonExpireData", 0 )
 
ts = myCache.getTtl( "ttlKey" )
// ts wil be approximately 1456000600000
 
ts = myCache.getTtl( "ttlKey" )
// ts wil be approximately 1456000600000
 
ts = myCache.getTtl( "noTtlKey" )
// ts = 0
 
ts = myCache.getTtl( "unknownKey" )
// ts = undefined

如下图:


其他npm集合

  1. Helmet

npm 地址: https://www.npmjs.com/package/helmet

通过设置各种 HTTP 标头来帮助我们保护我们的应用程序。它是 Connect 风格的中间件,与 Express 等框架兼容。

安装

npm i helmet

案例

import * as helmet from "helmet";

// ...

app.use(helmet.contentSecurityPolicy());
app.use(helmet.crossOriginEmbedderPolicy());
app.use(helmet.crossOriginOpenerPolicy());
app.use(helmet.crossOriginResourcePolicy());
app.use(helmet.dnsPrefetchControl());
app.use(helmet.expectCt());
app.use(helmet.frameguard());
app.use(helmet.hidePoweredBy());
app.use(helmet.hsts());
app.use(helmet.ieNoOpen());
app.use(helmet.noSniff());
app.use(helmet.originAgentCluster());
app.use(helmet.permittedCrossDomainPolicies());
app.use(helmet.referrerPolicy());
app.use(helmet.xssFilter());

如下图:


  1. PDFKit

npm 地址: https://www.npmjs.com/package/pdfkit

DFKit 是一个用于 Node 和浏览器的 PDF 文档生成库,可以轻松创建复杂的、多页的、可打印的文档。

安装

npm i pdfkit

案例

const PDFDocument = require('pdfkit');
const fs = require('fs');

// Create a document
const doc = new PDFDocument();

// Pipe its output somewhere, like to a file or HTTP response
// See below for browser usage
doc.pipe(fs.createWriteStream('output.pdf'));

// Embed a font, set the font size, and render some text
doc
  .font('fonts/PalatinoBold.ttf')
  .fontSize(25)
  .text('Some text with an embedded font!', 100, 100);

// Add an image, constrain it to a given size, and center it vertically and horizontally
doc.image('path/to/image.png', {
  fit: [250, 300],
  align: 'center',
  valign: 'center'
});

// Add another page
doc
  .addPage()
  .fontSize(25)
  .text('Here is some vector graphics...', 100, 100);

// Draw a triangle
doc
  .save()
  .moveTo(100, 150)
  .lineTo(100, 250)
  .lineTo(200, 250)
  .fill('#FF3300');

// Apply some transforms and render an SVG path with the 'even-odd' fill rule
doc
  .scale(0.6)
  .translate(470, -380)
  .path('M 250,75 L 323,301 131,161 369,161 177,301 z')
  .fill('red', 'even-odd')
  .restore();

// Add some text with annotations
doc
  .addPage()
  .fillColor('blue')
  .text('Here is a link!', 100, 100)
  .underline(100, 100, 160, 27, { color: '#0000FF' })
  .link(100, 100, 160, 27, 'http://google.com/');

// Finalize PDF file
doc.end();

如下图:



  1. CSV

npm 地址: https://www.npmjs.com/package/csv

全面的 CSV 套件结合了 4 个经过良好测试的包来生成、解析、转换和字符串化 CSV 数据。

安装

npm i csv

案例

// Import the package
import * as csv from '../lib/index.js';

// Run the pipeline
csv
// Generate 20 records
  .generate({
    delimiter: '|',
    length: 20
  })
// Transform CSV data into records
  .pipe(csv.parse({
    delimiter: '|'
  }))
// Transform each value into uppercase
  .pipe(csv.transform((record) => {
    return record.map((value) => {
      return value.toUpperCase();
    });
  }))
// Convert objects into a stream
  .pipe(csv.stringify({
    quoted: true
  }))
// Print the CSV stream to stdout
  .pipe(process.stdout);

如下图:


  1. Marked

npm 地址: https://www.npmjs.com/package/marked

用于解析 Markdown 的低级编译器,无需长时间缓存或阻塞。

安装

npm i marked

案例

<!doctype html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>Marked in the browser</title>
</head>
<body>
  <div id="content"></div>
  <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
  <script>
    document.getElementById('content').innerHTML =
      marked.parse('# Marked in the browser\n\nRendered by **marked**.');
  </script>
</body>
</html>

如下图:



  1. Randomcolor

npm 地址: https://www.npmjs.com/package/randomcolor

用于生成有吸引力的随机颜色的小脚本。我们可以传递一个选项对象来影响它产生的颜色类型。

安装

npm i randomcolor

案例

<!doctype html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>Marked in the browser</title>
</head>
<body>
  <div id="content"></div>
  <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
  <script>
    document.getElementById('content').innerHTML =
      marked.parse('# Marked in the browser\n\nRendered by **marked**.');
  </script>
</body>
</html>

如下图:


  1. Pluralize

npm 地址: https://www.npmjs.com/package/pluralize

该模块使用预先定义的规则列表,按顺序应用,以单数或复数给定的单词。在很多情况下这很有用,例如,任何基于用户输入的自动化。

安装

npm i pluralize

案例

pluralize('test') //=> "tests"
pluralize('test', 0) //=> "tests"
pluralize('test', 1) //=> "test"
pluralize('test', 5) //=> "tests"
pluralize('test', 1, true) //=> "1 test"
pluralize('test', 5, true) //=> "5 tests"
pluralize('蘋果', 2, true) //=> "2 蘋果"
 
// Example of new plural rule:
pluralize.plural('regex') //=> "regexes"
pluralize.addPluralRule(/gex$/i, 'gexii')
pluralize.plural('regex') //=> "regexii"
 
// Example of new singular rule:
pluralize.singular('singles') //=> "single"
pluralize.addSingularRule(/singles$/i, 'singular')
pluralize.singular('singles') //=> "singular"
 
// Example of new irregular rule, e.g. "I" -> "we":
pluralize.plural('irregular') //=> "irregulars"
pluralize.addIrregularRule('irregular', 'regular')
pluralize.plural('irregular') //=> "regular"
 
// Example of uncountable rule (rules without singular/plural in context):
pluralize.plural('paper') //=> "papers"
pluralize.addUncountableRule('paper')
pluralize.plural('paper') //=> "paper"
 
// Example of asking whether a word looks singular or plural:
pluralize.isPlural('test') //=> false
pluralize.isSingular('test') //=> true

如下图:


最后

一台电脑,一个键盘,尽情挥洒智慧的人生;

几行数字,几个字母,认真编写生活的美好;

一 个灵感,一段程序,推动科技进步,促进社会发展。

创作不易,喜欢的老铁们加个关注,点个赞,打个赏,后面会不定期更新干货和技术相关的资讯,速速收藏,谢谢!你们的一个小小举动就是对小编的认可,更是创作的动力。

声明:好星座所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者Echa攻城狮所有,原文出处。若您的权利被侵害,请联系 删除。

本文链接:https://www.haoxingzuo.com/w/33053.html