Javascript 如何使脚本加载和es6模块加载协同工作?

Javascript 如何使脚本加载和es6模块加载协同工作?,javascript,html,google-chrome,es6-modules,Javascript,Html,Google Chrome,Es6 Modules,这只会加载jquery一次: <script type="module"> import "./js/jquery.js"; import "./js/jquery.js"; </script> 导入“/js/jquery.js”; 导入“/js/jquery.js”; 以下情况也是如此: <script type="module"> import "./js/jquery.js";

这只会加载jquery一次:

<script type="module">
            import "./js/jquery.js";
            import "./js/jquery.js";
</script>

导入“/js/jquery.js”;
导入“/js/jquery.js”;
以下情况也是如此:

<script type="module">
            import "./js/jquery.js";
</script>
<script type="module">
            import "./js/jquery.js";
</script>

导入“/js/jquery.js”;
导入“/js/jquery.js”;
但这会加载jquery两次:

   <script src="./js/jquery.js"></script>
   <script type="module">
       import "./js/jquery.js";
   </script>

导入“/js/jquery.js”;
有没有可能告诉浏览器的ES6模块解析器

<script src="./js/jquery.js"></script>

jquery scirpt已加载,可以在不涉及网络/磁盘缓存请求的情况下使用它吗

另外,这只是调查。我在考虑如何将现代ES6模块和“遗留代码”(在现代浏览器中)混合在一起。我更喜欢通过“旧式
”加载jquery插件系统,因为内联代码依赖于它


我知道jquery不是很好的示例,因为它没有导出。我们仍然将它与babel
import$一起从jQuery使用
我想了解在传输过程中应该做什么样的转换,以准备使用ES6模块本机支持加载代码。如果您知道这样的babel 7插件,这也是非常有价值的。

作为一种解决方法,您可以在模块中导入库,并通过将其添加到全局范围将其“导出”到旧式脚本中。只需确保旧式代码仅在模块运行后尝试访问库

<script type="module">
    import jQuery from "./jquery-es6.js";
    window.$ = jQuery;
</script>

这意味着您不能像在未设置
window.$
的其他环境中那样使用模块,但如果您将
const jQuery=window.$
视为一种“遗留导入”,并始终在模块顶部执行,而不在其他任何地方引用
window.$
,那么以后升级到真正的导入将非常容易。

:))这种形式的句子在浏览器中不起作用。多么遗憾-这并不能自动解决内联代码支持“问题”。。。仍然需要包装每个内联以导入promise或document.addEventListener(“DOMContentLoaded”,function(event){..});所以问题是,“/js/jQuery.js”中的
import*作为jQuery,不提供对
jQuery.js
脚本中的值的访问?这听起来像是一个单独的问题。我已经添加了一个关于在您的场景中使用旧式脚本的注释。我的回答并没有真正回答你提出的问题,但我认为这是讨论解决办法的正确地方,因为这可能是不可能的。谢谢。问题的其他方面:例如,我的babel/ts代码包含
从“jquery”
导入$。我想我需要删除它(以及所有其他
sript src
加载的模块),作为“transpiling”到“ready for ES6 native loaders code”的一部分,并在import to path中更改npm名称。您是否读过一篇文章,介绍如何将“webpack”中的模块“迁移”(实际上两者都支持)到可以加载到浏览器中的本机ES6模块?
<script src="./js/jquery.js"></script>
<script type="module">
    const jQuery = window.$;
</script>