PatrikAkerstrand 所说的完全,100% 正确。
我想在这里添加的是 vanilla JS 框架,它可以为您节省大量时间和精力来实现它,因为一切都经过了思考、完善和测试。剩下的就是定义自己的小部件并使用它们。
这是它的外观示例。
小部件代码
// inside a js file of a widget class
(function () {
var Module_Path = ["WidgetsLib", "a1", "Button"];
var curr = this;
Module_Path.forEach(function(i){if (curr[i] == null) {addChildToTree(curr, i, {})} curr = curr[i]});
specialize_with(curr, {
CSS_Literal: `
.{{WIDGET_CLASS_ID}}_Something {
color: hsl(0, 0%, 20%);
}
`,
HTML_Literal: `
<div onclick="{{WIDGET_INSTANCE}}.onclick(event)"
class="{{WIDGET_CLASS_ID}}_Something"
>
SOME SUPER COOL WIDGET
</div>
`,
new: typical_widget_new,
});
})();
一个 HTML:
<div id="w1" style="background-color: hsl(200, 50%, 50%);"></div>
<script src="WidgetsLib/a1/Button/js"></script>
用户 JavaScript 代码:
var b1 = WidgetsLib.a1.Button.new("w1", {
onclick: function(ev) {
ev.target.style.color = "#ffff00";
console.log("====== HERE");
}
});
请下载并在浏览器中打开Widget_v2.md.html,它是https://github.com/latitov/JS_HTML_Widgets。
你会得到什么:
- 非常有趣的文章;
- sn-ps 的代码和示例;
- 准备好使用...原版 JS 中的框架,用于创建您自己的小部件;
并享受轻松创建您自己的、任意复杂度的可重复使用的小部件!