Qual è un flusso di lavoro ragionevole per la progettazione di applicazioni web?

9

È passato un po 'di tempo da quando ho fatto uno sviluppo web sostanziale e mi piacerebbe approfittare delle ultime pratiche, ma sto cercando di visualizzare il flusso di lavoro per incorporare tutto.

Ecco cosa sto cercando di usare:

  • Framework CakePHP
  • jsmin (JavaScript Minify)
  • SASS (fogli stile sintatticamente fantastici)
  • Git

CakePHP:

Abbastanza auto esplicativo, apportare modifiche e aggiornare la fonte.

JSMin:

Quando modifichi uno script, esegui manualmente jsmin per generare il nuovo codice miniato, o sarebbe meglio eseguire un hook pre-commit che genera automaticamente output jsmin di file javascript che sono stati modificati. Supponiamo che non conosca l'implementazione di hook di commit.

SASS:

Mi piace molto ciò che SASS ha da offrire, ma sono anche consapevole del fatto che il codice SASS non è supportato dai browser per impostazione predefinita, quindi, ad un certo punto, il codice SASS deve essere trasformato in un normale CSS. A che punto del flusso di lavoro è fatto.

Git

Sono terrorizzato ad ammetterlo ma, l'ultima volta che ho fatto un sostanziale sviluppo web, non ho usato il controllo sorgente SCM (IE, ho usato il controllo del codice sorgente ma consisteva in un registro delle modifiche molto dettagliato con i backup) .

Da allora ho molta esperienza con Git (oltre a mercurial e SVN) per lo sviluppo del desktop, ma mi chiedo come implementarlo al meglio per lo sviluppo web).

È pratica comune implementare un repository remoto sull'host web in modo da poter inviare le modifiche direttamente al server di produzione, oppure esiste uno strumento multipiattaforma (windows / linux) che semplifica l'upload solo dei file modificati in il server di produzione. Ci sono società di web hosting che facilitano l'implementazione di un repository remoto, ho bisogno dell'accesso SSH, ecc ...

So come farlo sul mio server di test con un repository remoto con un ramo di monitoraggio remoto separato ma non l'ho mai fatto su un server di hosting web di produzione remoto prima quindi non sono a conoscenza delle opzioni ancora .

Extra:

Stavo considerando l'implementazione di un framework javascript in cui file javascript separati utilizzati in una pagina sono compilati in un singolo file per ciascuna pagina sul server di produzione per limitare il numero di download di file necessari per pagina.

Esiste già qualcosa del genere? Esiste già un progetto open source in natura che implementa qualcosa di simile che potrei usare e contribuire a?

Considerando quanto gli sviluppatori di web paranoici riguardino le prestazioni (e il fatto che il numero di richieste di file su un sito Web abbia un grande impatto sulle prestazioni) Immagino che ci sia qualche hacker in rete che ha già affrontato questo problema .

    
posta Evan Plaice 16.01.2011 - 03:34
fonte

2 risposte

2

Puoi controllare l'estensione PageSpeed di Google per Apache : afaik, c'è un'opzione per aggregare e minimizzare Javascript e CSS automaticamente e combinata con il caching, questo si adatterebbe a ciò che hai menzionato alla fine del tuo post.

    
risposta data 16.01.2011 - 04:42
fonte
5

JSMin

Se non hai un sacco di JS, puoi impostare qualcosa da minificare ogni volta che premi save. Se hai un sacco di JS, rendilo parte del tuo processo di distribuzione (vedi Git sotto).

SASS

Utilizza il Compass Framework . Include SASS, oltre a un piccolo script che "guarda" la tua directory SASS e compila i file in CSS (incluso il minified CSS, se lo desideri) ogni volta che salvi. È costruito con RoR in mente, ma è possibile utilizzarlo facilmente con qualsiasi framework Web creando un file di configurazione Compass ed eseguendo il comando "compass watch". Compass include anche molti altri utili strumenti come Blueprint , mixins utili e generazione automatica sprite tramite Plugin Lemonade (che dovrebbe essere incorporato in Compass nella prossima versione ).

Git

A seconda della dimensione / complessità del sito, prendi in considerazione il seguente modello di implementazione Capistrano . Non sei sicuro di poter utilizzare Capistrano direttamente con CakePHP, ma il succo è questo: ogni server di produzione ha una cartella "corrente" che contiene tutto il codice che è in esecuzione in quel momento. Ogni volta che si desidera distribuire un nuovo codice, si esegue uno script che ssh è in ogni server di produzione e lo ha (a) copiato il contenuto della cartella "corrente" in una cartella di backup (con il nome della release / timestamp su di esso), ( b) controlla l'ultimo codice da Git nella cartella "corrente" e (c) inizia a servire questo nuovo codice dalla cartella "corrente". In questo modo, è possibile eseguire il rollback a qualsiasi versione precedente, se necessario, e si può dire esattamente quale revisione è in produzione. Capistrano consente inoltre di aggiungere tutti i tipi di attività personalizzate come parte del processo di distribuzione, tra cui minifaction JS / CSS, concatenazione e così via.

Extra

Sì, ci sono un sacco. Google per qualcosa come "CSS / JS concat". Ecco una rapida trovata per CakePHP: Asset Packer .

    
risposta data 16.01.2011 - 05:08
fonte

Leggi altre domande sui tag