2014-05-05 9 views
7

Sto pensando di creare qualcosa con lo stack MEAN. Ho bisogno di un modo per modificare il contenuto del sito, come ad es. Offerte Wordpress (fondamentalmente un CMS).NODE e CMS con angularjs: come cooperano

Il bit confusionario è il modo in cui CMS e Angular funzionano insieme. Ho esaminato un CMS denominato Keystone e in questo caso è necessario configurare alcuni instradamenti, ecc. Nel nodo. Non si verificherà questo crash con il routing impostato in Angluar?

In altri CMS che ho usato, la creazione dei punti di vista accade sul lato server. In Angular, per quanto ho capito, crei un modello HTML, che puoi popolare con i dati in un controller angolare. Questo sembra anche qualcosa che potrebbe bloccarsi tra CMS e Angolare. È questo il caso?

c'è qualche altro stranezze o simili sui sistemi di managment angolari e di contenuto che dovrei sapere, o è di solito non molto problemi di integrazione dei due?

+0

Non proprio una "risposta", ma per "funzionare" Angular si aspetta davvero che ogni percorso sul server restituisca il file .htm di base (di solito index.htm). Questo è il file che contiene il tuo data-ng-view (o data-ui-view se usi ui router). Da lì Angular "subentrerà", determinerà il tuo percorso e caricherà la tua vista corretta. Non ho idea di quanto sia compatibile (se non del tutto) con il Keystone CMS, però :) –

risposta

3

Fondamentalmente, sono necessari tre set di percorsi (o due se lo si sta facendo a buon mercato).

Avviare una serie di percorsi sul server che restituiscono pagine Web normali. Dimentica JavaScript. Non coinvolgere Angular in questa fase.

In secondo luogo, aggiungere un altro insieme di percorsi sul server che restituiscono dati in un modulo più grezzo (come JSON). In genere si tratta di un'API RESTful.

Terzo, aggiungere Angolare al client. Quando la vista deve essere aggiornata, aggiorna l'URL nel browser e usa Ajax per colpire l'API RESTful per ottenere i dati necessari per popolarlo. (Si desidera che l'URL impostato sulla barra degli indirizzi corrisponda all'URL della pagina dal primo set di route che si sta duplicando con JS e dai dati della rotta RESTful).

Se lo si sta facendo a buon mercato, like Gawker did, si salta la prima serie di percorsi e si passa direttamente all'approccio JS + REST.

+0

Grazie per la risposta. Ho una domanda però; cosa intendi con "a buon mercato"? – ptf

+0

Intendo dire saltare l'investimento di tempo e risorse sul passaggio 1, risultando in un sito Web JS dipendente, non progressivamente migliorato, fragile. – Quentin

+0

Quindi il routing degli angolari dovrebbe corrispondere al routing nel nodo. Questo non provocherà una sorta di conflitto? Nodo invia un po 'di markup e Angular ottiene lo stesso markup? – ptf

7

meanjs.org ha un approccio abbastanza buono a questo. Installa meanjs. Viene fornito con un sigin/iscrizione e consente anche di creare articoli dall'installazione di vanilla.

In parole semplici, quando si crea un'app Web con lo stack MEAN, pensare ad AngularJS come app "THE" e node.js come api. Se ti avvicini a costruire la tua app web come un'applicazione javascript (AngularJS), che capita di ottenere i suoi dati da un server api (node.js), inizierai a capire come utilizzare correttamente lo stack MEAN.

Primo: angolare avrà i percorsi definiti nella $routeProvider. Costruisci prima gli URL di routing in AngularJS. Sono "THE" percorsi per la tua app web. Un buon modo per vederlo è costruire la porzione AngularJS con la possibilità di cambiare il tuo server API, anche in un altro linguaggio (PHP, python, go, ecc.) Se necessario.

Secondo: Costruisci il tuo AngularJS di comunicare alle API con $resource. In sostanza, una risorsa $ è un modo semplice per chiamare un'API utilizzando un instradamento riposante. Questo "instradamento riposante" è ora il routing che deve essere "imitato/copiato" nel routing per le rotte node.js.

Spesso le rotte di AngularJS (l'url) corrispondono al routing di risorse $ che corrisponde al routing node.js.

Ancora una volta, dare un'occhiata a meanjs.org e si avrà una migliore comprensione su come organizzare correttamente ciò che "sembra" (e in realtà sono) due app separate.

1

Penso che avete bisogno di CMS su ambiente di sviluppo pila MEDIA. ci sono alcuni cms sullo stack medio che puoi provare.

  1. PancilBlue
  2. Calipso

provare questo.

1

Stavo provando qualcosa di simile, ho trovato questo link molto utile AngularJsCMS Ha detto di rispondere gratuitamente cms che si basa su angularjs e hanno la capacità di creare pagine come wordpress e gestire i contenuti.

+0

Si noti che [risposte solo per collegamento] (http://meta.stackoverflow.com/tags/link-only-answers/info) sono scoraggiate, pertanto le risposte dovrebbero essere il punto finale di una ricerca di una soluzione (vs. ancora un altro scalo di riferimenti, che tendono a diventare stantii nel tempo). Si prega di considerare l'aggiunta di una sinossi autonoma qui, mantenendo il collegamento come riferimento. Inoltre, la diffusione di un collegamento attraverso il sito potrebbe essere considerata .. spam. – kleopatra

+0

il link è rotto – eMBee

1

Abbiamo lavorato a un progetto utilizzando angular e keystonejs. Servi semplicemente il layout del modello predefinito trovato in keystone e inserisci il tag data-ng-view all'interno del tag body. Fornisci questo modello per tutte le richieste a '/'.

Quindi scrivere la propria app angolare normalmente per consumare endpoint. Questi endpoint possono essere eseguiti in keystone usando il middleware api. Nel file routes/index.js aggiungere una coppia chiave/valore nell'oggetto percorsi con il nome dell'endpoint personalizzato, quindi importare la cartella contenente le definizioni della funzione endpoint.

var routes = { views: importRoutes('./views'), api: importRoutes('./api') };

exports = module.exports = function(app) { 
app.get('/api/posts', keystone.middleware.api, routes.api.post.index);} 
0

Recentemente ho migrato il mio blog verso Meanie - una consuetudine leggero SIGNIFICA Stack CMS che ho sviluppato.

L'ho reso open source per chiunque di utilizzare e pubblicato i dettagli e le istruzioni di installazione sul mio blog al http://jasonwatmore.com/meanie.