Chcę tylko jakoś powiedzieć „Chcę wszystkich metod w tym wykorzystania projektu [JavaScript]” Ręcznie adnotacja każda metoda jest denerwująceCzy jest jakiś sposób domyślnie użyć atrybutu JavaScript?
Odpowiedz
F # 3 pozwala oznaczyć moduł z atrybutem ReflectedDefinition (aka [JavaScript] w WebSharper), który oznacza wszystkie metody pod spodem.
Zobacz More About F# 3.0 Language Features:
(Mówiąc o niezwykłych cech, w F # 3.0 The [< ReflectedDefinition>] atrybut może teraz zostać umieszczone na modułach i definicji typu, jako uproszczony sposób, aby zastosować go do . każda jednostka członkiem modułu/typ)
Dla przykładu, możesz sprawdzić moje ostatnie próbki FunScript (myślę, że ta sama struktura kodu będzie działać również w WebSharper): https://github.com/tpetricek/Documents/blob/master/Talks%202013/Love%20The % 20Data% 20 (Channel9) /code/WorldBank.Web/Page.fs –
myślę odpowiedź Phila jest droga - kiedy można oznaczyć cały moduł lub typ, nie dodawać zbyt dużo hałasu, a także pozwala na odróżnić między kodem po stronie serwera i po stronie klienta w WebSharper.
Po prostu dla zapisu, kompilator F # jest open-source, więc ktoś (który uważa, że ten problem jest ważny) może z łatwością utworzyć gałąź, która doda dodatkowy atrybut wiersza poleceń, aby nadpisać ustawienie. Myślę, że to tylko kwestia dodania parametru, a następnie ustawienia domyślnej wartości flagi reflect
w check.fs
(tutaj is the source on GitHub).
Obecnie głównym F # repozytorium nie akceptuje składki, które dodają nowe funkcje (patrz discussion here), ale z pewnością jest to dobry sposób, aby wysłać żądanie funkcji do # zespół F :-)
If ty sklasyfikujesz cały kod za pomocą atrybutu JavaScript, kompilator WebSharper spróbuje przetłumaczyć wszystko na JavaScript. Regułą w rozwoju WebSharper jest odseparowanie kodu po stronie serwera i po stronie klienta, więc możesz po prostu opisać moduł/klasę zawierającą kod po stronie klienta zamiast każdej funkcji/członka, jeśli kierujesz się na .NET 4.5.
namespace Website
open IntelliFactory.WebSharper
module HelloWorld =
module private Server =
[<Rpc>]
let main() = async { return "World" }
[<JavaScript>] // or [<ReflectedDefinition>]
module Client =
open IntelliFactory.WebSharper.Html
let sayHello() =
async {
let! world = Server.main()
JavaScript.Alert <| "Hello " + world
}
let btn =
Button [Text "Click Me"]
|>! OnClick (fun _ _ ->
async {
do! sayHello()
} |> Async.Start)
let main() = Div [btn]
type Control() =
inherit Web.Control()
[<JavaScript>]
override __.Body = Client.main() :> _
Używam websharper tylko do wymiany javascript, więc nie dbam o stronę serwera, tak czy inaczej adnotacja modułu jest znacznie lepsza niż metoda. – ais
- 1. Czy jest jakiś sposób użyć nowego DrawerLayout z ActionBarSharlock?
- 2. Czy jest jakiś znany sposób suszenia JSON
- 3. Czy jest jakiś silnik reguł zaimplementowany na NodeJS/w JavaScript?
- 4. Czy jest jakiś sposób dodania ikony do paska Snackbar?
- 5. Czy jest jakiś sposób mogę użyć typów wartości w x: DataType?
- 6. Czy jest jakiś punkt używania "return! 0" w javascript?
- 7. Czy jest jakiś wrapper Pythona wokół crona?
- 8. Czy jest jakiś sposób na uzyskanie czasu trwania trwającego przekodowywania?
- 9. OCMock - weryfikacja kolejności wywołań metod. Czy jest jakiś inny sposób?
- 10. Czy jest jakiś sposób programowo wygenerować kod bajtowy Pythona?
- 11. Czy jest jakiś sposób, aby atrybut title = działał w Chrome?
- 12. Czy jest jakiś sposób ograniczyć liczbę powtórzeń w danych podstawowych?
- 13. Czy jest jakiś sposób wyłączenia panoramowania na tabletach - stronie internetowej?
- 14. Czy jest jakiś skrótowy sposób na uzyskanie float z tablicy?
- 15. Czy jest jakiś sposób programowo ustawić nazwę aplikacji w Elmah?
- 16. Czy jest jakiś sposób sprawdzenia zainstalowanej wersji Gulp?
- 17. Czy jest jakiś sposób poznania pid z uruchomionego programu?
- 18. Czy jest jakiś sposób, aby Guice Grapher zadziałał?
- 19. Czy jest jakiś sposób, aby wyświetlić plan wykonania programu?
- 20. Czy jest jakiś sposób na robienie argumentów w Spocku?
- 21. Czy jest jakiś sposób na stworzenie łatki do przeglądu?
- 22. Czy jest jakiś sposób w JavaScript, aby skoncentrować dokument (obszar treści)?
- 23. czy jest jakiś hack css IE8?
- 24. Czy jest jakiś haczyk git do ciągnięcia?
- 25. Czy mogę w jakiś sposób użyć instrukcji w przełączniku, aby dodać więcej przypadków?
- 26. jaki sposób można użyć onError atrybutu elementu img
- 27. Czy jest jakiś sposób na zmianę lokalizacji .vagrand.d (lokalizacja dla skrzynek wędrownych)?
- 28. Wiele czynności, identyczne naCreateOptionsMenu, onOptionsItemSelected i onKeyDown. Czy mogę w jakiś sposób ponownie użyć kodu?
- 29. Czy mogę w jakiś sposób użyć opcjonalnego powiązania dla wielu zmiennych w jednym wierszu w Swift?
- 30. Czy istnieje jakiś parser JSDoc Open Source napisany w JavaScript?
Nie, ale też nie powinny być w ten sposób - metody po stronie serwera nie muszą być opatrzone '[]' (ponieważ używają funkcji, które nie są dostępne na stronie klienta). –
Również znajduję kod zalany [] naprawdę denerwujący. Jest to jeden z powodów, dla których zdecydowałem się użyć zamiast tego maszynopisu. Jednym z możliwych rozwiązań może być oznaczenie całego modułu lub klasy jako JavaScript. Czy to nie jest możliwe? –
Jest to możliwe, sprawdź moją odpowiedź na przykład. – Taha