Creando la API de JavaScript por primera vez; revisión de solicitud -- javascript campo con jquery campo con api camp codereview Relacionados El problema

Creating JavaScript API for first time; request review


2
vote

problema

Español

Estoy creando una API comercial por primera vez para páginas web / aplicaciones web receptivas (dispositivos móviles).

Soy nuevo y, lamentablemente, trabajando solo, así como nuevo para JavaScript (larga historia complicada).

Me estaba preguntando si alguien de la industria podría ofrecer su opinión profesional sobre el siguiente formato de una llamada "Obtener":

  static4  

Llamada de función:

  static5  

Cualquier entrada o orientación será muy apreciada.

Original en ingles

I am creating a commercial API for the first time for responsive webpages/web applications (mobile devices).

I am new and, sadly, working alone as well as new to Javascript (long complicated story).

I was just wondering if someone from the industry could offer their professional opinion on the following format of a "get" call:

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

Function call:

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);             });         });     } ); } 

Any input or guidance will be hugely appreciated.

        
         
         

Lista de respuestas

3
 
vote
vote
La mejor respuesta
 

De lo que entiendo, está construyendo una capa de abstracción y está haciendo sus propias funciones para su API. Esto es lo que necesitas:

  1. un espacio de nombres

    SONIDOS MUY C ++ - ISH Pero sí, necesitas espacios de nombres en JS. Esto le impide contaminar el espacio de nombres global y tener un objeto central central para sus funciones. Por ejemplo, JQERY utiliza jQuery y el $ Espacios de nombres para una colección central de sus funciones. AVISO $ EN $.each() , 9988776655544334 es en realidad el espacio de nombres (una función en realidad).

  2. módulo ese código

    Otra forma de prevenir la contaminación del código y la colisión es envolver su código en un alcance, generalmente llamado "cierre". Esta es solo una manera geek de llamar a un alcance de la función que persiste debido a que se devuelve algo que aún tiene referencia a ese alcance. Normalmente, se llama módulo (como en una pieza modular de código). Una forma simple de construir un módulo es usar una "función inmediata" o una función que se ejecute de inmediato. Una explicación más detallada de cómo funciona es explicado aquí

  3. extensibilidad

    Con código modular, de nombres, generalmente los desarrolladores se olvidan de abrir sus módulos a la extensibilidad. Debido a que el patrón del módulo es como poner una jaula alrededor de su código, los desarrolladores se olvidan de proporcionar realmente una manera de hacer que su módulo sea extensible.

    Debe proporcionar una forma (como proporcionar una función) que permita el acceso (limitado) a su módulo y permita que adjunte las funciones personalizadas desde el exterior . Un ejemplo es cómo JQERY permite realizar los complementos.

Aquí hay una manera corta de hacer un módulo, y tener sus funciones personalizadas

  (function(namespace){      namespace.get = function(params){         ...     }  }(window.myNamespace = window.myNamespace || {}));  myNamespace.get(params);   
 

From what I understand, you are building an abstraction layer and making your own functions for your API. Here's what you need:

  1. A Namespace

    Sounds very C++-ish but yes, you do need namespaces in JS. This prevents you from polluting the global namespace and have a central go-to object for your functions. For example, jQuery uses jQuery and the $ namespaces for a central collection of their functions. Notice $ in $.each(), $ is actually the namespace (a function actually).

  2. Module that code

    Another way to prevent code pollution and collision is to wrap your code in a scope, usually called a "closure". This is just a geeky way of calling a function scope that persists because of something returned that still has reference to that scope. Normally, it's called a module (as in a modular piece of code). A simple way of building a module is to use an "immediate function" or a function that immediately executes. A more detailed explanation how it works is explained here

  3. Extensibility

    With modular, namespaced code, usually developers forget to open their modules to extensibility. Because module pattern is like putting a cage around their code, developers forget to actually provide a way to make their module extendable.

    You should provide a way (like provide a function) that allows (limited) access to your module and allow it to attach custom functions from the outside. An example is how jQuery allows plugins to be made.

Here's a short way to make a module, and have your custom functions

(function(namespace){      namespace.get = function(params){         ...     }  }(window.myNamespace = window.myNamespace || {}));  myNamespace.get(params); 
 
 
 
 

Relacionados problema

9  Proporcionando interfaces de "envoltura" sin marcar para una API con excepciones verificadas  ( Providing unchecked exception wrapper interfaces for an api with checked excep ) 
Bloqueado . Esta pregunta y sus respuestas son bloqueadas porque la pregunta es off-topic pero tiene importancia histórica. Actualmente no está a...

3  Biblioteca de Wrapper Perl (escrito usando Moose) para una API de descanso  ( Perl wrapper library written using moose for a rest api ) 
Escribí una biblioteca de envoltura para una API de descanso en Perl usando la Biblioteca Moose. Me gustaría reunir algunos comentarios sobre ella (principalm...

11  Proveedor de formato de fecha  ( Date format provider ) 
Estoy enfrentando un problema con una API para manejar las fechas en Java. No soy un programador muy experimentado y mi inglés es muy malo. Problema Estoy...

4  Diseño de la API de inyección de dependencia de Backbone.js  ( Backbone js dependency injection api design ) 
Estoy escribiendo un complemento de inyección de dependencia para la Backbone JavaScript Framework, y no estoy seguro de cuál es la API Para el argumento co...

2  Objeto de búsqueda de la base de datos, o fetchlo usando una API si no está ahí  ( Fetch object from database or fetch it using an api if it isnt there ) 
Para dar algunos antecedentes en este código en particular, hay un controlador que recibe un objeto, las partes de los hashes y se analiza en una base de dato...

8  Implementación de la API de Django  ( Django api implementation ) 
Estoy construyendo un backend a una aplicación móvil que se alojará en un sitio de Django conectado a una base de datos PostgreSQL. Nunca he construido nada...

10  Implementación de Linq-To-Sage  ( Linq to sage implementation ) 
seguimiento de mi Última pregunta donde envié la API de SAITE con un 9988776665544334 < / Código> Interfaz, decidí empujar la abstracción un paso más allá,...

2  Punteros para el formato de encabezado, diseño y diseño de la biblioteca de la biblioteca C ++ / CLI  ( Pointers for c cli library header formatting layout and design ) 
He diseñado una biblioteca de Wrapper C ++ / CLI que permite aplicaciones C ++ en Windows, y otras plataformas que pueden cargar C DLLs (por ejemplo, Java a t...

3  Prueba de un controlador API de rieles  ( Testing a rails api controller ) 
Estoy construyendo una API de JSON. Estoy escribiendo mis pruebas de controlador para que comparen el organismo de respuesta al JSON real, estoy generando en ...

2  Este código frágil ODATA a SQL Server C # no es sostenible con el tiempo  ( This brittle odata to sql server c code isnt sustainable over time ) 
La intención de este código es acceder a una API de ODATA de terceros para capturar solo los datos relevantes a un conjunto interno existente de tablas de ser...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos