Freigeben über


Dieser Artikel wurde maschinell übersetzt.

HTML5

Erstellen Einer Unternehmensorientierten JavaScript-Webanwendung

[Frank Prößdorf

](https://msdn.microsoft.com/de-de/ee532098.aspx?sdmr=frankpr%c3%b6%c3%9fdorf%26sdmi=authors)Dariusz Parys

 

Microsoft ist Viel Mühe in Die Förderung der HTML5 Und JavaScript als Schlüssel Für das Windows-Entwickler Setzen and are Etliche qualitative verhungern-Bibliotheken Und Frameworks Für die Erstellung von Production-Ready Applications.In Diesem Artikel Erstellen Wir Eine Grundlegende Business-Orientierte Anwendung, die als Ausgangspunkt Für Graben Tiefer in Die Vorhandenen Optionen Dienen Kann, Und Lassen Sie Erleben, Wie Viel Spaß Qualität coding JavaScript accessed.

Die Anwendung Katalog Produkte Und Teilen Sie Sie in Kategorien Und Produkte Und Kategorien Können Erstellt, Aktualisiert Und Gelöscht (CRUD), Wie in Gezeigt Abbildung 1.Zusätzlich Zu Diesen Typischen CRUD-Operationen, die Anwendung Andere standard Aufgaben Behandeln: Internationalisierung, Punkt von Eingabe Und Tastatur-Steuerung der Anwendung.Einer der Wichtigsten Aspekte der Anwendung ist, Dass es Lokalen HTML5-Speicher Verwendet Wird, um offline-Bearbeitung Zu Ermöglichen.Wir Nicht in Die Details Aller eine Dieser Stelle Erhalten, Aber Finden Sie Den Vollständigen Code Für Diese Beispielanwendung in Codeplex.

The Products Overview ListAbbildung 1 der Liste der Produkte (Übersicht)

Erste Schritte

Wie Gehen Sie Über Eine Business-oriented JavaScript Anwendung Schreiben?Eine Bewährte Möglichkeit ist Mithilfe Einer Struktur Für die Model-View-Controller (MVC).Dies Wurde Erfolgreich in Frameworks Wie Ruby on Rails, Django Oder ASP Verwendet.NET MVC.MVC wird Eine Strikte Struktur Und die Trennung von Den Bereichen der Anwendung, Wie Die Ansicht Und Die Geschäftslogik.Dies ist Besonders Wichtig Mit JavaScript, Denn es ist Wirklich Einfach Tun Alles ein Einem Ort Verwirrenden Code Schreiben.Wir Haben oft Erinnern Wir Uns Nicht Zu Tun Und Zu Versuchen Und Sauber, Lesbar Und Wiederverwendbaren Code Zu Schreiben.Es Gibt Mehrere Frameworks, die Speziell Für Eine MVC-Struktur, Vor Allem Backbone.js, Eyeballs.js and Sammy.js.

Für Diese Beispielanwendung verwenden Wir Sammy.js, Hauptsächlich, Weil Wir Bereits Wissen, Aber Auch, Weil es Klein, Good Geschrieben ist, Getestet Und Hat Alles, was, die Wir Brauchen, um Loszulegen.Es Nicht Bieten Ihnen Eine Implizite MVC-Struktur, Aber es wird Ihnen, Problemlos Auf Basis Aufzubauen.Ist Die Einzige Abhängigkeit gegenwärtig Hat jQuery Und Das ist Eine Bibliothek, die Wir Verwenden Always Für DOM-Manipulation.Die Verzeichnisstruktur Mit Begann Sieht folgendermassen aus:

- public
  - js
      app.js
    + controllers
    + models
    + helpers
    + views
  + templates
  - vendor
    - sammy
        sammy.js
    - jquery
        jquery.js

Wir Setzen Alle Vorlagendateien, die Durch Den JavaScript-Code Im Vorlagenverzeichnis Gerendert Werden Können Und Den JavaScript-Code Zum Rendern Diese Vorlagen Im entsprechenden Ansichtenverzeichnis.

Die Anwendungsdatei

Erstellen Wir Die Tatsächliche Anwendung des Sammy.js in app.js—here Die Controller Werden Geladen Und Ihre Routen Initialisiert Werden (Siehe Abbildung 2). Wir Neigen Dazu, Namespace Alle Variablen (Controller, Modelle Usw.) Ich Erstellen. In Diesem Fall Haben Wir in diesem Namespace Karhu, Den Namen der Firma Aufrufen, Deren Produkte, die Wir Katalogisiert Sind.

Abbildung 2 Karhu.app

karhu.app = $.sammy(function() {
  this.element_selector = '#main';
  this.use(Sammy.Mustache, 'mustache');
  this.use(Sammy.NestedParams);
  this.use(Sammy.JSON); 
  this.helpers(karhu.ApplicationHelper);
  this.helpers({ store: karhu.config.store });
  karhu.Products(this);
});
$(function() {
  karhu.app.run('#/products');
});

Der Erste Schritt ist, Z. B. Plug-ins Laden Mustache, auch Eine Vorlage-Rendering-Engine.Dann Initialisieren Sie Hilfsprogramme (Karhu.ApplicationHelper) Und Controller (Karhu.Produkte).Nach Die Anwendung Definiert ist, Und die DOM-Elemente Werden Geladen, Können Sie Die app Laufen Und Leiten Sie you einer Die Erste Route ein, Die Den Index Aller Produkte ist.

Schreiben von Tests

Vor Dem Anzeigen you Funktionsweise der Produkt-Controller Und Alle Produkte Angezeigt Werden, Möchten Wir Kurz Eingehen, Wie Die Qualität der JavaScript-Anwendungen Mit Hilfe von Tests Erheblich Gesteigert Werden Kann.Wie Wir Zum Beispielanwendung Entwickeln Gingen, Schrieb Vor Jeder Wichtigen Schritt Wir Zunächst Einen Acceptance Test, um Sicherzustellen, Dass der Code Tatsächlich Funktionieren Würde.Dadurch Wird Verhindert, Dass Regressionen Garantiert Alles Vor Auch Weiterhin Funktionen Korrekt Geschrieben.Bei Komplexeren Codes Komponententests and installs the, das Die Meisten Fälle Abzudecken, die Auftreten Können, Wenn der Code Ausgeführt wird.Eine der Einfachsten Und Besten Lesbaren CAN Akzeptanztests Zu Schreiben ist Die use Capybara Mit Selen, Auch Wenn Einmal headless Browsern Wie PhantomJS Sind als Capybara-Treiber Zur Verfügung, es Wird Wahrscheinlich Sinnvoll, Diese Anstelle von Selen, Verwenden, Wie Sie Viel Schneller Sind.

Für Das Erste Szenario (Abbildung 3), Testen Wir, Ob Wir Eine Liste der Produkte Sehen Können.

Abbildung 3 Testen Szenario

Feature: Products
  In order to know which products I have
  As a user
  I want to see a list of products
  Scenario: list products
    Given a category "Trees" with the description "Plants"
      And a product "Oak" with the description "Brown"
                                         and the price "232.00€"
                                         that is valid to "12/20/2027"
                                         and belongs to the category "Trees"
      And a product "Birch" with the description "White"
                                         and the price "115.75€"
                                         that is valid to "03/01/2019"
                                         and belongs to the category "Trees"
    When I go to the start page
    Then I should see "Trees"
      And I should see "Oak"
      And I should see "Brown"
      And I should see "232.00€"
      And I should see "12/20/2027"
      And I should see "Birch"

Für Komponententests Gibt es Viele Verschiedene Möglichkeiten.Wir Verwendet, um die Arbeit Mit Jspec, Weil es Ruby-Rspec Ähnlich ist, Die Wir Vorher Benutzt Haben.Jetzt Jspec Zugunsten von als Veraltet gilt Jasmine, so Dass Wir, Die Hier Verwendet Haben.Es Funktioniert Ganz Gut Und Enthält Einen Rechen-Task, der Dadurch Problemlos Neben Den Akzeptanztests Ausgeführt.Hier ist, Wie Man Die Komponententests Für Die Beispielanwendung Aussieht:

describe("Product", function() {
  describe("attachCategory", function() {
    it("should assign itself its category", function() {
      var categories = [{id: 1, name: 'Papiere'}, {id: 2, name: 'Baeume'}];
      var attributes = {id: 1, name: 'Fichte', category_id: 2};
      var product = new karhu.Product(attributes, categories);
      expect(product.category.
name).toEqual('Baeume');
    });   
  });
});

Definieren von Domänencontrollern

Nachdem Wir Das Szenario Haben Wir Beginnen Beim Schreiben des Controllers, der Sehr Einfach ist Auf Den Ersten:

karhu.Products = function(app) {
  app.get('#/products', function(context) {
    context.get('/categories', {}, function(categories) {
      context.get('/products', {}, function(products) {
        products = products.map(function(product) { return new karhu.Product(
          product, categories); });
        context.partial('templates/products/index.mustache', {products: products});
      });
    });
  });
};

Im Moment es Nur Eine Route bestimmt Gibt, d.h. Eine GET Auf der Route #-Produkte.Der Rückruf Wird Ausgeführt, Sobald der Location-Hash in der URL Zu Schärfung Ändert. If you Route Auf Ihre URL (Z. B. http://localhost:4567/Index.HTML#/Products) Anhängen, Wird in diesem Fall der Angeschlossene Rückruf Ausgeführt. Das Gleiche Passiert, Wenn Zuerst Die Anwendung Gestartet Wird, da Wir in app.js bestimmt ist, Dass der Erste Pfad Auf Derselben Route Zeigt.

Wir Rufen Innerhalb der Route Die Kategorien Und Produkte Über Hilfsprogramme, die Nur Eine Einfache AJAX-GET-Anforderung ein Back-End Zu Tun. Sobald Wir Diese Daten Abrufen, Werden Wir JavaScript-Objekte Zuordnen Und Dann Diese Objekte Innerhalb der index.mustache-Vorlage Gerendert. Dadurch Wird Dargestellt, in Dem < Div Id = "main" > HTML-Tag, als Die Root-Element_selector in der Datei app.js Definiert Wurde.

Definieren von Modellen

Wir Müssen Die Daten Für JavaScript-Objekte Zuordnen, so Dass Wir die Produkte der Kategorie Zuordnen Können, die Sie Angehören Und Rendern der Name der Kategorie Zusammen Mit Dem Produkt, Die Wie Folgt Aussieht:

karhu.Product = function(attributes, categories) {
  _.extend(this, attributes);
  attachCategory(this, categories);
  function attachCategory(product, categories) {
    product.category = _.find(categories, function(category) {
      return parseInt(category.id, 10) === parseInt(product.category_id, 10);
    });
  }
};

Wir blenden Das Objekt Mit Den Attributen des Produkte Und Wir die Kategorie des Produkte an Das Objekt Anzuhängen.Wir Halten Die AttachCategory Innerhalb der Schließung Zu Machen, Eine private Funktion.Beachten Sie in Diesem Code die Verwendung der Funktionen Unterstrich, Enterprise Edition von Underscore.js.Diese Bibliothek Definiert Hilfsmethoden Für Enumerables Und Hilft Ihnen, Leicht Zu Lesende, precise Code Schreiben.

Abbildung 4 Zeigt, Wie Das Modell Für Den Benutzer Angezeigt Wird.

Interacting with the Product Model in the Web AppAbbildung 4 Interaktion Mit Dem Produktmodell in der Webanwendung des Beispielgateways

Rendering von Vorlagen

Mit Dem Modell Nur Gezeigt, Wir Brauchen Eine Zusätzliche Ansicht Layer-Objekt ist der Renderinglogik very Basic Nicht – Nur werden Die Objekte der Produkte, Die Wir Erstellt Und Zeigt Die Attribute der Einzelnen, einschliesslich der Namen, Den Kategorie, die Wir Vorher verknüpft.Logik-Freie Mustache-Vorlage aus, Die Gerendert Wird, Sieht aus Wie in Angezeigt Wird wurde und die Abbildung 5.

Abbildung 5 Die Vorlage Mustache

    <h2>Products</h2>
    <table>
      <thead>
        <tr>
          <th>Name</th>
          <th>Description</th>
          <th>Price</th>
          <th>Valid To</th>
          <th>Category</th>
        </tr>
      </thead>
      <tbody>
        {{#products}}
          <tr>
            <td>{{name}}</td>
            <td>{{description}}</td>
            <td>{{unit_price}}</td>
            <td>{{valid_to}}</td>
            <td>{{#category}}{{name}}{{/category}}</td>
          </tr>
        {{/products}}
      </tbody>
    </table>

Die Ausgabe Wird Angezeigt, Abbildung 6.

Rendered HTML Output from the Mustache TemplateAbbildung 6 HTML-Ausgabe aus der Vorlage Mustache

Modellspezifische Controller-Code in Das Modell verschieben

Es ist Eine Frage des Geschmacks Wie Viel Verantwortung Einen Controller Und Wie Viel in Modellcode Umgestaltet Werden Kann.Ggf. den Code Schreiben, Abbildung 5 in Einem Mehr-Modell-Zentrierte Modus, Konnte Ich so Etwas Wie Abbildung 7.

Abbildung 7 eine Weitere Modell-Orientierten Ansatz

Controller

karhu.Products = function(app) {
  app.get('#/products', function(context) {
    karhu.Product.all(function(products) {
      context.partial('templates/products/index.mustache', {products: products});
    });
  });
};

Modell

karhu.Product.all = function(callback) {
  karhu.backend.get('/categories', {}, function(categories) {
    karhu.backend.get('/products', function(products) {
      products = products.map(function(product) { return new karhu.Product(product, categories); });
      callback(products);
    });
  });
};

Standard-Aufgaben

Es Gibt Eine Reihe von Aufgaben, die Sehr Häufig Auf Web-Entwicklung Und Wird Wiederholt, Wenn Sie Mit JavaScript-Anwendungen Arbeiten. Wollen Wir Erklären, Wie Wir Diese Aufgaben in Angriff Genommen Und Die Probleme, die Wir Festgestellt. Wie Üblich, Gibt es Mehrere Möglichkeiten, Ein Problem Herangehen.

Authentifizierung die Meisten Anwendungen, Einschließlich Dieses Hinzufügen Grundlegende Sicherheit, Indem Sie des Benutzers Anmelden. Da HTTP Statusfrei ist, Müssen Sie Die Authentifizierung Mit Jeder Anforderung Erneut Zu Senden. You can Kümmern Stirbt Durch Speichern Eines Tokens Bei der Ersten des Benutzers (Anmeldung) Und Mithilfe Dieses Tokens Lohnabzug Für Jede Anforderung. Ich Beschloß Zu Tun War Ein Token Im Lokalen Speicher Speichern, Nachdem der Benutzer Erfolgreich Angemeldet Hatte, Und Senden Sie Dieses Token als Header, die XMLHttpRequest Zugeordnet. Der Code Hierzu ist Dargestellt, in Abbildung 8. In Einem Back-End-Modell die Durch Den Helfer Verwendet Wird, Die Wir Bereits Inhalt is this Code Verstaut.

Abbildung 8 Ein Token Zu Speichern, Wenn Sich Ein Benutzer anmeldet

this.get = function(url, data, success, error) {
  sendRequest('get', url, data, success, error);
};
function authenticate(xhr) {
  var token = '';
  if(karhu.token) {
    token = karhu.token;
  } else if(karhu.user && karhu.password) {
    token = SHA256(karhu.user + karhu.password);
  }
  karhu.token = token;
  xhr.setRequestHeader("X-Karhu-Authentication", 'user="' + karhu.user + '", token="' + karhu.token + '"');
};
function sendRequest(verb, url, data, success, error) {
  $.ajax({
    url: url,
    data: data,
    type: verb,
    beforeSend: function(xhr) {
      authenticate(xhr);
    },
    success: function(result) {
      success(result);
    }
  });
}

Abbildung 9 Zeigt Ein Benutzertoken Gespeichert.

X-Karhu-Authentication Included in an HTTP Request
Abbildung 9 X-Karhu-Authentifizierung in Einer HTTP-Anforderung enthalten

Wenn der Benutzer Gerade Angemeldet, Müssen Sie Einen Benutzernamen Und Ein Password available. Wenn der Benutzer Zuvor Angemeldet, Können Sie Eine Stored Procedures Token. In Jedem Fall you die Token Oder Password/user_name-Artikelkombination als Header Anfügen, Und Wenn Die Anforderung Erfolgreich ist, Wissen Sie, Dass der Benutzer Erfolgreich Authentifiziert Wurde. Andernfalls Wird Das Back-End Nur Einen Fehler Zurück. Dieser Ansatz War Relativ Einfach Zu Implementieren Und Die nur Ausgabe, Die Wir Festgestellt Wurde, Dass der Code Etwas Komplexer Und Unlesbar Geworden ist. Um trennt Dieses Problem Zu beheben aus Unternehmenskonto, Umgestaltung Wir Hilfsprogramme in Ein Modell. Abstrahiert die Anforderungen in Ein Back-End-Modell ist Durchaus Üblich, Wie Z. B. Mit der Backbone.js-Bibliothek, in Denen es Sich um Ein Kernbestandteil der Bibliothek ist. Authentifizierungscode ist oft Für Jede Anwendung Eindeutig, Und es Kommt Immer Auf Dem Back-End Und war und der Front-End Zu Senden.

Internationalisierung (I18n) Internationalisierung ist Eine Häufige Aufgabe Für Webanwendungen Und jquery.global.js Wird Häufig Verwendet, um es in JavaScript-Anwendungen Zu Erreichen. Diese Bibliothek Stellt Methoden Zum Formatieren von Zahlen Und Datumsangaben Und wird es können Sie von Zeichenfolgen, die Ein Wörterbuch Für Das Aktuelle Gebietsschema Verwenden. Nachdem Sie Dieses Wörterbuch Mit Schlüsseln Und Werten Übersetzte Ein Einfaches JavaScript-Objekt ist beladen, ist Das Einzige, war, Dem Sie Achten Müssen, Zahlen Und Datumsangaben Formatierung. Ein Vernünftiger Ort Dafür ist in Den Modellen Vor Dem Rendern der Objekte Zu Den Vorlagen. Im Produktmodell Würde es Wie Folgt Aussehen:

var valid_to = Date.parse(product.valid_to);
product.valid_to = $.global.format(valid_to, "d");

Abbildung 10 Deutsch als Anzeigesprache Zeigt.

Switching the Language to German
Abbildung 10 Wechseln der Sprache Deutsch

Punkt Einer der Vorteile Bei der Entwicklung in JavaScript ist, Dass Sie Das Benutzer in Echtzeit-Feedback Geben Können. Es ist Sinnvoll, Dieses Potenzial Zu Verwenden, um die Daten Zu Überprüfen, Bevor Sie eine Den Back-End Gesendet Wird. Beachten Sie, Dass es Weiterhin Erforderlich ist, die Daten Im Back-End-als Auch Überprüfen, da Möglicherweise Anforderungen, die Keine Front-End Verwenden. Die jQuery-Bibliothek jquery.validate.js Wird Häufig Für Die Punkt Verwendet. Es Bietet Eine Reihe von Regeln in Einem Formular Und Zeigt Fehler in Die Entsprechenden Eingabefelder, Wenn der Inhalt Nicht Die Regeln Entspricht. Es Sinnvoll, Strukturieren Die Validierungsregeln in Die Modelle Haben Wir Bereits, so Dass Jedes Modell Eine Validierungen-Funktion Verfügt, Die Die Regeln Zurückgibt. Hier ist Wie die Punkt Für Unser Modell Kategorie Aussehen Könnte:

karhu.Category = function() {
  this.validations = function() {
    return {
      rules: {
        'category[name]': {
          required: true,
          maxlength: 100
        }
      }
    };
  };
};

Abbildung 11 Gezeigt, Wie Fehler Anzeigen Kann.

A Validation Error on Creation of a New Category
Abbildung 11 Eine Validierungsfehler Bei der Erstellung Einer Neuen Kategorie

Punkt Geht Weiter. Navigation Weg von Nicht-Eingesendete Formen ist verboten. Der Benutzer Gültige Daten Tatsächlich Senden Oder Proaktiv Abbrechen Dateneingabe Muss (Siehe Abbildung 12).

A Red Flash Notification Warns User of Unsubmitted Form Data
Abbildung 12 A Red Flash Benachrichtigung Benutzer, der Warnt Nicht Übermittelte Daten

Zwischenspeichern von Objekten Für Die Offlinebearbeitung Benutzer auch offline Arbeiten Müssen. Dies ermöglicht dem ist Die Zentrale Und Komplexesten Teil der Anwendung. Alle Objekte Müssen Vor der Zeit Zwischengespeichert Werden, so Dass-Sobald die Anwendung offline ist Sie Richtig zurückgegeben, Paginiert Und Gefiltert Werden Können. Es müssen Sich um Eine Warteschlange Für Alle Aktionen, Die Place, Bevor Die Objekte Zwischengespeichert Werden, so Dass Diese Aktionen Auf Die Objekte Angewendet Werden Können, Sobald Sie Zwischengespeichert Sind. Es muss Auch Eine Zweite Warteschlange Sein, die Gefüllt Wird, Sobald Wir Tatsächlich offline Sind, so Dass Wir Wieder online Sind, Alles, war offline Gemacht Wurde, bis Zum Back-End Gepatcht Werden Kann. Abbildung 13 Zeigt Die Anwendung offline.

The Application Response When Taken Offline
Abbildung 13 Die Reaktionsgeschwindigkeit der Anwendung Beim Offline geschaltet

Es Gibt Eine Reihe von Problemen, die Zusätzlich Zu Den Ohnehin Komplizierte caching Und Warteschlangenprozess Behandelt Werden Müssen. Z. B., Wenn Ein Objekt offline Erstellt Wird, Kann Nicht es Aktualisiert or without the Code Gelöscht Werden, da es Eine Id Besitzt. Wir Umgangen, Die Jetzt Durch Die Sperrung Einfach Diese Aktionen Für Objekte Erstellt Während offline. Aus Diesem Grund Derselben Kategorien Erstellt, Während Sie offline Zum Erstellen von Produkten Verwendet Werden Kann. Ich Anzeigen Nicht Einfach Diesen Kategorien, in der Liste der Verfügbaren Kategorien Für Ein Produkt Zu Schaffen. Diese Art von Problemen Können Durch Die Arbeit Mit Temporären Ids Und Durch Eine Neuanordnung der Offlinewarteschlange Gelöst Werden.

Darüber Hinaus Müssen Die neuesten Stückelung Und Die Vorlage Zwischengespeichert Werden. Stirbt Kann Entweder Durch Ein Manifest Cache Erfolgen Im Sinne des HTML5, Wenn Die Gruppe Gezielte Browser Stirbt Unterstützt, Oder Einfach Durch Laden der Stückelung Und Setzen Sie in Den Lokalen Speicher. Dies ist Ganz Einfach Mit Sammy.js Und Sieht Etwa so aus:

context.load('templates/products/index.mustache', {cache: true});

Integration in Windows

Internet Explorer 9 Eignet Sich Hervorragend Zum Ausführen von HTML5 Anwendungen.Darüber Hinaus kann es Web-Anwendungen Zu Nativ in der Windows 7-Taskleiste Integriert, Verbessern Die Anwendung Die Möglichkeit, Benachrichtigungen Anzeigen, wenn Sie Navigation Zu Integrieren Und Bieten Support Für Jump List.Die Integration von Sprunglisten ist Einfach, in Seiner Einfachsten Form Nur Eine Deklaration der Meta-Tag-Attribut.Dies ist Genau Die Ansatz Karhu, crleichtert Users Das Zugreifen, war you can Simply.Sie Können Die Jump List-Aufgaben, um den Ansichten Produkt Hinzufügen, Fügen Sie Kategorien, Überblick Über Die Produkte Und Kategorien Übersicht Anweisen (See Abbildung 14).Der Folgende Code demonstriert, Wie Eine Einfache Aufgabe für Jump List Deklarieren:

    <meta name="msapplication-task"
          content="name=Products;
          action-uri=#/products;
          icon-uri=images/karhu.ico" />

Jump List TasksAbbildung 14 Jump List-Aufgaben

Erfahren Sie Alles Über festhalt Und Windows 7-Integration Auf Meine Fixiert Website Erstellen, die Zusätzliche Ideen Für Web-Anwendungen, Wie Z. B. Browser-Benachrichtigungen Und Dynamischen Jumplists Mithilfe von JavaScript Hat.  Es ist Einfach, Ihre Webanwendung Mit Nur Ein Wenig Zusätzlichen Aufwand Mehr Funktionalität Hinzu.Andere Ansatzpunkte für ein besseres Verständnis des Themas immer sind die MSDN JavaScript Language Reference und die Dokumentationen der oben genannten Bibliotheken und Rahmen.

Zusammenfassung

An diesem Punkt haben wir alle die grundlegenden Anforderungen für die Beispielanwendung implementiert.Mit genügend Zeit konnten wir auch der zuvor erwähnten Probleme kümmern.Aufgaben wie Authentifizierung, Internationalisierung und Geschäftslogik behandeln müssen codiert werden, unabhängig von den Frameworks und Bibliotheken, die lediglich einen Ausgangspunkt sind.

Wenn Sie immer Tests schreiben, und achten Sie auf die Struktur der Anwendung schreiben produktionsreif JavaScript-Anwendungen, die kontinuierlich weiterentwickelt werden, unserer Meinung nach nicht nur möglich, aber auch Wert der Investition in ein Ziel.Erste Schritte ist einfach, aber es ist wichtig, eine saubere Codebasis überprüft und ggf. die Umgestaltung.Wenn diese Anforderungen erfüllt sind, gibt JavaScript Ihnen die Möglichkeit, sehr elegante und verwaltbare Anwendungen schreiben.

Frank Prößdorf ist ein freiberuflicher Web Developer und Mitbegründer von NotJustHosting , arbeiten mit JavaScript und Ruby liebt.Seine Leidenschaft zu entdecken und mit neuen Technologien zu spielen.Er unterstützt open Source-Software regelmäßig, wie er begeistert über die Gelegenheit ist, beitragen und Freigeben von Code und Ideen.  Neben seiner Arbeit genießt er Reisen, Segeln und Tennis spielen.  Einführung in Prößdorf über seine Github Profile oder seines Website.

Dariusz Parys ist ein Developer Evangelist bei Microsoft Deutschland, Webentwicklung mit einem starken Fokus auf kommende Technologien befassen.Er ist derzeit eine Menge von JavaScript und HTML5 schreiben.Sie können Parys über seinen Blog erreichen downtocode.net

Dank der folgenden technischen Experten für die Überprüfung dieses Artikels: Aaron Quint