我有一个名为test.js
的外部JavaScript文件,如下所示。此文件需要传递给它的用户配置参数,在本例中为user
和show
值。
<script type="text/javascript">
<!--//
user = '123';
show = 'appts';
//-->
</script>
<script src="{{ STATIC_URL }}js/widgets/test.js" type="text/javascript"></script>
以上是我如何告诉第三方将脚本添加到他们自己的网站。但是,我不禁觉得这是传递这些价值的坏方法,即冲突。
我的方式是否可以接受?还有更好的方法吗?
答案 0 :(得分:2)
一个简单的答案是在您的变量名称上添加一些内容,例如:
<script type="text/javascript">
<!--//
widget_test_12331_user = '123';
widget_test_12331_show = 'appts';
//-->
</script>
答案 1 :(得分:2)
您可以坚持命名空间约定“还原域”:
<script type="text/javascript">
<!--//
if (!org) var org = {};
if (!org.mylibrary_domain) org.mylibrary_domain = {};
if (!org.mylibrary_domain.settings) org.mylibrary_domain.settings = {};
org.mylibrary_domain.settings.user = '123';
org.mylibrary_domain.settings.show = 'appts';
//-->
</script>
<script src="{{ STATIC_URL }}js/widgets/test.js" type="text/javascript"></script>
答案 2 :(得分:2)
您可以使用javascript命名空间(How do I declare a namespace in JavaScript?)的概念。
所以你可以添加另一个名为testConfig.js的js文件,其中包括:
var yourAppNamespaceTestConfig = {
user: function(){ return '123' ;} ,
show: function(){ return 'appts';}
};
然后在test.js中,您可以通过以下方式阅读配置:
var user = yourAppNamespaceTestConfig.user();
var show = yourAppNamespaceTestConfig.show();
如果您更关注OO,请尝试Coffeescript(http://coffeescript.org/)。他们将OO引入您的javascript。