NodeJS come via per l'apprendimento di JavaScript [chiuso]

3

Sono un programmatore di backend che lavora principalmente in Python. Probabilmente non vorrò mai essere uno sviluppatore front-end a tempo pieno, ma con l'obiettivo di far crescere il mio set di competenze, mi piacerebbe diventare almeno abbastanza abile in JavaScript. Al giorno d'oggi sembra un linguaggio che indossa molti cappelli e, se non altro, mi piacerebbe un po 'più di conoscenza del "loro mondo" quando lavoro con i ragazzi di front end.

Usiamo NodeJS per alcuni lavori sul lato server della mia azienda, e ne ero curioso. Ho trovato alcuni buoni tutorial e mi sembra interessante. Sembra che potrebbe essere un buon modo per familiarizzare con JavaScript, dal momento che arriva da un angolo che capisco - programmazione lato server.

Ma sono anche un po 'preoccupato che se imparassi entrambi contemporaneamente, non sarei in grado di tenere traccia di ciò che è "Stock JavaScript" rispetto alle funzionalità che sono peculiari di NodeJS.

Che cosa ne pensate voi ragazzi? Stavo facendo il bootstrap nella familiarità JavaScript imparando NodeJS una buona idea? O mi confonderò se entrassi nel nodo senza una solida conoscenza dei fondamenti di JavaScript?

    
posta Clay Wardell 22.01.2013 - 02:44
fonte

4 risposte

4

Non ha importanza.

In entrambi i casi, imparerai cose specifiche del dominio in cui lavori. Sul client, imparerai cose su DOM e conformità cross-browser. Sul lato server imparerete cose come l'accesso ai file e le librerie di database.

Sono davvero sei a uno e mezza dozzina all'altra. Se mai, sarai meno distratto dalle complessità di Node di quanto non lo farai con la complessità del JavaScript basato su browser.

    
risposta data 22.01.2013 - 03:08
fonte
4

Entrare in JavaScript è sicuramente una buona idea, poiché JavaScript sta diventando sempre più popolare.

Lo sviluppo di JavaScript front-end è estremamente diverso da quello di programmazione / sviluppo Node.js (lato server). Ogni browser ha il proprio supporto delle funzionalità JavaScript, il che significa che le funzionalità non sono sempre prontamente disponibili su tutti i browser. Soprattutto con la nuova versione di ECMAScript, sta diventando estremamente difficile da sfruttare, come la maggior parte dei browser, o la maggior parte degli utenti (a parte il chrome) sono su browser più vecchi. Chrome ha avuto aggiornamenti automatici per un lungo periodo, quindi gli utenti non devono intraprendere alcuna azione. In genere ottengono la maggior parte dei loro utenti aggiornati in poche settimane. Hai ancora Internet Explorer 6,7 e 8 problemi, e anche 9 (Non ci sono molte nuove funzionalità nelle specifiche HTML5 e ECMAScript). Firefox è abbastanza buono, e sembrano essere su una buona pista di implementare nuove funzionalità tutto il tempo.

Sul lato client ci sono 3-5 diversi motori JavaScript; V8 (Chrome & Node.js), IonMonkey (Firefox ha avuto più motori), Carakan (Opera), JavaScriptCore (Safari), Chakra (Internet Explorer). Ogni motore ha diverse architetture (JIT, byte-code, codice macchina, ecc ...) e ora ognuna ha un supporto diverso per ECMAScript 6 (Harmony).

Con Node.js, puoi iniziare a sfruttare le nuove funzionalità JavaScript poiché devi supportare solo un motore JavaScript (V8). Ciò semplifica il lavoro, dal momento che non stai saltando i cerchi cercando di eseguire funzioni di rilevamento, hackerare il sistema, ecc ...

Lezione 1: Sviluppare all'interno di Node.js è un lusso rispetto al lato client, ma con la potenza di framework e librerie come JQuery, Ember.js, Angular, Handlebars (Templating), Modernizr, ecc ... il tuo lavoro il carico diminuisce drasticamente.

Performance, ottimizzazione e DOM ... Questo è lo sviluppo del lato client. Se inizi con Node.js, inizierai a utilizzare (si spera) la build e la distribuzione di strumenti come GruntJS, Yeoman, Cake, ecc. Questi saranno incredibilmente utili quando si lavora con JavaScript sul lato client. Inizia a guardare in diversi sistemi di moduli; Node.js utilizza CommonJS. AMD è un'altra scelta per lo sviluppo.

JavaScript come linguaggio è semplice per iniziare. Una volta approfondito, scoprirai quanto è flessibile un modello prototipo.

Il modello asincrono potrebbe essere un po 'spaventoso all'inizio, ma non c'è bisogno di avere paura. È abbastanza semplice quando lo capisci. Passerai attraverso lo stadio tradizionale dell'inferno del callback, ma sarai in grado di apprendere alcuni schemi di progettazione per evitarli.

    
risposta data 22.01.2013 - 03:15
fonte
3

Il nodo in sostanza capitalizza su tutto ciò che fa risaltare JavaScript come lingua, quindi direi che è probabilmente un inizio migliore rispetto al lavoro client per te. Inoltre, la filosofia di fiducia di Python per gli utenti e la devozione della comunità Python alla scrittura di software multipiattaforma che non è maldestro, stonato e stupido tende ad essere un buon compromesso con il completo abbandono di JavaScript per offrire agli utenti molta corda da fare con quello che vogliono e l'eredità della comunità di JS di normalizzare per i browser che si rifiutano di concordare su come le cose sono fatte si adatta perfettamente a quella chutzpah di Python-cross-platform.

Quindi immagino quello che sto dicendo, è che non lo suderei. Hai il paradigma lato server e Python e JS, anche se diversi, tendono a venire da linee di pensiero simili che vorrei riassumere in:

  • Non proteggermi da me stesso o dall'altro
  • Non dare per scontato che io sia un manichino o che non vorrò mai più imparare nulla dopo il college
  • Sii facile da usare, appena fuori dalla scatola, ma dammi un potere serio quando mi prendo la briga di imparare davvero la stronzata del linguaggio e di cosa è capace

La cosa importante da ricordare su JavaScript è che, nonostante quello che dicono tutti i tipi di aggancio-parlanti di Bigwig, JS non è un linguaggio con cui siamo "bloccati". Non è qualcosa che è successo a dominare l'interfaccia utente web e quindi si è diffuso per caso su tutte le piattaforme come un super-virus. Non ha preso a calci le applet di VB, Flash, ActionScript e Java semplicemente a causa di scioccanti tentativi fuorvianti di possedere il front end del Web, astrattamente dal modo in cui tutto funziona effettivamente, o da essere intollerabilmente proprietario in termini di come quei modelli di business linguistici erano completamente indipendenti e inaccettabili al 100%. Ed è sicuro che Hell non è l'unica vera scelta per scrivere app per piattaforme mobili multipiattaforma solo perché gli sviluppatori JS sono iperattivi e prolifici. Ha vinto quelle battaglie perché è uno strumento davvero buono per quei lavori.

È elegante, ha un'opinione strong e molto focalizzata, e offre una buona linea per essere accessibile alle persone che vogliono semplicemente ottenere le cose semplici in modi ovvi offrendo opzioni molto potenti alle persone che sono disposte a prendere è un ulteriore passo avanti e capisce correttamente come fonde funzionale e funzionale-OOP in una miscela generale.

E ricorda che l'intero punto di Node.js è fondamentalmente seppellire i thread con JavaScript. È possibile eseguire contemporaneamente due processi di I / O, ma JS è solo ciò che imposta i processi e attende che finiscano. Il fatto che il linguaggio sia naturalmente bloccante ma altamente competente nella risposta asincrona trasforma essenzialmente JS in una sorta di messenger auto-queuing. Probabilmente non è lo strumento migliore per tutto ciò che vorresti mai fare su un server, ma è un paradigma piuttosto interessante per molto di più che occuparsi solo di roba di base del server web. Ma non se non lo accetti per quello che è e perché ha avuto successo. Quindi, divertiti con esso. Scopri di più su Python mentre impari di più su come JavaScript sia diverso da esso.

E mi dispiace per la sintassi basata su C. Non te ne accorgi più dopo un po ', lo prometto. Ma salta CoffeeScript fino a quando non sai come ti limiti sul fronte OOP. Probabilmente non lo vorresti.

    
risposta data 22.01.2013 - 04:03
fonte
0

JavaScript, di per sé, è un linguaggio piuttosto piccolo che è facilmente comprensibile dalla maggior parte dei programmatori, specialmente se sei un abile programmatore Python. Ci sono no nuovi concetti di programmazione nel core JavaScript. Probabilmente già conosci il 90% di ciò che c'è da sapere su JavaScript stesso.

La vera curva di apprendimento arriva quando usi JavaScript per cercare di fare del lavoro utile. All'interno di un browser, si utilizza il DOM (Document Object Model) per interagire con le pagine Web. Questo a volte è fastidioso, quindi puoi anche usare jQuery per manipolare il DOM con espressioni più brevi.

NodeJS è un modo di scrivere processi server back-end in JavaScript utilizzando un modello di programmazione altamente asincrono. A meno che tu non stia utilizzando Twisted in Python, probabilmente non avrai molta familiarità con lo stile di programmazione asincrono utilizzato in NodeJS. Quindi questa sarebbe un'altra curva di apprendimento.

Fondamentalmente dipende da cosa vuoi realmente fare con JavaScript - è solo uno strumento di linguaggio di programmazione. Le librerie che le persone costruiscono attorno a JavaScript sono dove accadono le cose interessanti.

    
risposta data 22.01.2013 - 03:11
fonte

Leggi altre domande sui tag