javascript - 与 webpack 捆绑后,纠正 Javascript 错误,因为元素不存在于当前页面中

标签 javascript webpack ecmascript-6

<分区>

我目前在一个没有任何 bundler 的项目中使用 webpack。它有几个 html 页面和一些与每个页面关联的 javascript 文件。

捆绑这些文件后,我发现我收到错误,因为“页面 B”上不存在“元素 A”,因此会引发错误。

这里最好的方法是什么?检查每个事件监听器的“如果”是一个好习惯吗?这对我来说似乎有点不对劲。有没有更好的办法?创建一个包含所有 DOM 元素的对象并导入它?

我想我是在问这个特定案例是否有最佳实践。

最佳答案

你基本上有三个选择:

  1. 创建仅包含与该页面相关的脚本的每页包。如果多个页面使用了很多脚本代码,这意味着每个包都将包含该脚本代码;如果用户在您的项目中逐页移动,他们将重新下载这些公共(public)位作为每个单独包的一部分。与选项 #2 相比, bundle 的那些冗余部分将消耗更多的带宽和缓存空间(再次假设您的项目中的页面到页面导航)。

  2. 创建一个所有页面都使用的 uber-bundle,并执行您提到的检查元素是否存在的检查,这可以很容易地封装在一个函数中。这意味着用户将为他/她可能永远不会访问的页面加载脚本代码。

  3. 两者结合:在每个页面上使用两个包,一个包含所有(或大多数)页面使用的所有常用脚本,另一个包含每页脚本。

您选择哪一个完全取决于您。需要考虑的是项目中页面到页面导航的程度、 bundle 的总体大小、使用或多或少的带宽和缓存空间,以及可能还有一些我没有想过要列出的事情。 :-)

关于javascript - 与 webpack 捆绑后,纠正 Javascript 错误,因为元素不存在于当前页面中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53747553/

相关文章:

javascript - 将 e.location 字符串拆分为变量

javascript - JQuery 在 foreach 循环中选择一个元素

javascript - 将数组中的字符串值连接到 MongoDB 的单个字段中

reactjs - 如何在同构 React 上导入 CSS 文件 - Webpack

javascript - ES6 : Why does my misplacement of the parenthesis still produce same result?

javascript - firefox:navigator.geolocation.getCurrentPosition 不再成功

javascript - 巴别塔 7 : Uncaught ReferenceError after transpiling a module

javascript - 使用 Nuxt 生成的自定义 404 页面仅在开发模式下工作

reactjs - 如何为 useReducer 键入 state 和 dispatch - typescript 和 react

javascript - 访问内部属性名称以计算 ES6 中的新属性