2014-10-22 8 views
10

Sto costruendo una piccola app angolare con browserify e ui-router. Come io non voglio usare un server, voglio memorizzare tutti i miei modelli usando del angolare $templateCache come questo:Usa cache modello angolare con browserify

exports.templateCache = ["$templateCache", function($templateCache) { 
    'use strict'; 

    $templateCache.put('partials/someState.html', 
    "myHtmlCode" 
); 
}]; 

per popolare la cache, io uso grugnito di guardare nella mia cartella partials, afferrare tutto il codice HTML e caricarlo nella cache con grunt-angular-templates:

ngtemplates: { 
    myApp: { 
    cwd: 'dist/', 
    src: 'partials/**.html', 
    dest: 'src/js/templates/templates.js', 
    options: { 
     bootstrap: function(module, script) { 
     return 'exports.templateCache = ["$templateCache", function($templateCache) {\n' + 
      script + 
      '}];' 
     } 
    } 
    } 
}, 

ho quindi utilizzare browersify di combinare tutti i miei js insieme:

browserify: { 
    dist: { 
    files: { 
     'dist/js/app.js': [ 
      'src/js/templates/**', 
      'src/app.js' 
      ], 
    } 
    } 
}, 

Questo è wor re fino ad ora ma questo flusso di lavoro mi sembra molto poco maneggevole: ho un passaggio intermedio in cui creo il file templates.js nella mia directory src e ho codice hard-coded nel mio file grunt.

C'è un modo per farlo in modo più elegante? Browserify è dotato di soluzioni integrate per affrontare questo problema?

+0

che fare con un problema simile. Hai già trovato una soluzione? –

risposta

0

Prova transform per browserify che ti dà la possibilità di richiedere il file html (ad esempio Stringify). Poi si può richiedere ('yourPartial.html') come stringa:

$templateCache.put('yourPartialId', require('./partials/yourPartial.html')); 

// html file 
<div ng-include=" 'yourPartialId' "></div>  
3

browserify-ng-html2js è stato progettato per risolvere questo problema.

Basta aggiungere in package.json:

"browserify": { 
    "transform": ["browserify-ng-html2js"] 
} 

E vedrete se cammina colloqui :)

+3

C'è anche ** 'ngify' ** [github] (https://github.com/majgis/ngify), un'altra trasformazione di Browserify. 'browserify(). transform (require ('ngify')). bundle() ...' – Elijah

+2

Entrambe queste trasformazioni specificano il nome del file come nome del modulo. Ciò rende difficile l'utilizzo man mano che l'app cresce. – trysis

+0

[ngify] (https://www.npmjs.com/package/ngify) è stato appena aggiornato per consentire percorsi relativi –