我建议查看其他 3rd 方插件如何处理此问题。让我们看几个例子:
KISSmetrics
<script type="text/javascript">var _kmq = _kmq || [];
var _kmk = _kmk || 'xxx';
function _kms(u){
setTimeout(function(){
var d = document, f = d.getElementsByTagName('script')[0],
s = d.createElement('script');
s.type = 'text/javascript'; s.async = true; s.src = u;
f.parentNode.insertBefore(s, f);
}, 1);
}
_kms('//i.kissmetrics.com/i.js');
_kms('//doug1izaerwt3.cloudfront.net/' + _kmk + '.1.js');
</script>
查看var _kmk = _kmk || 'xxx'; 的那一行。 'xxx' 是我的钥匙所在的位置。然后库加载完成后,就可以查看已经设置好的_kmk变量,并对其进行处理。
一个稍微复杂一点的例子是 Keen:
<script type="text/javascript">
var Keen=Keen||{configure:function(e){this._cf=e},addEvent:function(e,t,n,i){this._eq=this._eq||[],this._eq.push([e,t,n,i])},setGlobalProperties:function(e){this._gp=e},onChartsReady:function(e){this._ocrq=this._ocrq||[],this._ocrq.push(e)}};(function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src=("https:"==document.location.protocol?"https://":"http://")+"dc8na2hxrj29i.cloudfront.net/code/keen-2.1.0-min.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();
Keen.configure({
projectId: "xxxxxx",
writeKey: "xxxxxx", // required for sending events
readKey: "xxxxxx" // required for doing analysis
});
</script>
看看他们是如何提前设置一个迷你 api 来传递配置数据的。如果您只需要一套钥匙,那么我可能会选择 KISS 路线。但如果你需要传递很多东西,也许更像 Keen 的东西会做。您也可以随时回到 Google Analytics(分析)的久经考验的真实方式。
LMK 你的想法。但是看看当前公司处理这个问题的方式应该会对你有所帮助。最重要的是您希望能够提供一个缓存的 JS 文件,并且可以非常快速地发送出去。你肯定不想为每个人生成文件,那会是服务器密集型的。