返回

按需加载/剔除的几种方式:技巧运用的神奇之处

前端

正文

前言

在前端工程中,按需加载/剔除的方案,应该不是一个陌生的话题。

通常情况下,按需引入区别于异步加载,但是本文会统一讲述这些「有需要时」才去拿取或剔除相关资源的类似场景,因此标题中的「按需引入」代表了这些做法的泛概念。

按需引入是目前业界应用最广泛的手段之一,尤其是在如今前端架构的“分治”理念逐步风靡的背景下,按需引入显得尤为重要。

接下来,我们就来介绍一下按需引入的几种方式。

按需引入的几种方式

1. 客户端路由方案

客户端路由方案可能是大家最熟悉的方式。

在客户端路由方案中,我们可以通过import()函数来按需加载模块。例如:

import(/* webpackChunkName: "about" */ './about.js').then((module) => {
  // 在这里使用 about 模块
});

在上述代码中,我们将通过 import()函数来按需加载 about.js 模块。

当然,我们也可以通过 webpack 的 require.ensure() 函数来实现按需加载,例如:

require.ensure(['./about.js'], function(require) {
  // 在这里使用 about 模块
});

2. 服务端路由方案

服务端路由方案也是一种比较常用的按需引入方式。

在服务端路由方案中,我们可以通过服务端渲染来实现按需加载。例如,在 Node.js 中,我们可以使用 Express 来实现服务端渲染,代码如下:

app.get('/about', (req, res) => {
  const aboutHtml = require('./about.js').renderToString();
  res.send(aboutHtml);
});

在上述代码中,我们将通过 require('./about.js') 来按需加载 about.js 模块,然后使用 renderToString() 函数将 about.js 模块渲染成 HTML 字符串,最后通过 res.send() 函数将 HTML 字符串发送给客户端。

3. 预加载方案

预加载方案也是一种常见的按需引入方式。

在预加载方案中,我们可以通过 <link> 标签的 preload 属性来实现预加载。例如:

<link rel="preload" href="./about.js" as="script">

在上述代码中,我们将通过 <link> 标签的 preload 属性来预加载 about.js 模块。

4. 懒加载方案

懒加载方案也是一种比较常见的按需引入方式。

在懒加载方案中,我们可以通过 <script> 标签的 defer 属性或 async 属性来实现懒加载。例如:

<script defer src="./about.js"></script>

<script async src="./about.js"></script>

在上述代码中,我们将通过 <script> 标签的 defer 属性或 async 属性来懒加载 about.js 模块。

按需引入的优缺点

按需引入虽然有很多优点,但是也有着缺点。

优点

  • 按需引入可以减少页面加载时间。
  • 按需引入可以减少内存占用。
  • 按需引入可以提高代码的可维护性。

缺点

  • 按需引入可能会增加页面加载延迟。
  • 按需引入可能会增加代码复杂度。

总结

按需引入是一种非常有用的技术,可以显著提高页面的性能和用户体验。

在实际项目中,我们可以根据项目的实际情况来选择合适的按需引入方式。

参考资料