So I am stuck again when I want to create a web app. Don't laugh. I come from *NIX environment and the way everything is started in WebSharper is quite confusing at first. I tried to go to installation documentation but I don't use Visual Studio nor MonoDevelop. Using paket also doesn't solve my problem since they also seem to use Visual Studio or MonoDevelop.
As someone who used to work in a shell environment, of course using shell is always my preferred way to do something. Then I open the Downloads page which turns out become my saviour.
In short, I have to install template first then using the template to create a skeleton of application and then hack away that skeleton. Easier for me :-D.
Note: make sure you have installed .NET SDK - current version 5.x.x and .NET SDK - LTS version 3.x.x. Read my other article on this matter.
Install Application Template
$ dotnet new -i WebSharper.Templates
Template Name Short Name Language Tags
-------------------------------------------- --------------- ---------- ----------------------
Console Application console [C#],F#,VB Common/Console
Class library classlib [C#],F#,VB Common/Library
Worker Service worker [C#],F# Common/Worker/Web
MSTest Test Project mstest [C#],F#,VB Test/MSTest
NUnit 3 Test Item nunit-test [C#],F#,VB Test/NUnit
NUnit 3 Test Project nunit [C#],F#,VB Test/NUnit
xUnit Test Project xunit [C#],F#,VB Test/xUnit
Razor Component razorcomponent [C#] Web/ASP.NET
Razor Page page [C#] Web/ASP.NET
MVC ViewImports viewimports [C#] Web/ASP.NET
MVC ViewStart viewstart [C#] Web/ASP.NET
Blazor Server App blazorserver [C#] Web/Blazor
Bolero Hosted Application bolero-app F# Web/Blazor/Bolero
Blazor WebAssembly App blazorwasm [C#] Web/Blazor/WebAssembly
ASP.NET Core Empty web [C#],F# Web/Empty
ASP.NET Core Web App (Model-View-Controller) mvc [C#],F# Web/MVC
ASP.NET Core Web App webapp [C#] Web/MVC/Razor Pages
ASP.NET Core with Angular angular [C#] Web/MVC/SPA
ASP.NET Core with React.js react [C#] Web/MVC/SPA
ASP.NET Core with React.js and Redux reactredux [C#] Web/MVC/SPA
Razor Class Library razorclasslib [C#] Web/Razor/Library
ASP.NET Core Web API webapi [C#],F# Web/WebAPI
ASP.NET Core gRPC Service grpc [C#] Web/gRPC
WebSharper 4 Extension websharper-ext F# WebSharper
WebSharper 4 Library websharper-lib [C#],F# WebSharper
WebSharper 4 Proxy websharper-prx [C#],F# WebSharper
WebSharper 4 Client-Server Application websharper-web [C#],F# WebSharper/Web
WebSharper 4 Html Site websharper-html [C#],F# WebSharper/Web
WebSharper 4 Single Page Application websharper-spa [C#],F# WebSharper/Web
dotnet gitignore file gitignore Config
global.json file globaljson Config
NuGet Config nugetconfig Config
Dotnet local tool manifest file tool-manifest Config
Web Config webconfig Config
Solution File sln Solution
Protocol Buffer File proto Web/gRPC
Examples:
dotnet new mvc --auth Individual
dotnet new websharper-lib
dotnet new --help
dotnet new websharper-web --help
$
Now we have these templates:
...
...
WebSharper 4 Extension websharper-ext F# WebSharper
WebSharper 4 Library websharper-lib [C#],F# WebSharper
WebSharper 4 Proxy websharper-prx [C#],F# WebSharper
WebSharper 4 Client-Server Application websharper-web [C#],F# WebSharper/Web
WebSharper 4 Html Site websharper-html [C#],F# WebSharper/Web
WebSharper 4 Single Page Application websharper-spa [C#],F# WebSharper/Web
...
...
Pay attention to the shortname, we are going to use that. To see more information about the templates:
...
...
...
WebSharper.Templates
Details:
NuGetPackageId: WebSharper.Templates
Version: 4.7.3.424
Author: IntelliFactory
Templates:
WebSharper 4 Client-Server Application (websharper-web) C#
WebSharper 4 Client-Server Application (websharper-web) F#
WebSharper 4 Extension (websharper-ext) F#
WebSharper 4 Library (websharper-lib) C#
WebSharper 4 Library (websharper-lib) F#
WebSharper 4 Html Site (websharper-html) C#
WebSharper 4 Html Site (websharper-html) F#
WebSharper 4 Proxy (websharper-prx) C#
WebSharper 4 Proxy (websharper-prx) F#
WebSharper 4 Single Page Application (websharper-spa) C#
WebSharper 4 Single Page Application (websharper-spa) F#
Uninstall Command:
dotnet new -u WebSharper.Templates
$
There are 6 types of templates:
-
Client-Server Application /
websharper-web
: full client-server application - in other world, it is usually called fullstack. -
Extension /
websharper-ext
: interface to an existing JS library. -
Library /
websharper-lib
: library which can be used in any WebSharper project. -
HTML Site /
websharper-html
: multipage HTML/JavaScript application. -
Proxy /
websharper-prx
: JavaScript-compilable F# implementations for classes and modules that were compiled without WebSharper. -
Single Page Application /
websharper-spa
: single page HTML/JavaScript with HTML and F# contents plugs into it.
As an example, I will use SPA template to create a skeleton of SPA project. Here's how to do that:
$ dotnet new websharper-spa -lang f# -n helloSPA
The template "WebSharper 4 Single Page Application" was created successfully.
...
...
Note:
helloSPA
is project name which later becomes application name.
Here's the results:
$ cd helloSPA
$ ls -la
total 28
drwxr-xr-x 3 bpdp bpdp 4096 Agu 25 10:19 ./
drwxr-xr-x 3 bpdp bpdp 4096 Agu 25 10:19 ../
-rw-r--r-- 1 bpdp bpdp 1019 Agu 25 10:19 Client.fs
-rw-r--r-- 1 bpdp bpdp 599 Agu 25 10:19 helloSPA.fsproj
-rw-r--r-- 1 bpdp bpdp 1045 Agu 25 10:19 Startup.fs
-rw-r--r-- 1 bpdp bpdp 123 Agu 25 10:19 wsconfig.json
drwxr-xr-x 2 bpdp bpdp 4096 Agu 25 10:19 wwwroot/
$
That's it. Now we have a skeleton of SPA app. Let's try to run it.
$ dotnet run
Hosting environment: Production
Content root path: /home/bpdp/kerjaan/src/fsharp/websharper/artikel/helloSPA
Now listening on: http://localhost:5000
Now listening on: https://localhost:5001
Application started. Press Ctrl+C to shut down.
Open http://localhost:5000
using your browser:
Voila! you have WebSharper up and running. Now, what you need to do is to understand the contents of an SPA app using WebSharper. This one deserves its own articles. At this point, your knowledge on F#, packages / libs, and WebSharper is important.
Update Templates
Whenever there are new releases, we can always update the templates using:
$ dotnet new -i "WebSharper.Templates::*"
Happy coding!
Top comments (0)