Estoy trabajando en un sitio grande que tiene mucha costumbre (página específica js). Hay un archivo main.js y page-specific.js. ¿Hay un mejor enfoque que pueda usar el siguiente patrón?Código de JavaScript Sugerencias de organización/Revisión de código
¿Cómo puedo volver a factorizar varios métodos que usan ajax?
Actualmente asigno todos los eventos onclick en línea tales como onclick = "MYSITE.message.send ... - que hay una mejor manera la creación de múltiples $. (" # Botón "), haga clic en (function() {}); parece como más trabajo ...
var MYSITE = MYSITE ? MYSITE: {}; var MYSITE { bookmark: { add: function(contentId, userId) { var data = { contentId: contentId, userId: userId }; $.ajax({ url: "/rest/bookmarks/", type: "post", data: data, complete: function(response) { if (response.error) { alert(response.error); } else { alert("success"); } } }); } }, message: { /* <a onclick="MYSITE.message.send('1234', '1234');" href="javascript:void(0);">BOOKMARK</a> */ send: function(contentId, userId) { var data = { contentId: contentId, userId: userId }; $.ajax({ url: "/rest/bookmarks/", type: "post", data: data, complete: function(response) { if (response.error) { alert(response.error); } else { alert("success"); } } }); } }
}
Respuesta
En primer lugar, la asignación directa onclick=""
es una mala práctica utilizando el método de jQuery click()
no es t. Lleva mucho más trabajo, pero incluso si lo fuera, es más limpio y mucho más recomendado. Mantiene su marcado HTML separado de su funcionalidad JS y hace que sea más fácil cambiar las cosas más adelante. Esa es la primera cosa que debes refactorizar.
Lo que hago con mi JS es crear un archivo JS de biblioteca principal con todas mis clases/funcionalidad principal. Luego uso las etiquetas en línea <script>
en páginas específicas para llamar al método que conecta los enlaces a las funciones.
En el archivo app.js mundial, voy a tener una función:
function initLinksOnPageX() {
$('#button').click(function() { MYSITE.message.send('1234', '1234'); });
/* ... setup any other events ... */
}
En el cuerpo de la página:
<script type="text/javascript">
$(initLinksOnPageX);
</script>
Una vez más, esto mantiene su margen de beneficio claro de cualquier código JS, para que las actualizaciones relacionadas con JS sucedan en un archivo (o menos). Con esta configuración, no debería necesitar estrictamente archivos JS específicos de la página, aunque desde el punto de vista organizativo podría tener sentido. No sé exactamente cuán grande es su JS.
Estoy de acuerdo con sus puntos, pero no lo haría. t online en línea sea más rápido que $ ('# button'), haga clic en (función {}); ? – Eeyore
¿Qué quiere decir con "más rápido"? En cuanto al rendimiento, hay una diferencia insignificante. Debería leer acerca de JS discreto y por qué es recomendado: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript - usted no usa CSS en línea, el mismo concepto se aplica a JS. –
Puede utilizar el método jQuery delegado si tiene div elemento con un tag
<div id="bookmarks"> <a href="#">BOOKMARK</a> </div> $("div#bookmarks").delegate("a", "click", function(){ MYSITE.message.send('1234', '1234'); });
y se puede obtener 'contentId' y 'ID de usuario' de forma dinámica.
Mis pensamientos:
Esto depende de muchos factores, pero si el código de la página específica es "grande", entonces es probablemente el mejor para mantenerlo separado. Sin embargo, si solo se trata de unas líneas, y no estamos hablando de miles de páginas, entonces podemos agruparlo todo en main.js puede no ser un gran problema.
No estoy muy familiarizado con ajax, así que voy a dejar de comentar cómo "refactorizar".
Si puede buclear su asignación de los eventos onclick, NO hacerlos en línea le ahorrará mucho trabajo.
me gustaría considerar envolver mi funcionalidad personalizada como un plugin de jQuery.
- 1. Sugerencias del editor de código Gradle
- 2. Código de JavaScript paralelo
- 3. Compresión de código JavaScript
- 4. Marco de código abierto como sugerencias de Microsoft Sync Framework?
- 5. Sugerencias de excelentes ejemplos de código C Real/C++
- 6. código de clave de Javascript =/= código de char
- 7. Sugerencias/código de ejemplo para fileSystemWatcher en Java
- 8. php run código de JavaScript
- 9. Vim Javascript Autocompletado + Sugerencias?
- 10. Código de JavaScript dentro de UpdatePanel
- 11. Organizando el código javascript
- 12. Javascript Código QR lectura de librerías
- 13. Usa el || aviso operador de código Javascript
- 14. Intrigado por este fragmento de código JavaScript
- 15. Análisis de código Javascript y mejores prácticas
- 16. Cómo eliminar código muerto de Javascript
- 17. referencia JavaScript de código subyacente (C#)
- 18. ¿Mejor formateador de código fuente para Javascript?
- 19. Chrome: ejecución automática de código Javascript?
- 20. ¿Código de JavaScript ofuscado con valores binarios?
- 21. Biblioteca para escribir el código de JavaScript
- 22. ejecución de código serverside desde JavaScript
- 23. código de JavaScript para el objeto matemático
- 24. Código de seguridad/protección en JavaScript
- 25. Limpiar el código de JavaScript repetitivo
- 26. Javascript expresiones regulares de código postal canadiense
- 27. cómo escribir código JavaScript dentro de php
- 28. ¿Qué hace este (¿inútil?) Código de javascript?
- 29. Javascript numérico código clave de análisis
- 30. Sugerencias para un creador de formularios JavaScript
Ocurre que recientemente completé una publicación de blog sobre un aspecto de este tema: http://whatsthepointy.blogspot.com/2010/07/wallflower-unobtrusive-jquery.html – Pointy