Siti con basi di codice sovrapposte. Sviluppo di più siti con piccole modifiche

3

Devo sviluppare 3 siti diversi

  1. video.com per l'hosting di video
  2. audio.com per l'hosting di audio
  3. docs.com per l'hosting di documenti.

nomi di dominio, ad esempio solo

Quasi l'80% delle funzionalità è uguale per tutti e tre, con il restante 20% che presenta funzionalità completamente diverse ...

Come gestisco questo? In che modo siti come SO gestiscono questo aspetto?

Sto sviluppando questo nel framework YII e stavo pensando di avere queste diverse funzionalità come moduli ma in questo caso i collegamenti di menu / codice nel codice html possono diventare difficili.

    
posta aWebDeveloper 30.09.2012 - 18:05
fonte

3 risposte

2

Il modo in cui lo abbiamo fatto nelle aziende a cui ho lavorato è che abbiamo una riga di codice comune nel controllo del codice sorgente. È qui che vive l'80% del codice. È funzionale al 100% e potrebbe essere implementato da solo, se necessario. È come il sito web di vanilla.

Quando arriva un nuovo sito web che deve essere costruito su questa base, diramo il codice dalla linea comune in un nuovo progetto. Tutte le personalizzazioni sono fatte in quel ramo con le versioni che arrivano da lì.

Se un bug nel codice comune viene scoperto in un progetto, viene risolto nella riga comune e quindi inviato a tutti i progetti in modo che tutti i progetti ottengano la correzione. Non si spinge mai da un sito di progetto a codice comune, si spinge sempre dal codice comune verso i siti di progetto.

Come scuoiare un sito. Usare i CSS aiuta molto. Seguo il blog di Jeff Atwood, Coding Horror, e ha realizzato un post che ci ha davvero aiutato. È stato come mi è stato presentato di meno. Va in che modo la rete Stack Exchange è in grado di skinare i loro siti in modo rapido e semplice.

Puoi trovare il post qui. Non sono certo se c'è un modo per usarlo in php, ma è qualcosa da esaminare. È stato un risparmiatore di vita per noi nella mia attuale compagnia.

    
risposta data 30.09.2012 - 19:52
fonte
0

Drupal fa un rapido lavoro sull'esecuzione di più siti da un singolo codebase - link

Credo che CodeIgniter abbia anche un'ottima capacità di creare un cluster di siti usando la stessa base di codice - link

    
risposta data 01.10.2012 - 00:25
fonte
0
  • Estrai il maggior numero possibile di funzionalità aziendali in moduli comuni separati (nel caso delle nostre applicazioni asp.net utilizziamo progetti separati all'interno di una soluzione per la logica generica in un'applicazione e una soluzione comune separata per moduli core / helper utilizzati in un intervallo di un'applicazione),
  • Non eseguire l'hardcode, rendere le cose configurabili tramite una sorta di file di configurazione o configurazione del negozio in un db. Utilizzare un config / db separato per ciascun dominio. Ciò consente di mantenere una base di codice singola e decidere di distribuire quale 'sapore' dell'applicazione da utilizzare. Ciò vale anche per le costanti site specific, le stringhe di connessione db (quelle che ovviamente non puoi memorizzare in un db), i file css da usare e il contenuto del sito, inclusa la navigazione del sito,
  • Suddividi le pagine in componenti. Usa i controlli utente o qualsiasi cosa l'equivalente in PHP possa essere (risulta che non è così semplice come pensavo, ma potresti voler controllare questa domanda SO ). Puoi assemblare i componenti secondo necessità e riutilizzarli tra i siti,

  • Usa file CSS separati se ci sono grandi differenze nella progettazione dei siti, altrimenti usa lo stesso css come base e introduce uno stile specifico del sito usando una classe di alto livello (ad esempio usa .btn per lo stile di base di pulsanti e .audio-com .btn o .video-com .btn per lo stile specifico del sito). L'utilizzo di preprocessori CSS come LESS o SASS rende naturale questo approccio. Tyanna ha fornito un link a un post del blog sull'argomento in una risposta precedente,

  • Evitare di forgiare il codice base. Se non puoi, assicurati almeno di avere una base di codice funzionante decente prima di farlo. Se stai scrivendo da zero, finisci un sito come prototipo e solo dopo forchetta. Dover mantenere e applicare correzioni di bug a tre basi di codice separate è una seccatura, e peggiorerà solo man mano che le codebase divergeranno nel tempo. In generale, questa è una decisione che non dovresti prendere alla leggera, anche se renderà la tua vita più semplice per il momento. Tornerà da te se / quando ti verrà assegnato il compito di mantenere i siti.
risposta data 01.10.2012 - 01:06
fonte

Leggi altre domande sui tag