HTMX新加载页面中外库失效:求更简洁解决方案及优势说明
HTMX动态加载脚本依赖失效的简洁解决方案
一、最简解决方案
直接在首页预加载ag-grid-community.min.js,移除动态页面中的外部脚本引用,仅保留初始化逻辑:
修改后的首页代码
<h1>Welcome to the Base Page</h1> <button hx-get="sample_page" hx-trigger="click" hx-target="#content">Load Table Page</button> <div id="content"></div> <script defer src="persist@3.min.js"></script> <script defer src="alpine@3.14.min.js"></script> <script src="htmx.min.js"></script> <!-- 提前预加载ag-grid依赖 --> <script defer src="ag-grid-community.min.js"></script>
修改后的sample_page代码
<div id="myGrid" style="height: 500px; width: 100%"></div> <script> const gridOptions = { rowData: [{make: "Tesla", model: "Model Y", price: 64950, electric: true}], columnDefs: [{field: "make"}, {field: "model"}, {field: "price"}, {field: "electric"}] }; const myGridElement = document.querySelector('#myGrid'); agGrid.createGrid(myGridElement, gridOptions); </script>
二、该方案优于原示例的原因
- 彻底解决时序问题:原示例中,动态页面的内联初始化脚本会在外部
ag-grid-community.min.js加载完成前执行,导致agGrid未定义报错。预加载后,依赖全局就绪,初始化逻辑可直接执行。 - 避免重复资源请求:原示例每次点击加载按钮都会重新请求
ag-grid-community.min.js,预加载仅请求一次,减少带宽消耗和浏览器资源占用。 - 代码逻辑更清晰:无需额外编写脚本加载的回调、事件监听等冗余代码,依赖管理更直观,维护成本更低。
内容的提问来源于stack exchange,提问作者Rinshan Kolayil
相关产品推荐
相关产品推荐

