[英]Is this method of conditional javascript loading of any value?
我正在為Web應用程序構建多頁前端。 UI的JavaScript最少,但是我知道會有很多JavaScript可以處理后端,因此我正在竭盡所能,以使其盡可能稀疏和有限。
我只想使用一個縮小的js文件有條件地同步執行javascript。 我有一些全局函數,但是大多數代碼是特定於頁面的。 每個頁面在body元素中都有頁面的ID。 例如,about.html具有以下代碼<html>...<body id="about">...</body></html>
。
我知道加載JavaScript的各種異步方法,例如require.js
甚至$.getScript
,但是由於種種原因,我試圖避免這種路由。 因為我正在預處理HTML,所以我也不想將每個頁面的腳本分解(盡管可以),因為它是一個小文件,並且我不想創建一堆不同的<script>
標簽。 我當前的解決方案是有條件地執行每頁所需的javascript,而我的操作類似於以下示例:
$(document).ready(function(){
//global.js code
if(document.body.id==='about'){
// about.js code
}
if(document.body.id==='home'){
//home.js code
}
// etc.
});
在構建過程中,所有js都存儲在單獨的文件中,因此它在外觀上不像在這里看起來那樣精巧,因為條件體內只有一個include filename.js
。
條件防止不必要的代碼在每個頁面上執行。 但是,當我這樣做時,突然意識到,以這種方式進行操作實際上可能沒有任何好處。 我讀到$(window).load
或$('body').load
事件可能會導致與$(document).ready
發生沖突,而且它們的速度肯定都較慢window.onload
(我測試過)。 我想那將是我首選的解決方法。 我讀的是真的嗎? 和/或,無論如何,我正在做的事情有用嗎?
對於特定於頁面的事件,為什么不只在元素引用中添加正文ID?
$( '#about .do-something' ).on()...
而且,如果您實際上是逐頁執行基於非事件的代碼
if( $( '#about' ).length ) { // trigger your code here }
它與您的解決方案並不太相似,只是它不需要您保留有關在哪里執行什么代碼的清單。 無論哪種方式,兩種解決方案都會被緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.