Maszynografia jest jedną z grupy języków, które używają Javascript. Runtime AS Execution Środowisko: Pliki zawierające kod maszynowy są kompilowane do normalnego JavaScript, który można następnie uruchomić przez przeglądarkę.
Jeremy Ashkenas po raz pierwszy sprawiło, że koncepcja popularna wraz z językiem coffeeScript, ale niestety, jego stosunkowo tierszowa składnia była trudna do nauki dla programistów zapoznanych z C # lub Visual Basic.
Ponieważ Microsoft rozszerzył się do technologii Web 2.0, zdecydował się wziąć inspirację z Jeremy'ego Ashkenasa. Ze względu na możliwości studiów wizualnych deweloperzy mogą po prostu włamać się podczas profilowania z różnych rozszerzeń językowych.
Używane maszyny nie ogranicza się do pisania statycznego: Jest również wyposażony w różnorodne zaawansowane funkcje, które umożliwiają symulację paradygmatów programowania zorientowanych obiektów w sieci. Ten krótki przewodnik przeniesie Cię przez niektóre z kluczowych funkcji. Jeśli językiem odwołuje się do Ciebie, więcej informacji można nauczyć w locie.
Nawet jeśli maszyny można również stosować na Linuksie lub MacO, będziemy trzymać się oficjalnym IDE Microsoft. Pobierz bezpłatną edycję społeczności Visual Studio 2017 Microsoft tutaj i upewnij się, że zaznacz ładunek ASP.NET podczas wdrażania.
Ze względu na szybką kadencję typu ReleaseScript, Visual Studio musi zostać rozszerzone modułem SDK, który można pobrać witryna Microsoft tutaj . Wystarczy uruchomić instalatora, jak to był standardowy aplikacja Windows.
Nie byłoby to Microsoft, gdyby nie byłoby niektórych dodatkowych kłopotów: Podczas gdy SDK uaktualniają instalację Visual Studio, rzeczywisty kompilator TSC nie jest dodawany do linii poleceń. Ten problem najlepiej rozwiązany za pomocą menedżera pakietu NPM NPM w NPM.JS w wierszu poleceń.
PS C: Użytkownicy Tamha Downloads & GT; NPM install -g maszynopis
C: Użytkownicy Tamha AppData Roaming NPM TSC - & GT; C: Użytkownicy Tamha AppData Roaming NPM Node_modules \ Testript BIN TSC
C: Użytkownicy Tamha AppData Roaming NPM TsServer - & GT; C: Użytkownicy Tamha AppData Roaming NPM Node_modules \ tSserript BIN TSSERVER
C: Użytkownicy Tamha AppData Roaming NPM
`- maszynopis Zdję[email protected].
Visual Studio spodziewa się pracować w procesie rozwiązania: podczas gdy interesujący jest to mniej niż idealne dla naszych potrzeb. Zamiast tego utwórz plik o nazwie pracownika.ts i umieść go w wygodnym miejscu w systemie plików. Otwórz go, przeciągając go do Visual Studio i upuść ją wewnątrz paska narzędzi na górze. Następnie zmodyfikuj jego zawartość, aby uwzględnić następujący kod:
Funkcja Sayoi () {
Alert ("Oi!");
}
Sayoi ();
Jak wspomniano we wstępie, plik .ts nie może zrobić wiele samodzielnie. Z uwagi na to, przejdź do tworzenia pliku o nazwie index.html, który musi znajdować się w tym samym folderze. Następnie dodaj pokazany kod szkieletu towarzyszący temu krokowi. Ładuje wyjście kompilatora i prowadzi ją tak, jakby był jakikolwiek inny bit JavaScript.
HTML & GT;
& lt; Head & GT;
& lt; skrypt SRC = "pracownik.js" & gt; & lt; / script & gt;
& LT; / Head & GT;
& LT; Body & GT; & GT;
& lt; / html & gt;
Następny krok obejmuje ręczną rekompulację pliku .ts. Otwórz PowerShell i wprowadź polecenie TSC, a następnie nazwę pliku wejściowego. Domyślnie plik wyjściowy udostępni nazwę pliku podstawowego, ale będzie miał przedłużenie .js zamiast .ts. Wreszcie otwórz plik index.html w przeglądarce wyboru, aby udowodnić pojawienie się pudełka wiadomości.
PS C: Użytkownicy Tamha Pobieranie i GT; TSC. Pracownik.ts
Do tej pory maszynki wykonało niewiele więcej niż działać jako bardziej złożone środowisko JavaScript. Następny krok obejmuje aktywowanie wsparcia dla pisania statycznego: umożliwia kompilatorowi wykonanie analizy statycznej parametrów, utrzymując nieprawidłowe wartości. W tym celu potrzebne jest zestaw typów - Typy podstawowe są wymienione w powyższej tabeli, podczas gdy klas zostaną omówione później.
Zmienne zadania typu maszynopisowe odbywają się przez "A:" umieszczone po nazwie zmiennej. Modyfikujmy naszą funkcję OI, aby wziąć numer, a zamiast tego przejdę do łańcucha. Wreszcie, wywołaj ponownie kompilator TSC, aby uczcić oczy na komunikat o błędzie pokazany w powyższym zrzutu ekranu - Visual Studio, nawiasem mówiąc, również podkreśla daną linię.
Funkcja Sayoi (Whatosay: Number) {
alert (Whatosay);
}
Sayoi ("Hello");
JavaScript wdraża orientację obiektową przez prototypowanie: styl kodu, który jest rzadkością w światach .NET i C / C ++. Typ składu rozwiązuje ten problem, umożliwiając tworzenie klas - proces pokazany w fragmence towarzyszącym tym kroku.
Class Imagine {
publiczne MyResult: Numer;
publiczna Mya: liczba;
publiczny MyB: numer;
Konstruktor (_A: Numer, _B: Numer)
{
to.myresult = _a + _b;
to.mya = _a;
}
}
Zwykle atrybut publiczny służy do deklarowania, że element programu ma być dostępny z zewnątrz. Gdy jest używany jako parametr konstruktora, zamiastu instruuje kompilator maszynopis, aby utworzyć lokalne pola o tych samych nazwach.
Class Imagine {
publiczne MyResult: Numer;
// publiczny Mya: numer;
Konstruktor (publiczna Mya: numer, publiczne _B: numer)
{
to.myresult = mya + _b;
to.mya = mya;
}
}
Rozwińmy naszą przykładową klasę, dostarczając go z metodą, która uzyskuje dostęp do wartości przechowywanych w MyResult i Myi i wysyła je na ekranie. Wreszcie nowy parametr służy do tworzenia instancji klasy - służy do wywołania metody.
Class Imagine {
publiczne MyResult: Numer;
. . .
Public_cededomething (): void {
alert (to.myresult);
}
}
Niech Myimagine: Imagine = New Imagine (2, 2);
Myimagine.Saysomething ();
Konstrukcja języka typu składu ma na celu oszczędzanie programistów jak najwięcej wysiłku. Jedną z przyjemnej funkcji jest automatyczna populacja parametrów utworzonych za pomocą pokazanego skrótu.
Class Imagine {
publiczne MyResult: Numer;
Konstruktor (publiczna Mya: Numer, publiczny MyB: Numer)
{
to.myresult = mya + myb;
}
Public_cededomething (): void {
alert (ta.mya + "" + to.myb);
}
}
Jedną z podstawowych zasad programowania zorientowanego na obiekty obejmuje oparte na zajęciach na drugim. Zajęcia pochodne mogą następnie zastąpić zawartość swojej klasy bazowej, prowadząc do elastycznie regulowanych hierarchii klasy.
Przyszłość klasy rozciąga się wyobraź sobie
{
Public_cededomething (): void {
konsola.log (ta.mya);
}
}
Fragment kodu z góry przedłużył klasę wyobraźni o podceniorze zwaną przyszłością. Przyszłość różni się od wyobrażenia, że jego metoda przesunięcia, bardziej ewoluowała, emituje wiadomość do wiersza poleceń przeglądarki.
Niech Myimagine: Wyobraź sobie = nowa przyszłość (2, 2);
Myimagine.Saysomething ();
Niech MyFuture: Future = Nowa przyszłość (9, 9);
myfuture.saysomething ();
Z tym rzeczywisty kod można przetestować. Po uruchomieniu konsola przeglądarki będzie zawierać dwa inwokacje przyszłości - klasa zaawansowana utrzymuje swoje właściwości, nawet gdy wywołuje się jako obiekt wyobrażalny.
Odsłaniające zmienne członkowskie z publicznym modyfikatorem jest niepopularny: w końcu zabiera większość kontroli nad tym, co użytkownicy wykonują zawartością zmiennej. Akcesoria typu maszynopisowe pozwalają pracować w tym problemie w sposób podobny do tradycyjnego OOP. Bądź świadomy, że obsługiwane są również członkowie tylko do odczytu, ale wykorzystanie tej funkcji wymaga aktywacji wsparcia ECMascript5.
Public _MyCache: ciąg;
Uzyskaj FullCache (): String {
zwróć to ._myCache;
}
Ustaw FullCache (Newx: String) {
Jeśli (Newx == "Hello") {
to._mycache = newx;
}
inaczej {
Console.log ("niewłaściwe dane!");
}
}
Zdolność do tworzenia złożonych hierarchii dziedziczenia zmotywuje programistów, aby spróbować szczęścia w klasach abstrakcyjnych. Masekscript ma również objęty tym względem - przykład towarzyszący temu krokowi tworzy klasę z abstrakcją i realnym członkiem. Próbowanie tworzenia instancji klasy abstrakcyjnej bezpośrednio prowadzi do błędu kompilatora.
Streszczenie klasy Imagine {
publiczne MyResult: Numer;
abstrakcyjny sayname (): void;
Konstruktor (publiczna Mya: Numer, publiczny MyB: Numer) {
to.myresult = mya + myb;
}
Public_cededomething (): void {
alert (ta.mya + "" + to.myb);
}
}
Future Class Extends Imagine {
. . .
publiczna sayname () {
Console.log ("Hello");
}
}
Ponieważ struktury obiektów stają się bardziej złożone, deweloperzy często znajdują się w obliczu sytuacji, w których jedna klasa implementuje wiele bitów logiki. W takim przypadku interfejs zapewnia ładny obejście - przykład pokazuje, czego się spodziewać.
Interface Datainterface {
pole: numer;
Workmethod (): nieważność;
}
Podobnie jak w przypadku klasy powyżej, interfejs nie ma zbyt dobrego, jeśli nie możemy go użyć. Na szczęście wdrażanie nie jest szczególnie trudne: bądź świadomy, że autorzy interfejsu mogą ponadto zadeklarować części ich stworzenia, aby być opcjonalnym.
Pracownik klasy implementuje Dataindterface {
pole: numer;
Workmethod (): void {
rzuć nowy błąd ("Metoda nie została zaimplementowana");
}
}
Kompilator maszynopisowych wymusza ścisłą zmienną sprawdzanie ważności. Podczas pracy w klasie pamięci, generycznie pozwalają na pozwolenie, aby użytkownik końcowy określi typ, który ma być obsługiwany. Ponadto maszynopis Umożliwia również inne elementy ogólne, takie jak funkcje, jak pokazano w (tautologicznym) fragmencie pobranym z dokumentacji.
// Funkcja ogólna
Tożsamość funkcji (Arg: Numer): Numer {
zwrócić arg;
}
// Klasa ogólna
Klasa GenericNumber's T & GT; {
Zerovalue: t;
Dodaj: (x: t, y: t) = & gt; T; }
Maszyny państwowe i podobne elementy korzystają znacznie od sposobu ograniczenia zmiennej do przechowywania kilku dobrze określonych stanów. Można to osiągnąć za pomocą typu danych enum:
Enum Parserstate {
Idle = 1,
Czytaj0,
Czytaj1.
}
Wyobraźnia klasy {
Publiczny Mystate: Parserstate;
Konstruktor (publiczna Mya: Numer, publiczny MyB: Numer)
{
to.miystate = parserstate.idle;
Zakrywanie języka jako złożonego jak maszynopaster w jednym artykule jest prawie niemożliwy. Spójrz na Przykłady miejsca typu maszyn maszynowych aby dowiedzieć się więcej o wiązaniach językowych.
Ten artykuł został pierwotnie opublikowany w wydaniu 266 Projektant stron internetowych , The Creative Web Design Magazine - oferujący samouczki eksperckie, najnowocześniejsze trendy i bezpłatne zasoby. Kup problem 266 tutaj lub Subskrybuj tutaj projektant stron internetowych .
Specjalna oferta świąteczna: Zaoszczędź do 49% na subskrypcji do projektanta WWW Dla ciebie lub przyjaciela na Boże Narodzenie. To ograniczona oferta, więc poruszaj się szybko ...
Powiązane artykuły:
(Kredyt obrazu: Jeremy Heintz) W tym renotynowym samouczku Majów pokryjemy różne tematy, zaczynając od tworzenia ..
Przy uwzględnieniu powtarzających się wzorów i wzorów w ilustracji, niewiele narzędzi będzie tak przydatne lub jako potę�..
Niezależnie od tego, czy chcielimy przyznać, czy nie, platformy interakcji Messaging wkładają do naszego codziennego ekranu e..
Korzystanie z elementów Twojego Ołówek underdrawing jest świetnym sposobem na przyjęcie uwagi widza w kawałk..
Samodzielne publikowanie stanowi 22 procent rynku ebook w Wielkiej Brytanii i kontynuuje wzrost, co oznacza, że autorzy co..
Malowanie "alla prima" (czyli malowanie mokry na mokro, w jednej sesji) jest idealną techniką obejmującą charakter farb olejn..
Adobe InDesign jest świetnym programem do użycia podczas projektowania wszystkiego, co używa typowego typu. W całym tym samou..
Przy projektowaniu marki, niezależnie od tego, czy jest to ustalony lub uruchomienie, w którym biorąc twórczy przewód, konsystencja we wszystkich punktach dotykowych jest kluczowa. ..