首次创建JavaScript API

时间:2012-12-12 00:46:05

标签: javascript jquery api

我首次为响应式网页/网络应用程序(移动设备)创建商业API。

我很新,很遗憾,独自工作以及Javascript的新手(很复杂的故事)。

我只是想知道业内人士是否可以就以下格式的“获取”电话提供他们的专业意见:

var getSample = function(params) {
    //Returns Object
    return $.ajax({ 
        url: URL + 'downloadQuadrat.php',
        type: 'GET',
        data: { 'projectID': params.pid, 'quadratID': params.qid },
        dataType: dataType
    });
}

函数调用:

var printList = function(lid,options,get) {
    var list = $("ul#"+lid);
    var promise = get(options);

    promise.promise().then(
        function(response) {
            var items = response;
            list.empty();

            $.each(items, function(item,details) {
                var ul = $('<ul/>');
                ul.attr('id', lid+'_'+details.ID);
                var li = $('<li/>')
                .text(details.ID)
                .appendTo(list);
                ul.appendTo(list);

                $.each(details,function(key,value) {
                    var li = $('<li/>')
                    .text(key+': '+value)
                    .appendTo(ul);
                });
            });
        }
    );
}

非常感谢任何意见或指导。

2 个答案:

答案 0 :(得分:3)

我不是业内专业人士,本身,但我认为有些事情可以改善您的代码:

  • 根据惯例约定格式。如果没有适当的缩进,很难看出你的代码在做什么。
  • 只需使用$("#"+lid)代替$("ul#"+lid)。开头的ul不会添加任何消歧,因为id属性必须是唯一的,而且只需要花费更长的时间来解析。
  • 在这种情况下沟渠本地存储。它并不是所有浏览器都支持,据我所知,你不需要它。只需直接使用响应中返回的数据即可。

以下是我将如何更改您的代码:

var printList = function(lid, options, get) {
    var promise = get(options);
    var list = $("#" + lid);

    promise.success(function(response) {
        var data = response;
        list.empty();
        $.each(data, function(item, details) {
            var ul = $('<ul/>').attr('id', lid + '_' + details.ID);
            var li = $('<li/>').text(details.ID).appendTo(list);
            ul.appendTo(list);
            $.each(details, function(key, value) {
                var li = $('<li/>').text(key + ': ' + value).appendTo(ul);
            });
        });
    });
}

编辑:除了次要的ul#之外,编辑后的代码版本对我来说很好。

答案 1 :(得分:3)

更多建议让您的API看起来更专业:

1 - 命名空间

使用命名空间将代码整齐地打包在它自己的空间中,它不会与页面上的其他函数定义冲突。这样的事情开头:

window.MyNamespace =  {};
MyNamespace.get = function(qid, pid) {
   //things
};
MyNamespace.anotherFunction = function() {
   //other stuff
}

如果您的代码开始变大,您可以将整个代码包装在一个闭包中。您也可以将它全部定义为类,然后将其实例化一次以使您的代码更整洁,并允许您存储实例变量并调用this.anotherFunction()。如果你愿意,我也可以举例说明。

2 - API方法签名

我更喜欢看到的另一件事是函数的显式参数而不是函数get(params)样式代码。使参数显式化使您的代码更易于阅读和理解,并且阻止特殊的黑客攻击,这在编写API时尤其重要。这只是因为你并不意味着你应该这样做。

3 - 配置

尝试将ID和URL等内容转换为变量,以使代码更容易重用和使用。

通常,Javascript开发人员在查看您的API文档之前查看代码是着名的,因此您可以采取任何措施使API函数名称和参数名称更具表现力并自我记录将有助于他们。