Z tego co rozumiem
- HTML jest językiem znaczników, podobnie jak zawartość XAML, XIB i wszelkich innych aplikacji Android oraz innych natywnych platform programistycznych.
- JavaScript jest językiem programowania używanym wraz z nim do obsługi skryptów po stronie klienta, który będzie obejmował między innymi obsługę zdarzeń, sprawdzanie poprawności po stronie klienta i cokolwiek innego, co C #, Java, Objective-C lub C ++ robią w różnych takich ramach.
- Istnieją wzorce MVC / MVVM dostępne w ramach formy, takich jak Sencha, Angular itp.
- Mamy localStorage w postaci zarówno sqlite, jak i magazynu kluczy-wartości, podobnie jak inne frameworki, i masz specyfikację API dla prawie wszystkiego, czego brakuje.
- Ilekroć natywne frameworki interfejsu użytkownika muszą wyświetlać interfejs użytkownika, muszą analizować podobny znacznik i renderować interfejs użytkownika.
Podział pytania
- Co powstrzymuje się od robienia tego samego w HTML i JS?
- Zamiast mieć kontrolę sieci lub przeglądarkę jako warstwę pośrednią, dlaczego HTML (wraz z CSS) i JS nie mogą działać tak samo?
- Nawet jeśli istnieje warstwa, tak samo środowisko uruchomieniowe .net i JVM są w innych przypadkach, w których C ++, C nie są używane.
- Weźmy więc przykład Androida, takiego jak Dalvik, dlaczego Chromium nie może być kolejną opcją (wraz z Dalvik i NDK), w której HTML robi to, co robi znaczniki Androida, a JavaScript robi to, co robi Java?
Pytanie brzmi:
Nawet jeśli obecne implementacje nie są tak dobre, ale teoretycznie jest możliwe, aby aplikacje oparte na HTML5 działały jak inne aplikacje natywne specjalnie na urządzenia mobilne?
javascript
mobile
html5
chrome
Amogh Talpallikar
źródło
źródło
Odpowiedzi:
Chłopiec plakatu dla aplikacji HTML5, LinkedIn wyszedł na rynek na początku 2013 roku. W wywiadzie dla VentureBeat wyjaśniają dlaczego.
Myślę, że jest to część najbardziej odpowiednia dla twojego pytania:
...
źródło
Brak standardowej biblioteki Javascript jest strasznym inhibitorem. Istnieją świetne frameworki, takie jak jQuery, Dojo, YUI, aby wymienić tylko kilka, ale wszystkie z nich są skoncentrowane wyłącznie na warstwie prezentacji i XHR.
Czy chcesz konfigurowalnego rejestrowania, narzędzi kryptograficznych, algorytmów grafowych, generatorów UUID, map, zestawów, drzew, szablonów, zarządzania zależnościami, manipulacji datami, lokalizacji / internacjonalizacji, operacji matrycowych, wstrzykiwania zależności, testów jednostkowych, redukcji map, przetwarzania XML? Trivial dla języków JVM lub .NET - w Javascripcie często musisz stworzyć własną implementację.
źródło
Jednym z powodów, dla których Javascript jest wolny, jest całkowity brak bezpieczeństwa typu. Każda zmienna może być dowolnego typu w dowolnym momencie. Ponadto większość operacji jest prawidłowa dla wielu różnych typów, ale ma inną semantykę . Prosty termin
nie jest to takie proste dla interpretera, ponieważ
a
ib
może być cyframi lub łańcuchami. Gdy oba są liczbami, jest to dodatek arytmetyczny. Gdy oba są ciągami, jest to konkatenacja ciągów. Jeśli jeden jest ciągiem, a drugi jest liczbą, liczbę należy sformatować przed wykonaniem konkatenacji ciągu. Są to całkowicie różne operacje, które wymagają różnej interpretacji argumentów.W zależności od typu
a
ib
, typema
może być teraz liczba całkowita, podwójna lub ciąg, niezależnie od tego, jaki był wcześniej.Ponieważ zmienne w JS mogą zmienić swój typ w dowolnym momencie, interpreter prawie nie przechodzi do oceny typów za każdym razem, gdy wywoływana jest ta instrukcja, aby uniknąć wykonania niewłaściwej operacji. Wymaga to dodatkowych cykli procesora.
Inne funkcje, które znacznie utrudniają optymalizację, to rzadkie tablice lub odśmiecanie pamięci i procedury obsługi zdarzeń, które mogą być uruchamiane w dowolnym momencie.
Spójrz na asm.js - jest to podzbiór Javascript, który pozwala na znacznie lepszą optymalizację poprzez pozbycie się niektórych funkcji JS, w szczególności dynamicznego pisania.
źródło
a
może być liczbą całkowitą, ciągiem znaków lub podwójnym itd., Masz rację. Starsze przeglądarki, które nadal używają interpreterów, oczywiście nie mają tych optymalizacji.