Skip to content

JavaScript 库

JavaScript 的生态系统非常丰富,提供了许多库和框架,帮助开发人员更高效、更有效地构建复杂的应用程序。

虽然这些术语有时可以互换使用,但它们之间存在概念上的区别:

  • 库 (Libraries): 预先编写好的代码集合(函数、对象),提供特定的功能。您在应用程序代码中调用库代码。示例:Lodash 等工具库,date-fns 等日期处理库。
  • 框架 (Frameworks): 为构建应用程序提供结构或蓝图。它们通常规定应用程序的整体架构和流程。您的应用程序代码要融入框架。示例:React、Vue.js、Angular 等 UI 框架。

现代 JavaScript 开发通常涉及两者的结合。

这些用于构建动态用户界面和单页应用(SPA):

  • React: 一个用于构建用户界面的 JavaScript 库,由 Facebook 开发。以其基于组件的架构和虚拟 DOM 而闻名。
  • Vue.js: 一个用于构建用户界面的渐进式 JavaScript 框架。以其友好的学习曲线和灵活性而闻名。
  • Angular: 一个用于构建 SPA 的综合平台和框架,由 Google 开发。它更具规范性,并提供了一整套工具。
  • Svelte: 一种较新的方法,将您的组件编译成直接更新 DOM 的高效命令式代码,而不是使用虚拟 DOM。

尽管 jQuery 曾一度在 DOM 操作和 AJAX 方面占据主导地位,但现代 JavaScript (ES6+) 和这些 UI 框架在很大程度上已取代了它在新应用开发中的作用。然而,在许多遗留项目中仍然可以找到 jQuery。

这些库为常见的编程任务提供了有用的函数:

  • Lodash / Underscore.js: 提供各种用于处理数组、对象、字符串、数字和函数的工具函数(例如,_.debounce、_.cloneDeep、_.groupBy)。

现代 JavaScript 已经包含了许多实用功能(例如,map、filter、reduce 等数组方法),这在一定程度上减少了对这类库的需求,但它们仍然提供了便利和高级功能。

在现代 JavaScript 开发中,库和框架通常使用包管理器和构建工具进行管理:

  • 包管理器 (npm, Yarn): 用于安装、更新和管理项目依赖项(库)的工具。它们使用 package.json 文件来跟踪项目依赖。
  • 模块打包器 (Webpack, Vite, Parcel): 这些工具获取您的 JavaScript 模块(以及 CSS 和图像等其他资产)及其依赖项,并将它们打包成优化后的文件以供浏览器使用。

这个工作流程允许开发人员使用模块化代码,并轻松集成第三方库。

使用 npm 安装库的示例:

# 在你的项目目录中使用终端
npm install lodash

然后,您可以在 JavaScript 文件中导入和使用它:

import _ from 'lodash';
const numbers = [1, 2, 3, 4, 5];
const sum = _.sum(numbers);
console.log(sum); // 15

CDN 是一个由服务器组成的网络,在全球多个地理位置托管文件副本(如 JavaScript 库、CSS 文件、图像)。使用 CDN 可以提高网站加载速度,因为用户可以从离他们更近的服务器下载文件,而且如果其他网站使用了相同的 CDN 链接,浏览器可能已经缓存了该库的版本。

虽然包管理器和打包器是应用开发的标准方式,但 CDN 对于以下情况仍然很有用:

  • 在简单的 HTML 文件中快速测试库。
  • 构建过程过于繁琐的小型项目。
  • 包含那些通常会被缓存的库,例如用于特定插件的旧版本 jQuery。

常用的 JavaScript 库 CDN 包括 cdnjs、jsDelivr 和 unpkg。

要从 CDN 使用库,您可以在 HTML 文件中包含一个 <script> 标签:

<!DOCTYPE html>
<html>
<head>
<title>CDN Example</title>
<!-- Example: Including Lodash from jsDelivr CDN -->
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
</head>
<body>
<script>
const arr = [1, [2, [3, [4]], 5]];
const flattenedArr = _.flattenDeep(arr);
console.log(flattenedArr); // Output: [1, 2, 3, 4, 5]
</script>
</body>
</html>

决定使用库或框架时:

  • 评估需求: 原生 JavaScript 是否足够满足需求,或者库/框架是否能为您的任务带来显著优势?
  • 流行度和维护: 维护良好且流行的库更有可能拥有良好的文档、社区支持和定期更新。
  • 包大小: 注意库会增加您的应用程序大小,尤其对于对性能要求高的应用程序。BundlePhobia 等工具可以帮助分析这一点。
  • 学习曲线: 考虑学习和有效使用库/框架所需的时间。

始终参考库或框架的官方文档,以获取最准确和最新的使用信息。