javascript 最佳实践 - 管理脚本/代码重用

标签 javascript code-reuse

来自阅读很多文章,比如How do I include a JavaScript file in another JavaScript file? - 显然不可能将一个脚本包含到另一个脚本中。

所以这是我的问题 - 我担心 JS 膨胀。或者有太多未使用的代码加载到不使用/不需要它的页面。但是,有时我会需要在多个页面上使用相同的功能,但不是所有页面。

如果我们考虑将在线应用程序的逻辑部分制作成对象,例如“客户”或“元素”——我们可能会有一堆特定于这些“对象”的代码。

例如,我可以有一组“个人资料”代码,允许我管理我的个人资料,它可能有多个使用 Ajax 的 div-pop-ups,为了这个例子,让我们说我有几个控制我的“送货地址”的函数,它们控制 div 弹出窗口,它们处理特定于该信息的 Ajax。 - 可以说我为此目的有 4 个功能。但这只是一个更大的“profile.js”文件的一部分,该文件处理我所有的“profile”crud ...

现在我有了应用程序的另一部分——比如购物车——我需要允许用户访问“送货地址”div-pop-up 和所有 Ajax 功能。

我想我只想重用 profile.js 中的那些函数——因为“重写”做同样事情的代码似乎是“糟糕的形式”——因为那样我就会有很长的时间术语代码维护问题 - 如果我进行了更改 - 我必须记住我使用该代码的所有地方。

所以如果让我推断出“最佳实践”——考虑到这些技术如何工作的局限性——我不能像在服务器端那样“嵌套”和重用 js包括或 CSS。

我的代码将不得不分解成单独的文件,并且(理论上)将使用许多较小的 .js 文件

所以我的<head>看起来像这样

<head>
<script src='smallfile_1.js'...>
<script src='smallfile_2.js'...>
...
<script src='smallfile_10.js'...>
<head>

和“如果”我需要在另一页中的一个部分

<head>
<script src='that_other_object_/smallfile_3.js'...>
</head>

...对这些较小文件的重复 TTP 调用不会成为开销吗?在流量大的应用程序中 - 网络和服务器开销似乎开始成为一个问题,或者只是小题大做?

对于 10 个 5k 文件的 100k 请求,真的等于 - 100k 请求对于 1 个 50k 文件吗?

现在我把它写出来了 - 想想看 - 页面上的每个图像也是对服务器的单独调用 - 所以也许我正在制造一个问题这不是问题。

我能否就其他人在跨模块重用 JS 代码方面所做的工作获得一些反馈 - 而无需跨模块共享“巨大”文件。

最佳答案

答案很简单 - 您创建一个库或一个包含您拥有的所有实用功能的框架,然后在您的所有页面上加载该库。由于浏览器缓存,客户端唯一需要检索该文件的时间是在初始加载时,因此即使文件相当大,客户端也只需要加载一次。

这意味着某些网站(例如 Stack Overflow)仅使用一个主 JavaScript 文件,该文件包含网站上所有页面正常运行所需的大部分代码。尽管每个页面可能只需要几个功能,但浏览器缓存意味着这种方法会更有效。

另一种防止这种情况发生的方法是创建一个小的服务器端文件,该文件将动态组合服务器上的多个 JavaScript,并在客户端请求它们时提供它们,例如:

<script src="/resource/js?load=file1,file2,file3" type="text/javascript></script>

但是,不推荐使用此方法,因为它会破坏浏览器缓存。因此,最佳做法是通常维护一个大型主 JavaScript 文件,其中包含网站运行所需的所有代码,该文件在初始页面加载时缓存。

关于javascript 最佳实践 - 管理脚本/代码重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4976832/

相关文章:

react-native - 如何在 React Native 中编写和建模可重用的业务逻辑

javascript - AngularJS的依赖注入(inject)中 ".config([...])"中的方括号是什么意思

javascript - 我无法理解这个 useEffect 如何通过 fetch 运行

javascript - 如何进行可重用的 proptype 验证?

java - 我如何构建多线程代码以更好地重用java中的代码?

android - 在所有 Activity 中重用标题 UI 设计和功能

java - 重用代码 - Java

javascript - 如何使用 javascript(和 Graph API?)仅检索并输出我的帖子上的最新 Facebook 评论

php - Firefox 中的表单动态被破坏

javascript - 如果数组中存在重复值,则提醒用户