javascript - HTML 导入是否提供任何形式的 Javascript 封装?

标签 javascript html encapsulation html-imports

我刚刚阅读了有关使用 HTML 导入进行组件封装的内容。

<link rel=import href="import.html">

文件import.html将包括组件所需的一切。

但有一个大问题:import.html 中的 Javascript 函数和变量成为 window 的一部分命名空间,这意味着没有任何封装。
恰好具有同名函数的两个不同组件将发生冲突,并且其中一个函数将被覆盖。

HTML 导入是否提供以前不存在的任何形式的 javascript 封装?


示例:

main.html

<link rel=import href="import1.html">
<link rel=import href="import2.html">

<script>
console.log( moduleFunction() ) ; //`moduleFunction` can be called as if it was defined in the outter document
</script>

import1.html

<script>
function moduleFunction(){
    return 'module1' ;
}
</script>

import2.html

<script>
function moduleFunction(){
    return 'module2' ;
}
</script>

最佳答案

没有。但是,将所有内容包装在一个函数中或拥有一个将所有变量存储在 import.html 中的全局对象都可以。

关于javascript - HTML 导入是否提供任何形式的 Javascript 封装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46869893/

相关文章:

Java:调试器如何显示私有(private)字段?

oop - OCaml封装

java - 使用传递给构造函数的引用是否可以安全 - Java

javascript - 如何将 Django 上下文变量传递到 JavaScript 函数中?

javascript - 如何在不选择整行的情况下选择复选框(见正文)?

javascript - 销毁 chart.js 条形图以在同一 <canvas> 中重绘其他图形

javascript - Web 抓取 duckduckgo,但获取格式错误的链接

html - Apple 风格的 CSS spritesheet 菜单中的白色间隙和中断

javascript - 使用 Javascript 读取从 REST API 返回的 JSON 数据

javascript - 触发点击无法与 pickadate.js 一起使用?