Che cos'è un flusso di lavoro resonabile per la progettazione di webapps?


9

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

Ecco cosa sto cercando di usare:

  • Quadro CakePHP
  • jsmin (JavaScript Minify)
  • SASS (Fogli di stile sintatticamente fantastici)
  • Idiota

CakePHP:

Abbastanza autoesplicativo, apportare modifiche e aggiornare la fonte.

JSMin:

Quando modifichi uno script, esegui manualmente jsmin per generare il nuovo codice minimizzato 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 degli hook di commit.

SASS:

Mi piace molto ciò che SASS ha da offrire, ma sono anche consapevole 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 viene fatto questo.

Idiota

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

Da allora ho avuto molta esperienza nell'uso di Git (oltre a mercurial e SVN) per lo sviluppo desktop, ma mi chiedo come implementarlo al meglio per lo sviluppo web).

È pratica comune implementare un repository remoto sul web host in modo che io possa inviare le modifiche direttamente al server di produzione, oppure esiste uno strumento multipiattaforma (windows / linux) che semplifica il caricamento solo dei file modificati sul 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 eseguire questa operazione sul mio server di test con un repository remoto con un ramo di tracciamento remoto separato, ma non l'ho mai fatto su un server di hosting Web di produzione remota prima, quindi non sono ancora a conoscenza delle opzioni.

Extra:

Stavo pensando di implementare un framework javascript in cui i file javascript separati utilizzati in una pagina sono compilati in un singolo file per ogni 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 a cui potrei usare e contribuire?

Considerando come gli sviluppatori web paranoici riguardano le prestazioni (e il fatto che il numero di richieste di file su un sito Web sia un grande successo per le prestazioni), immagino che ci sia qualche hacker di procedura guidata in rete che abbia già affrontato questo problema.

Risposte:


2

Potresti dare un'occhiata all'estensione PageSpeed ​​di Google per Apache : tra l'altro, c'è un'opzione per aggregare e minimizzare Javascript e CSS automaticamente e combinata con la cache, questo si adatterebbe a ciò che dici che stai cercando alla fine del tuo post.


1
Bene, non mi rendevo conto che tutto ciò poteva essere fatto con un modulo Apache. Minificazione Javascript / css, concatenazione javascript / css, nonché molti altri miglioramenti opzionali delle prestazioni. Dopo alcuni googling ho anche scoperto che Dreamhost gli fornisce il loro hosting condiviso / VPN. Sono sorpreso che non ci siano più informazioni a riguardo su webmasters.stackexchange.com o stackoverflow.com.
Evan Plaice,

5

JSMin

Se non hai un sacco di JS, potresti impostare qualcosa per minimizzare ogni volta che colpisci salva. Se disponi di molti JS, rendilo parte del processo di distribuzione (vedi Git di seguito).

SASS

Usa il Compass Framework . Include SASS, oltre a un piccolo script che "controlla" la tua directory SASS e compila i file in CSS (incluso CSS minimizzato, se lo desideri) ogni volta che salvi. È stato progettato pensando al RoR, ma puoi usarlo facilmente con qualsiasi framework web creando un file di configurazione Compass ed eseguendo il comando "compass watch". Compass include anche molti altri strumenti utili come Blueprint , utili mixin e generazione automatica di sprite tramite il plugin Lemonade (che dovrebbe essere integrato in Compass nella prossima versione ).

Idiota

A seconda delle dimensioni / complessità del sito, considera di seguire Capistranomodello di spiegamento. Non sono sicuro di poter usare Capistrano direttamente con CakePHP, ma l'essenza è questa: ogni server di produzione ha una cartella "corrente" che contiene tutto il codice che è in esecuzione in produzione in quel momento. Ogni volta che si desidera distribuire un nuovo codice, si esegue uno script che viene inviato a ciascun server di produzione e lo fa (a) copiare il contenuto della cartella "corrente" in una cartella di backup (con il nome della versione / data / ora su di esso) ( b) controlla l'ultimo codice da Git nella cartella "corrente" e (c) inizia a pubblicare questo nuovo codice dalla cartella "corrente". In questo modo, è possibile ripristinare qualsiasi versione precedente, se necessario, e si può dire esattamente quale revisione è in diretta in produzione. Capistrano ti consente inoltre di aggiungere tutti i tipi di attività personalizzate come parte del processo di distribuzione, inclusa la minifaction JS / CSS,

Extra

Sì, ce ne sono un sacco. Google per qualcosa come "CSS / JS concat". Ecco una rapida che ho trovato per CakePHP: Asset Packer .


Grazie mille per l'input. Mi piace molto quello che ho visto con Compass Framework. Vorrei solo sapere un modo per distribuirlo in PHP. Ho cercato su Google ma non riesco a trovare un'alternativa. Anche Capistrano sembra molto interessante, ma al posto del costoso e fragile modello di copia di file userei ssh per dire al client git su tutti i server remoti di fare un veloce 'git pull --rebase' dopo aver verificato che funzionava su un test prima il server.
Evan Plaice,

(segue) Anche il packer di asset sembra molto interessante. L'unica ragione per cui ho scelto l'altra risposta è stata la sua, conteneva tutto in una volta con l'elaborazione eseguita sul server stesso (quindi non sono necessari script aggiuntivi). L'unico aspetto negativo che vedo in pagepeed è l'elaborazione aggiuntiva di contenuto statico (che può essere facilmente risolto utilizzando la memorizzazione di contenuti statici nella cache e / o CDN. Vorrei davvero poterne accettare 2 perché la tua risposta contiene molte informazioni preziose.
Evan Plaice,

Non "distribuire" il framework Compass con PHP. Lo esegui semplicemente mentre scrivi il codice, compila i tuoi file CSS ogni volta che premi Salva, e i file CSS sono ciò che viene effettivamente distribuito. Per "eseguire" compass, devi prima generare il tuo file di configurazione (compass.rb) - usalo per generare le opzioni della riga di comando: jsfiddle.net/chriseppstein/PG46q/3 . Una volta che hai configurato il file di configurazione con tutti i tuoi percorsi, esegui semplicemente "compass watch" nella stessa cartella del file di configurazione e compass inizierà a ricompilare il tuo SASS ogni volta che premi Salva. Provalo su qualche progetto laterale: è MOLTO facile e veloce.
Yevgeniy Brikman,

Inoltre, per quanto ne so, Capistrano non copia molto. Ogni volta che lo distribuisci, verifica l'ultimo codice e scambia semplicemente i nomi delle cartelle. Il vantaggio è che puoi sempre tornare a una versione precedente semplicemente scambiando di nuovo i nomi delle cartelle.
Yevgeniy Brikman,

Ho trovato un articolo su come metterlo in funzione all'interno di PHP. È più facile da usare al di fuori di un progetto Ruby di quanto mi aspettassi. Gratta il mio ultimo commento su Capistrano. Ho pensato che fosse usato per inviare un comando distribuito a più server. Se avessi accesso ssh ai server remoti preferirei di gran lunga abbandonare un client git come mezzo per estrarre le ultime modifiche dal ramo di produzione. IMHO, scambiare cartelle è una cattiva idea. Preferirei di gran lunga taggare le revisioni con nel ciclo di rilascio e controllare un tag precedente se quello attuale ha problemi.
Evan Plaice,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.