2012-11-02 8 views
7

Ho un progetto piuttosto robusto che ha tutti i suoi modelli implementati in Slim e un po 'di Haml. Sto considerando di spostare il progetto su una struttura basata su Node.js (probabilmente costruita su Tower.js o qualcosa di simile, forse Meteor), tuttavia mi piacerebbe continuare a usare Slim o Haml per i modelli piuttosto che passare a un altro modello motore.Utilizzo di Slim o Haml e Sass/SCSS con Node.js?

Qualcuno ha fatto questo o ha speso il tempo per capire come realizzare questo finora, e se sì, quali sono stati i tuoi risultati?

risposta

1

Tower.js avvolge il sistema motore express.js modello, così si dovrebbe essere in grado di utilizzare qualsiasi motore express.js modello aggiungendo la seguente alla configurazione Tower.View.engine = "haml"

Tower.js utilizza mint, che ha HAML integrato, quindi è sufficiente il haml module nella directory.

Slim è problematico però. Innanzitutto non è direttamente all'interno di mint.js, quindi dovrai registrare un nuovo motore di template. Todo che avrete bisogno di

  1. creare una funzione che customAdapter mint.js può usare, si può guardare il codice sorgente mint.js. Ecco un esempio della funzione dell'adattatore Haml:

    function(content, options, callback) { 
        var result; 
        result = require('hamljs').render(content, options || {}); 
        if (callback) { 
        callback.call(this, null, result); 
        } 
        return result; 
    } 
    
  2. è necessario aggiungere la scheda a mint.js facendo require("mint").engines.slim = customAdapter

Ma non c'è nessun motore express.js Slim, e dal momento che Slim contiene snippet di codice rubino, non è probabile che ci sarà.
Se si vuole davvero farlo, è necessario creare il proprio parser javascript per i file modello (probabilmente usando qualcosa come http://opalrb.org/, sebbene senza specifiche ruby ​​libraries), e quindi creare un motore express.js (che io non so come).

Dubito che sarà un esercizio molto fruttuoso.
Suggerisco di convertire i file Slim in haml (o jade, o qualsiasi motore di template che può essere usato da express.js) o di non effettuare la mossa.
Impossibile trovare alcun modo per convertire automaticamente Slim in haml o qualsiasi altro motore di template (probabilmente a causa del fatto che contiene codice ruby), quindi dovrai eseguire la conversione interamente manualmente.

+0

Da quello che ho sentito dai ragazzi Slim, dovrebbe essere relativamente facile da implementare con Slim, ma nessuno lo ha affrontato tramite i suoi meccanismi. Inoltre, avresti qualche idea per spostare questo verso Meteor vs Tower dato che in sostanza ci siamo arresi su Tower a causa degli aggiornamenti più lenti in arrivo negli ultimi tempi. – ylluminate

+0

Scusa se non ho familiarità con Meteor. Tower.js è fondamentalmente solo una colla tra moduli molto comuni e usa internamente express.js per il rendering della vista. Meteor sembra un framework molto più coinvolto e unisce funzionalità server e client. Considerato ciò, immagino che sarà più difficile trasferire un'applicazione esistente su Meteor e poi su Tower.js. Anche il linguaggio dei template non è così facile da far cadere in Meteor, anche se ci sono alcune persone che hanno già creato pacchetti per questo (dalla mia ricerca molto veloce sull'argomento) –