【问题标题】:esbuild Not Including JS Functions Called by HTMLesbuild 不包含 HTML 调用的 JS 函数
【发布时间】:2021-07-15 17:37:09
【问题描述】:

我在主入口js文件中有几个js函数,用户交互后只有html菜单调用,显然esbuild认为没有用到,像这样:

HTML:

<a id="ndb" onmouseenter="keeptopbar()" onmouseleave="reltopbar()" onclick="askuser('newform')">FORM</a>

script.js:

function askuser(inpv) { 
    var st = "";
    if (inpv === 'newform'){

编辑:我尝试在这些函数上添加“导出”,但没有成功。

是否有一个选项可以包含在 package.json 中以使 esbuild 包含在 main-entry JS 文件中找到的所有函数,或者任何其他技巧?

【问题讨论】:

  • 不使用 addEventListener 吗?
  • 我不这么认为,几年前我写了那个 HTML,我记得我没有那个选择——有些函数在其他方面不起作用,一切都在一个 .. .equilibrium 以避免许多 HTML/JS 错误...

标签: javascript html esbuild


【解决方案1】:

您可以将函数创建为全局对象的属性:

window.keeptopbar = function(){
    //...
};

window.reltopbar = function(){
    //...
};

window.askuser = function(inpv){
    //...
};

这样,esbuild 的 tree shaking 不会删除它们,并且您还可以确保函数是全局的。

【讨论】:

  • 您将如何从 window.xxx 内部访问这些功能之一?我试过window.xxx.myFunction() 找不到。
【解决方案2】:

您可以尝试让 ESBuild 相信这些功能将在您的 JS 中使用。这可能有效:

if (Math.random() < 0) console.log(askuser);

【讨论】:

  • 是的,这就是我现在想尝试的(不是确切的代码),也许还有更简单的东西......
  • 但这并没有奏效。我也直接试了,不用console.log。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
相关资源
最近更新 更多