Cuando se usa el modo de rutas/vistas en AngularJS para construir un sitio web o aplicación grande, cargar todos los archivos personalizados, como controladores y plantillas durante la inicialización, no es una buena idea. La mejor manera es cargar solo los archivos requeridos al inicializar. Estos archivos pueden depender de una conexión o múltiples archivos, sin embargo, solo son utilizados por una ruta específica. Cuando cambiamos de rutas, los archivos descargados se cargarán según sea necesario. Esto no solo mejora la velocidad de inicializar la página, sino que también evita el desperdicio de ancho de banda.
La mayoría de los artículos en Internet hablan sobre la carga perezosa de controladores a través de $ Routeprovider y servicios de terceros. Por ejemplo, la carga de controladores AngularJS a pedido explica en detalle. Sin embargo, hay pocos artículos sobre la carga perezosa de controladores, HTML/plantillas con $ StateProvider. Aunque he visto un montón de código fuente relacionado con $ StateProvider y resuelto el problema de carga perezoso de HTML/plantilla, todavía no resolvió el problema de carga perezoso del controlador, que es una pena. Debido a problemas de tiempo, los resultados de la investigación se resolverán primero y la investigación continuará en el futuro.
Con respecto a la carga perezosa de HTML/plantilla, debe colocar el archivo HTML y el archivo de la página de inicio en diferentes directorios, de lo contrario se cargará automáticamente. Del mismo modo, no puede usar TemplateURL para especificar el archivo, de lo contrario se cargará automáticamente. La propiedad de plantilla de $ stateProvider.state admite valores y funciones de cadena, por lo que se puede definir una función para cargar y almacenar en caché los archivos HTML para evitar la carga duplicada de archivos. Quería que el controlador hiciera lo mismo, pero desafortunadamente no pude encontrar la definición de la función del controlador. Probé muchos métodos pero fallé. Estudiaré el código fuente en el futuro para ver lo que faltaba. Cargaré directamente el código, la lógica no es complicada, por lo que no hablaré mucho.
// Registre el HTML y el controlador cargado para evitar la carga de red duplicada $ ionic.files = {html: {}, controlador: {}}; // declarar el método html de carga retrasado $ ionic.gethtml = function gethtml (nombre) {if (! $ Ionic.files.html [name]) para cargar html y cache $ ionic.files.html [name] = jQuery.AJAX ({url: 'vistas/' + name + ".html", async: false}). ResponseText;} return $ ionic.files.html [name];} // Declarar el método de carga retrasado resuelto resolución de la función resolvecontroller (nombre) = $ .getScript ('Assets/Controller/' + name + '.js'); jQuery.AJAX ({"url": 'Assets/Controller/' + name + '.js', "DataType": "script", "async": false}); // console.log ("cargar" + name); devolver name;} $ stateProvider.state ('', {{', {', {', {{', {{', {', loglog. "/login", controlador: resolvecontroller ("logincontroller"), plantplate: function () {return $ ionic.gethtml ("login");Lo anterior es la descripción completa de la plantilla HTML de carga de retraso AngularJS presentada por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!