我希望创建一个可以托管在其他网站上的javascript“小部件”。例如。我想在我的网站上托管javascript代码:
http://scripts.mysite.com/mywidget.js
(想象一下Google Analytics)。
基本上我想通过这个javascript分发数据。但我不确定的是:
答案 0 :(得分:66)
我会尝试:
使其可配置
通过这样做,您可以让用户决定他是否希望您的小部件自动加载样式表,或者他是否想要自己托管样式表。如果他这样做,他还可以更新样式以更好地适应窗口小部件所在的页面。
ExampleComWidget.addListener('update', callback);
使用聪明的标记
请务必在类和ID上使用作用域,以尽可能避免冲突
即。如果您公司的名称是example.com,则可以使用以下类:com-ex-widget-newsItem
<h1>
- 标记,因为它们在SEO中的排名特别高。你可能会使用<h4>
而不是更少。这个子弹可能有点过时了。如果有疑问,使用语义标记要好得多。答案 1 :(得分:6)
您的脚本不应干扰页面的其余部分。
答案 2 :(得分:0)
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");
}
});
请下载并在https://github.com/latitov/JS_HTML_Widgets浏览器中打开Widget_v2.md.html。
您会得到什么:
并享受轻松地创建自己任意复杂的可重用小部件!