如何设置外部Javascript代码以进行配置?

时间:2012-09-17 17:14:13

标签: javascript

我在外部文件中有一些Javascript代码,这将是人们在他们自己的网站上使用...所以我想要一些方法让他们能够传递多个选项...我怎么会这样做?

对不起,更多信息:

我会给他们html + script + css加载:

    <div class="mywidget"></div>
    <script src="app.js"></script>
    <link rel="stylesheet" type="text/css" href="style.css" />

在脚本中(部分代码):

            var App = {

            init: function(){

                /* ----------------------------
                    On initialization....
                ---------------------------- */

                    App.doStuff(), App.doMoreStuff();

                },
                doStuff: function(){
                  alert('hi');
                }
            }

所以我基本上希望他们能够自定义我的应用程序的工作方式......所以我想让他们自定义警报或任何其他数量的东西。

4 个答案:

答案 0 :(得分:2)

以与jQuery相同的方式执行。有一个options对象的参数,如果没有传递选项,则默认选项:

var yourFunc = function (options) {
    options = $.extend({
        prop1: 'default1',
        prop2: 'default2'
    }, options || {});

    // do stuff with options
};

如果你不使用jQuery,你可以通过循环遍历属性来轻松地存根$.extend,如果它们未定义则替换它们。

答案 1 :(得分:2)

标准解决方案(例如由jQuery使用)是在函数(或配置函数)中作为参数接收一个参数,作为映射处理:

   func veryFreeFunction(opts) {
      opts = opts || {}; 
      var a = opts.a || "default_a";
      var b = opts.b || "default_b";
      ...
   }

在这种情况下,用户可以拨打veryFreeFunction();veryFreeFunction({b:"test"});。他只会传递他需要的参数。

答案 2 :(得分:0)

我相信这类事情的标准是将JSON对象传递到库的静态函数或对象构造函数中,然后将输入参数与库的默认参数合并。

例如:

// Your library
function myLibObj(options){
    var default_options = {
         opt_1: "abc",
         opt_2: "def"
    };

    // Merge options
    $.extend(default_options, options);
}

var newObj = new myLibObj({opt_1: "ghi"});
// Now in this newObj, the options will look like {opt_1: "ghi", opt_2: "def"}

答案 3 :(得分:0)

一种方法是让外部文件查找脚本标记本身的配置块:

   <script type="text/javascript" src="myfile.js">
    var mySettings = {
            instanceName: 'homepage',
            cfg: {
                containerId: 'homepage-slide',
                columnsCount: 6,
                placeholder: true,
            }
    }

    </script>