Con Jade Modelli (jade-lang.com client-side

Vorrei usare la Giada modelli client-side. Preferibilmente generata utilizzando i Rails 3.1 asset pipeline. Io non riesco davvero a capire come fare.

Chi hai inciampato su lo stesso problema e ha trovato una grande soluzione? Tutti i pensieri sono molto apprezzati.

InformationsquelleAutor sandstrom | 2011-07-04



8 Replies
  1. 7

    P. S: Probabilmente adesso Substack risposta è meglio.


    browserify

    Forse è possibile utilizzare https://github.com/substack/node-browserify

    Lato Browser require() per il nodo
    moduli e npm pacchetti

    Solo punto di un file javascript o due
    browserify e camminare l’AST di
    leggere tutto il tuo richiedono (e)s in modo ricorsivo.
    Risultante ha tutto il bundle
    è necessario, tra l’tirando in
    le librerie si potrebbe avere installato
    utilizzando npm!

    Browser

    http://jsperf.com/dom-vs-innerhtml-based-templating/53 => Le prestazioni non è il massimo secondo questo benchmark => http://gist.github.com/raw/550723/12d176698628e30a1df398c7ac7aea93924e1294/jade.js. Ma secondo TJ non è mai stato pensato per essere usato nel browser, ma node.js invece. In questo caso si sta andando ad essere abbastanza veloce. Ci sono un sacco di alternative che è possibile utilizzare nel browser invece.

    • Ottimo suggerimento, dio di lavorare con normale Giada, ma questo sarebbe stato bello. Inoltre è una più ampia soluzione di lavorare per altri node.js i moduli di troppo!
    • Forse il nodo-jadify è ancora meglio 🙂 => github.com/substack/node-jadeify
    • come hai fatto a farlo funzionare con normale Giada? 🙂
    • Non ho provato a farlo funzionare nel browser di me.
  2. 31

    Se si utilizza browserify è possibile utilizzare questo comodo giada middleware: jadeify.
    Poi si può chiamare jadeify("foo.jade", { x : 4, y : 5 }) lato browser dopo aver messo in una directory di visualizzazioni al middleware e si torna a jquery maniglia.

  3. 7

    Checkout Lama. Si tratta di una Giada-come HTML template engine che è stato progettato per client-side (lato server) utilizzare. Ci sono alcune altre caratteristiche che voi ragazzi potrebbe piacere, nonché.

    EDIT: Ma, solo per Node.js server. Non c’è Ruby attuazione in questo momento.

  4. 5

    Questa funzione è ora disponibile in Giada.
    http://jade-lang.com/api/

    Da loro API Documentazione:

    var jade = require('jade');
    
    //Compile jade file to a function
    var fn = jade.compileClient('string of jade', options);
    
    //Later in client site, render the function to HTML
    var html = fn(locals);

    Si dovrebbe passare compilato funzione javascript per il cliente, per esempio, scrivendo la funzione (fn nell’esempio).file js e quindi includere il .js file nel file html con il tag script.

    Un’altra opzione è l’uso templatizer, che compila giada per un .js file per voi.

    • Non è ovvio come si potrebbe compilare una giada file sul server e quindi chiamare la funzione risultante sul browser. Puoi spiegarti meglio?
    • a cura
  5. 3

    Ho scritto un gioiello chiamato tilt-giada, entro il asset pipeline. E ‘ fatto per funzionare esattamente come EJS fa con i pignoni per impostazione predefinita – rende Giada modelli in funzioni così possono essere chiamati lato client. Io non sono sicuro che sia una grande soluzione, ma ha funzionato bene per le mie esigenze.

  6. 1

    Ecco una sporca ma semplice versione browserify utilizzando gulp-jade.

    var jade = require('gulp-jade'),
        replace = require('gulp-replace');
    
    gulp.task('jade-client', function() {
        gulp.src('./views/**/*.jade')
            .pipe(jade({
                client: true
            }))
            .pipe(replace(/function template/g, 'var jade = require("gulp-jade/node_modules/jade/lib/runtime");\n\nmodule.exports = function'))
            .pipe(gulp.dest('./client/templates'));
    });

    Quindi nel mio lato client, file JS…

    var template = require('./path_to_compiled_template_file');
    var renderedTemplateHtml = template({ aLocal: 'blah blah'});

    Così devi solo inviare al cliente i modelli specifici di cui avete bisogno e browserify, sei sicuro di avere solo una copia di runtime.

Lascia un commento