Předvánoční Black Friday Předvánoční Black Friday
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací

Diskuze: Jak používat C# namísto JavaScriptu

C# .NET .NET (C# a Visual Basic) Jak používat C# namísto JavaScriptu American English version English version

Aktivity (3)
Avatar
nickname01
Člen
Avatar
nickname01:23. června 16:03

Líbí se mi, že HTML + CSS + JS lze použít na tolika platformách. C# je mi ale mnohem simpatičtější než JS, umím ho lépe a má užitečné funkce, které JS nemá. Jak ho tedy použít na místě JS?

Zkusil jsem: Najít jak zkompilovat C# do JS. Našel jsem Bridge.js, tam se mi ale nelíbilo, že “HTML objekty” se vkládají pomocí JS, což je (100 x velmi) nesémantické, čímžpádem to bude mít v případě použití na webu nízké pozice mezi výsledky, pokud to tedy vůbec mezi výsledky bude (což asi ne).

Též jsem našel Edge.js, kde si ale nejsem jistý, zda to může běžet i na mobilech. Na jejich (asi) ofiko webu psali podpora pro Windows, Mac OS a Linux, o mobilech ani zmínka. Pakliže to podporuje i mobily, nemám problém Edge.js použít. Líbilo se mi na něm, že umožňuje i JS volat ze C#.

Našel jsem i JSIL, který kompiluje IL do JS. Tady si ale nejsem jist sémantikou, obávám se, že JSIL funguje v oblasti HTML stejně jako Bridge.js

Chci docílit: Abych to shrnul, požaduji:

  • Sémantiku na webu
  • Multiplatformnost jako u JS
  • Ideálně soužití s JS a možnost použít JS knihovny/frameworky v C#, není to ale nutnost.
Editováno 23. června 16:04
 
Odpovědět 23. června 16:03
Avatar
Lukáš Cach
Člen
Avatar
Lukáš Cach:23. června 16:19

Zkus se podívat na Blazor.

 
Nahoru Odpovědět  +1 23. června 16:19
Avatar
nickname01
Člen
Avatar
nickname01:23. června 16:40

Jo a ještě jsem zapomněl zmínit že bych chtěl, aby ta kompilace do js mohla být součást nějakého IDE/editoru, abych nemusel pořád dokola kompilovat do JS a výsledek pokaždé vkládat do IDE/editoru

 
Nahoru Odpovědět 23. června 16:40
Avatar
nickname01
Člen
Avatar
nickname01:23. června 17:00

Jen ještě upřesním svůj divně napsaný dotaz: Chci dělat frontend pomocí HTML, CSS a případně JS a backend pomocí C# s tím, že výsledek bude stejně nebo více multiplatfomní jako/než JS. Ta kompilace C# do JS byl jen nápad, jak by to mohlo jít. Tou “multiplatformnosti jako u JS” myslím možnost vytvářet:

  • Nativní apps pro Android, iOS, Windows Mobile a Firefox OS
  • Nativní apps pro Windows, Mac OS a Linux
  • Apps běžící v prohlížeči
 
Nahoru Odpovědět 23. června 17:00
Avatar
Lako
Člen
Avatar
Odpovídá na nickname01
Lako:23. června 17:16

Hm. Jestli chceš dělat frontend v HTML,CSS, JS a zbytek v c#, tak jdi do ASP.NET Core - to je přesně skladba kterou hledáš. Potom lze "nahradit" js s pomocí C# přes WebAssembly https://github.com/aspnet/Blazor. Je to ale projekt v rané fázi. Přes web assembly se dají vytvářet klientské aplikace ve spoustě jiných jazycích... Appky pro android/iOS /Windows 10 se dělají poměrně často v Xamarinu, kde se používá C#. Firefox OS je mrtvola, tím bych se nzabýval. Aplikace pro Mac, Windows Linux můžeš dělat postavené nad .NET core. Existuje například https://github.com/…aUI/Avalonia , což je knihovna pro vytváření multiplatformních UI. Apps běžící v prohlížeči za pomocí c# se dělali v silverlightu, ale to je pasé. Dneska buď nějak experimentálně ten Blazor nebo jiné kompilace do js, ale upřímně si myslím, že doba C# na klinentské straně teprve zraje.

Avšak nepředstavuj si to tak, že napíšeš jeden kód a pofrčí ti to na všech strojích.

 
Nahoru Odpovědět 23. června 17:16
Avatar
nickname01
Člen
Avatar
Odpovídá na Lako
nickname01:23. června 18:57

Avšak nepředstavuj si to tak, že napíšeš jeden kód a pofrčí ti to na všech strojích.

To si nepředstavuju, no.

Jinak jasně, že mohu použít jiné technologie, de o to, že dělat frontend v HTML a CSS umím. Takhle bych se musel učit ten Xamarin a třeba WPF

Jinak díky za odpověď

Editováno 23. června 18:57
 
Nahoru Odpovědět 23. června 18:57
Avatar
nickname01
Člen
Avatar
nickname01:23. června 18:59

A jak je to s Kotlinem/Dartem. Vyplatí se je učit kvůli následné kompilaci do JS?

 
Nahoru Odpovědět 23. června 18:59
Avatar
Odpovídá na nickname01
Andy Scheuchzer:23. června 19:06

Xamarin se jako ještě neučíš, nebo jsi ještě úplně na začátku? Podle tohohle jsem myslel, že už něco umíš :-).
A WPF tak těžké není a hodit se ti určitě bude.

Nahoru Odpovědět 23. června 19:06
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
nickname01
Člen
Avatar
Odpovídá na Andy Scheuchzer
nickname01:23. června 19:15

Neučím :-D V té diskuzi jsem pouze uvažoval o učení se Xamarinu, zjišťoval jsem, jestli jsou nějaké přijatelné kurzy zadarmo.

 
Nahoru Odpovědět 23. června 19:15
Avatar
gcx11
Redaktor
Avatar
Odpovídá na nickname01
gcx11:23. června 20:08

Kotlin se vyplatí učit, pokud chceš dělat něco pro JVM. Kompilace do JS funguje dobře, ale setup toho je složitější a návodů k tomu je dost málo. Navíc multiplatformní projekty jsou zatím v experimentální fázi, celé se to ještě dolaďuje. Takže použít se to dá, ale není to úplně "production ready"

Příklad: https://github.com/…ultiplatform

 
Nahoru Odpovědět 23. června 20:08
Avatar
nickname01
Člen
Avatar
Odpovídá na gcx11
nickname01:23. června 20:13

A co Dart? Honza Bittner

Editováno 23. června 20:14
 
Nahoru Odpovědět 23. června 20:13
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na nickname01
Petr Stastny:24. června 0:08

Bridge.Net

Můžu doporučit. Funguje to tak, že si to stáhneš do Visual Studia, napíšeš kód v C# a ono to vyplivne klasický javascript. Funguje to úplně jako klasický javascript, můžeš s tím dělat úplně to stejný, ale píšeš v C# - se vším všudy, včetně třeba LINQu. Funguje to všude, můžeš z toho volat klasický javascript (včetně js knihoven), můžeš třeba i pracovat s canvasem - cokoliv. A na SEO to nemá negativní vliv, protože to je v podstatě jenom klasický javascript. Vážně to vyzkoušej.

 
Nahoru Odpovědět 24. června 0:08
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na nickname01
Petr Stastny:24. června 0:22

Ještě poznámka: mluvil jsi o Bridge.js, nemyslel jsi tím Bridge.net? Jestli ano, tak html objekty se nemusejí vkládat pomocí js - normálně napíšeš web v html/css (a třeba i php nebo asp) a existující objekty upravuješ nebo můžeš přidávat nové, ale rozhodně to není tak, že bys byl omezený pouze na js. Prostě to "zkonvertuje" C# do JS, funguje to úplně stejně a dokáže to stejný věci jako nativní JS kód.

Editováno 24. června 0:23
 
Nahoru Odpovědět 24. června 0:22
Avatar
nickname01
Člen
Avatar
Odpovídá na Petr Stastny
nickname01:24. června 4:19

Mluvil jsem o Bridge.net, jen jsem spletl ten název. Jinak vypadá to dobře, díky.

 
Nahoru Odpovědět 24. června 4:19
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na nickname01
vajkuba1234:24. června 21:18

Zkus kouknout na cesky framework www.dotvvm.com od kluku z Riganti.

Editováno 24. června 21:19
Nahoru Odpovědět  +2 24. června 21:18
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
nickname01
Člen
Avatar
Odpovídá na Petr Stastny
nickname01:27. června 14:06

Je tam možnost volat JS objekty ze C#?

Editováno 27. června 14:09
 
Nahoru Odpovědět 27. června 14:06
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na nickname01
Petr Stastny:27. června 14:49

Ano. Javascript můžeš volat přímo pomocí Script.Call(funkce, parametry) - třeba Script.Call("a­lert", "Hello World"); -> v javascriptu alert("Hello World")

Pokud chceš získat objekt nebo nějakou hodnotu z JS, uděláš tohle: var user = Script.Call<dy­namic>("getUser"); (getUser je funkce v javascriptu, která něco vrací, třeba objekt uživatele). (místo dynamic můžeš použít třeba i normální objekt, dynamic použij když nevíš nebo nemáš to, co JS vrací, deklarováno v kódu)

https://github.com/…l-javascript

Editováno 27. června 14:51
 
Nahoru Odpovědět 27. června 14:49
Avatar
nickname01
Člen
Avatar
Odpovídá na Petr Stastny
nickname01:27. června 15:03

Super. Díky.

 
Nahoru Odpovědět 27. června 15:03
Avatar
nickname01
Člen
Avatar
Odpovídá na Petr Stastny
nickname01:27. června 16:06

A jak je to kompatibilní s .NET frameworkem? Mám na mysli jen tu "logickou vrstvu", samozřejmě ne WPF nebo WinForms :-)

 
Nahoru Odpovědět 27. června 16:06
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na nickname01
Petr Stastny:27. června 19:54

Výborně, nikdy jsem s tím neměl problém. Zvládá to generiku, oop, dokonce i LINQ.

 
Nahoru Odpovědět 27. června 19:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.