百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

现代流行的 npm包大全(上)

liuian 2025-02-07 18:22 15 浏览

大家好,我是Echa。

在我们繁忙的日程和紧迫的项目期限内,选择能够提高工作效率的工具,就显得至关重要。那作为程序员开发包管理工具那是必不可少的。

小编记得2020年3月17日,Github宣布收购npm,GitHub现在已经保证npm将永远免费。

今天我们聊聊NPM。若Node.js没有NPM,会怎样呢?

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

由于内容有点多,现代流行的 npm包大全 分上下两篇

全文大纲

  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

官网地址:http://www.npmjs.com

Gihub:https://github.com/npm/npm

NPM 是 Node.js 的包管理工具( Node package manager)。能解决NodeJS代码部署上的很多问题。常见的使用场景有以下几种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

NPM为开发者们打开了整个JavaScript的世界。它是世界上最大的软件注册机构,每周下载量约为30亿次。该注册表包含600,000多个包(构建代码块)。

如下图:

前端框架npm 集合

  1. React

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

React 使用虚拟 DOM 将页面的各个部分作为单独的组件进行管理,允许我们在不刷新整个页面的情况下刷新组件。通常与 React-dom 和 React-router-dom 一起使用。

安装

npm i react

案例

import { useState } from 'react';
import { createRoot } from 'react-dom/client';

function Counter() {
  const [count, setCount] = useState(0);
  return (
    <>
      

{count}

); } const root = createRoot(document.getElementById('root')); root.render();

如下图:

  1. Vue

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

Vue 专注于使编写 Web 应用程序更快、更容易、更愉快的特性。它有很棒的文档。通常与 Vue-router 和 Vuex 一起使用。

安装

npm i vue

如下图:

  1. Svelte

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

Svelte 是一种构建 Web 应用程序的新方法。它是一个编译器,它获取你的声明性组件并将它们转换为高效的 JavaScript,从而通过手术方式更新 DOM。

其他值得注意的框架包括 Angular、Ember、Backbone、Preact 等。你可以用它们中的任何一个来创造奇迹,黄金法则是提前学习现代 JS(ES6 及更高版本)。

安装

npm i svelte

如下图:

样式框架npm 集合

  1. Bootstrap

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

世界上最流行的UI框架,用于构建响应式、移动优先的网站。直观且功能强大,但体积相对较大。许多现代 UI 工具包都基于它,例如 React Bootstrap 或 Reactstrap。

安装

npm i bootstrap

如下图:


  1. Tailwind

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

用于快速 UI 开发的低级、实用程序优先的 CSS 框架。从头开始构建,可定制。

安装

npm i tailwindcss

如下图:


  1. Styled-components

npm 地址:
https://www.npmjs.com/package/styled-components

CSS-in-JS 工具,弥合了组件和样式之间的差距,提供了许多功能,让我们以功能性和可重用的方式启动和运行样式化组件。

其他出色的解决方案包括 Foundation、Bulma、Materialize 和 Ant Design。如果喜欢写 Vanilla CSS,我们可以使用一些 CSS 扩展语言,比如 SASS,来扩展它的特性。

安装

npm i styled-components

如下图:



后端框架npm 集合

  1. Express

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

用于 Node.js 的快速、独立、简约的 Web 框架。它相对较小,具有许多可用作插件的功能。通常被称为 Node.js 的标准服务器框架。

安装

npm i  express

案例

const express = require('express')
const app = express()

app.get('/', function (req, res) {
  res.send('Hello World')
})

app.listen(3000)

如下图:


  1. Hapi

npm 地址:
https://www.npmjs.com/package/@hapi/hapi

Hapi 最初用于 Express 框架。使用 Hapi,我们可以构建功能强大、可扩展的应用程序,而且开销最小,而且功能齐全,开箱即用。安装

npm i  @hapi/hapi

如下图:


  1. Sails

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

Sails 是 Node.js 最流行的 MVC 框架,支持现代应用程序的要求:具有可扩展、面向服务架构的数据驱动 API。

与前端框架一样,也有很多后端替代方案,例如 Adonis 和 Koa。选择一个满足您需求的工具,然后学习它。

npm i  sails

如下图:


CORS和请求 npm 集合

  1. Cors

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

一个Node.js 中间件,用于提供 Connect/Express 中间件,可用于启用具有各种选项的跨域资源共享。

npm i  cors

案例

var express = require('express')
var cors = require('cors')
var app = express()
 
app.use(cors())
 
app.get('/products/:id', function (req, res, next) {
  res.json({msg: 'This is CORS-enabled for all origins!'})
})
 
app.listen(80, function () {
  console.log('CORS-enabled web server listening on port 80')
})

如下图:


  1. Axios

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

用于浏览器和 Node.js 的基于 Promise 的 HTTP 客户端。与 JS 内置的 Fetch API 相比,它易于设置、直观且简化了很多东西。

npm i  axios

案例

import axios from 'axios';
//const axios = require('axios'); // legacy way

// Make a request for a user with a given ID
axios.get('/user?ID=12345')
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .finally(function () {
    // always executed
  });

// Optionally the request above could also be done as
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .finally(function () {
    // always executed
  });

// Want to use async/await? Add the `async` keyword to your outer function/method.
async function getUser() {
  try {
    const response = await axios.get('/user?ID=12345');
    console.log(response);
  } catch (error) {
    console.error(error);
  }
}

如下图:

  1. Body-parser

npm 地址:
https://www.npmjs.com/package/body-parser

正文解析中间件,它提取传入请求流的整个正文部分并将其公开在 req.body 上,作为更易于交互的东西。

npm i body-parser

案例

var express = require('express')
var bodyParser = require('body-parser')

var app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

app.use(function (req, res) {
  res.setHeader('Content-Type', 'text/plain')
  res.write('you posted:\n')
  res.end(JSON.stringify(req.body, null, 2))
})

如下图:


API 服务 npm 集合

  1. Restify

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

一个 Node.js Web 服务框架,经过优化,可构建语义正确的 RESTful Web 服务,以供大规模生产使用。Restify 针对自身和性能进行了优化。

npm i restify

案例

//Server
var restify = require('restify');

const server = restify.createServer({
  name: 'myapp',
  version: '1.0.0'
});

server.use(restify.plugins.acceptParser(server.acceptable));
server.use(restify.plugins.queryParser());
server.use(restify.plugins.bodyParser());

server.get('/echo/:name', function (req, res, next) {
  res.send(req.params);
  return next();
});

server.listen(8080, function () {
  console.log('%s listening at %s', server.name, server.url);
});

//Client
var assert = require('assert');
var clients = require('restify-clients');

var client = clients.createJsonClient({
  url: 'http://localhost:8080',
  version: '~1.0'
});

client.get('/echo/mark', function (err, req, res, obj) {
  assert.ifError(err);
  console.log('Server returned: %j', obj);
});

如下图:


  1. GraphQL

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

API 的查询语言和使用现有数据完成这些查询的运行时。提供 API 中数据的完整描述,让客户能够准确地询问他们需要什么。

npm i graphql

案例

var source = '{ hello }';

graphql({ schema, source }).then((result) => {
  // Prints
  // {
  //   data: { hello: "world" }
  // }
  console.log(result);
});

如下图:


Web sockets npm 集合

  1. Socket.io

npm 地址:
https://www.npmjs.com/package/socket.io

Socket.IO 支持实时、双向和基于事件的通信。它适用于所有平台、浏览器或设备,同样注重可靠性和速度。

npm i socket.io

案例

const server = require('http').createServer();
const io = require('socket.io')(server);
io.on('connection', client => {
  client.on('event', data => { /* … */ });
  client.on('disconnect', () => { /* … */ });
});
server.listen(3000);

如下图:


  1. WS

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

简单易用、快速且经过全面测试的 WebSocket 客户端和服务器实现。双向和基于事件的通信。它适用于所有平台、浏览器或设备,同样注重可靠性和速度。

npm i ws

案例

import WebSocket from 'ws';

const ws = new WebSocket('ws://www.host.com/path');

ws.on('error', console.error);

ws.on('open', function open() {
  ws.send('something');
});

ws.on('message', function message(data) {
  console.log('received: %s', data);
});

如下图:


记录器npm集合

  1. Morgan

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

具体来说,它是一个 HTTP 请求记录器,用于存储 HTTP 请求并让我们简要了解应用程序的使用方式以及可能存在的错误。

npm i morgan

案例

var express = require('express')
var morgan = require('morgan')
 
var app = express()
 
app.use(morgan('combined'))
 
app.get('/', function (req, res) {
  res.send('hello, world!')
})

如下图:


  1. Winston

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

几乎所有内容的记录器,支持多种运输方式。比 Morgan 存在的时间更长,它还拥有更大的维护者社区和更多的下载量。

npm i winston

案例

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  defaultMeta: { service: 'user-service' },
  transports: [
    //
    // - Write all logs with importance level of `error` or less to `error.log`
    // - Write all logs with importance level of `info` or less to `combined.log`
    //
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' }),
  ],
});

//
// If we're not in production then log to the `console` with the format:
// `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
//
if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console({
    format: winston.format.simple(),
  }));
}

如下图:


数据库工具npm集合

  1. Mongoose

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

Mongoose 是一个 MongoDB 对象建模工具,旨在在异步环境中工作。Mongoose 支持 Promise 和回调。

npm i mongoose

案例

import { createRequire } from "https://deno.land/std/node/module.ts";
const require = createRequire(import.meta.url);

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/test')
  .then(() => console.log('Connected!'));

如下图:


  1. Sequelize

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

Sequelize 是一个基于 Promise 的 Node.js ORM,适用于 Postgres、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。它具有可靠的事务支持、关系、急切和延迟加载、读取复制等。

npm i sequelize

如下图:


安全认证工具npm集合

  1. Passport

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

Passport 的目的是通过称为策略的可扩展插件集对请求进行身份验证。我们向 Passport 提供身份验证请求,而 Passport 提供挂钩来控制身份验证成功或失败时发生的情况。

npm i passport

案例

passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

如下图:


  1. Bcrypt

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

帮助我们散列密码的库。Bcrypt 是 Niels Provos 和 David Mazières 设计的密码散列函数,基于 Blowfish 密码并于 1999 年在 USENIX 上提出。

npm i bcrypt

案例

const bcrypt = require('bcrypt');
const saltRounds = 10;
const myPlaintextPassword = 's0/\/\P4$$w0rD';
const someOtherPlaintextPassword = 'not_bacon';
bcrypt.genSalt(saltRounds, function(err, salt) {
    bcrypt.hash(myPlaintextPassword, salt, function(err, hash) {
        // Store hash in your password DB.
    });
});

如下图:


  1. JSONWebToken

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

JSON Web 令牌 (JWT) 是一种开放的行业标准 RFC 7519 方法,用于在两方之间安全地表示声明。这个包允许我们解码、验证和生成 JWT。

npm i jsonwebtoken

案例

// sign with RSA SHA256
var privateKey = fs.readFileSync('private.key');
var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' });

如下图:


配置模块npm集合

  1. Config

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

设置存储在应用程序的配置文件中,可以被环境变量、命令行参数或外部源覆盖和扩展。

npm i config

案例

{
  "Customer": {
    "dbConfig": {
      "host": "prod-db-server"
    },
    "credit": {
      "initialDays": 30
    }
  }
}

const config = require('config');
//...
const dbConfig = config.get('Customer.dbConfig');
db.connect(dbConfig, ...);

if (config.has('optionalFeature.detail')) {
  const detail = config.get('optionalFeature.detail');
  //...
}

如下图:


  1. Dotenv

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

它一个零依赖模块,将环境变量从 .env 文件加载到 process.env 中。

npm i dotenv

案例

S3_BUCKET="YOURS3BUCKET"
SECRET_KEY="YOURSECRETKEYGOESHERE"

require('dotenv').config()
console.log(process.env) // remove this after you've confirmed it is working

如下图:


静态网站生成器npm集合

  1. Gatsby

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

现代网站生成器,可创建快速、高质量、动态的 React 应用程序,从博客到电子商务网站再到用户仪表板。很棒的插件生态系统和模板。

npm i gatsby

如下图:


  1. NextJS

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

NextJS 首先支持服务器渲染以及静态生成的内容。我们还可以将无服务器函数定义为 API 端点。

npm i next

如下图:


  1. NuxtJS

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

NuxtJS 基本上是 Vue 生态系统中的 NextJS 替代品。NuxtJS 的目标是让 Web 开发功能强大且性能卓越。

npm i nuxt

如下图:



模板语言npm集合

  1. Mustache

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

Mustache 是一种无逻辑的模板语法。它可以用于 HTML、配置文件、源代码——任何东西。它通过使用散列或对象中提供的值扩展模板中的标签来工作。

npm i mustache

案例

var view = {
  title: "Joe",
  calc: function () {
    return 2 + 4;
  }
};

var output = Mustache.render("{{title}} spends {{calc}}", view);

如下图:


  1. Handlebars

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

使用模板和输入对象来生成 HTML 或其他文本格式。Handlebars 模板看起来像带有嵌入式 Handlebars 表达式的常规文本。Handlebars 在很大程度上与 Mustache 模板兼容。

npm i handlebars

案例

var source = "

Hello, my name is {{name}}. I am from {{hometown}}. I have " + "{{kids.length}} kids:

" + "
    {{#kids}}
  • {{name}} is {{age}}
  • {{/kids}}
"; var template = Handlebars.compile(source); var data = { "name": "Alan", "hometown": "Somewhere, TX", "kids": [{"name": "Jimmy", "age": "12"}, {"name": "Sally", "age": "4"}]}; var result = template(data); // Would render: //

Hello, my name is Alan. I am from Somewhere, TX. I have 2 kids:

//
    //
  • Jimmy is 12
  • //
  • Sally is 4
  • //

如下图:


  1. EJS

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

EJS 是一种简单的模板语言,可让我们使用纯 JavaScript 生成 HTML 标记,语法简单、执行速度快、调试方便。EJS 拥有庞大的活跃用户社区,并且该库正在积极开发中。

npm i ejs

案例

<% if (user) { %>
  

<%= user.name %>

<% } %>

如下图:


图像处理npm集合

  1. Sharp

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

一个很棒的模块,可以将常见格式的大图像转换为更小的、对网络友好的 JPEG、PNG 和不同尺寸的 WebP 图像。

npm i sharp

案例

<% if (user) { %>
  

<%= user.name %>

<% } %>

如下图:


  1. GM

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

借助 Node.js 模块 GM,我们可以直接在代码中使用两种流行的工具来创建、编辑、合成和转换图像 - GraphicsMagick 和 ImageMagick。

npm i gm

案例

如下图:


  1. Cloudinary

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

专用模块可简化云服务的工作,为 Web 应用程序的整个图像管理管道提供解决方案。

npm i cloudinary

案例

cloudinary.v2.uploader.upload("/home/my_image.jpg", {upload_preset: "my_preset"}, (error, result)=>{
  console.log(result, error);
});

如下图:


最后

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

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

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

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

相关推荐

【常识】如何优化Windows 7

优化Windows7可以让这个经典系统运行更流畅,特别是在老旧硬件上。以下是经过整理的实用优化方案,分为基础优化和进阶优化两部分:一、基础优化(适合所有用户)1.关闭不必要的视觉效果右键计算机...

系统优化!Windows 11/10 必做的十个优化配置

以下是为Windows10/11用户整理的10个必做优化配置,涵盖性能提升、隐私保护和系统精简等方面,操作安全且无需第三方工具:1.禁用不必要的开机启动项操作路径:`Ctrl+S...

最好用音频剪辑的软件,使用方法?

QVE音频剪辑是一款简单实用的软件,功能丰富,可编辑全格式音频。支持音频转换、合并、淡入淡出、变速、音量调节等,无时长限制,用户可自由剪辑。剪辑后文件音质无损,支持多格式转换,便于存储与跨设备播放,满...

Vue2 开发总踩坑?这 8 个实战技巧让代码秒变丝滑

前端开发的小伙伴们,在和Vue2打交道的日子里,是不是总被各种奇奇怪怪的问题搞得头大?数据不响应、组件传值混乱、页面加载慢……别慌!今天带来8个超实用的Vue2实战技巧,每一个都能直击痛...

Motion for Vue:为Vue量身定制的强大动画库

在前端开发中,动画效果是提升用户体验的重要手段。Vue生态系统中虽然有许多动画库,但真正能做到高性能、易用且功能丰富的并不多。今天,我们要介绍的是MotionforVue(motion-v),...

CSS view():JavaScript 滚动动画的终结

前言CSSview()方法可能会标志着JavaScript在制作滚动动画方面的衰落。如何用5行CSS代码取代50多行繁琐的JavaScript,彻底改变网页动画每次和UI/U...

「大数据」 hive入门

前言最近会介入数据中台项目,所以会推出一系列的跟大数据相关的组件博客与文档。Hive这个大数据组件自从Hadoop诞生之日起,便作为Hadoop生态体系(HDFS、MR/YARN、HIVE、HBASE...

青铜时代的终结:对奖牌架构的反思

作者|AdamBellemare译者|王强策划|Tina要点运维和分析用例无法可靠地访问相关、完整和可信赖的数据。需要一种新的数据处理方法。虽然多跳架构已经存在了几十年,并且可以对...

解析IBM SQL-on-Hadoop的优化思路

对于BigSQL的优化,您需要注意以下六个方面:1.平衡的物理设计在进行集群的物理设计需要考虑数据节点的配置要一致,避免某个数据节点性能短板而影响整体性能。而对于管理节点,它虽然不保存业务数据,但作...

交易型数据湖 - Apache Iceberg、Apache Hudi和Delta Lake的比较

图片由作者提供简介构建数据湖最重要的决定之一是选择数据的存储格式,因为它可以大大影响系统的性能、可用性和兼容性。通过仔细考虑数据存储的格式,我们可以增强数据湖的功能和性能。有几种不同的选择,每一种都有...

深入解析全新 AWS S3 Tables:重塑数据湖仓架构

在AWSre:Invent2024大会中,AWS发布了AmazonS3Tables:一项专为可扩展存储和管理结构化数据而设计的解决方案,基于ApacheIceberg开放表格...

Apache DataFusion查询引擎简介

简介DataFusion是一个查询引擎,其本身不具备存储数据的能力。正因为不依赖底层存储的格式,使其成为了一个灵活可扩展的查询引擎。它原生支持了查询CSV,Parquet,Avro,Json等存储格式...

大数据Hadoop之——Flink Table API 和 SQL(单机Kafka)

一、TableAPI和FlinkSQL是什么TableAPI和SQL集成在同一套API中。这套API的核心概念是Table,用作查询的输入和输出,这套API都是批处理和...

比较前 3 名Schema管理工具

关注留言点赞,带你了解最流行的软件开发知识与最新科技行业趋势。在本文中,读者将了解三种顶级schema管理工具,如AWSGlue、ConfluentSchemaRegistry和Memph...

大数据技术之Flume

第1章概述1.1Flume定义Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。1.2Flume的优点1.可以和...