I tried Dart frontend using shelf

backend ใฏใ“ใกใ‚‰๏ผŽ

I tried Dart backend

Flutter Web ใจใ‹ AngularDart ใชใฉใ‚ใ‚‹ใ‚“ใงใ™ใ‘ใฉใกใ‚‡ใฃใจ้›‘ใซใ‚„ใ‚ŠใŸใ„ใจใ„ใ†ๅ ดๅˆใงใ™๏ผŽ
ใ‚ณใƒผใƒ‰ใฏไธ‹่จ˜ใฎ้€šใ‚Š๏ผŽ

const index = '''<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
    <title>Hello, world!</title>
  </head>
  <body>
    <main role="role">
      <div class="container">
        <h1 class="mt-5">{{ title }}</h1>
      </div>
    </main>
  </body>
</html>''';void main(List<String> args) async {
  var handler = const shelf.Pipeline()
      .addMiddleware(shelf.logRequests())
      .addHandler(_echoRequest);
  var server = await io.serve(handler, _hostname, port);
  print('Serving at http://${server.address.host}:${server.port}');
}Future<shelf.Response> _echoRequest(shelf.Request request) async {
  var template = Template(index);
  var output = template.renderString({'title': 'hoge'});
  var headers = {'content-type': 'text/html'}
  return shelf.Response.ok(output, headers: headers);
}

index.html ใ‚’้™็š„ใƒ•ใ‚กใ‚คใƒซใง็”จๆ„ใ™ใ‚‹ใฎใŒๆ™ฎ้€šใ ใจๆ€ใ†ใ‚“ใงใ™ใŒ๏ผŒdart compile ใ—ใฆๅ‹•ใ‹ใ—ใฆใฟใŸใ‹ใฃใŸใฎใง dart ใƒ•ใ‚กใ‚คใƒซใซๅŽใ‚ใพใ—ใŸ๏ผŽ
go-bindata ใชใฉใฎใ‚ˆใ†ใซ executable ใซ้™็š„ใƒ•ใ‚กใ‚คใƒซใ‚’ include ใ™ใ‚‹ใ‚ˆใ†ใชไป•็ต„ใฟใŒ Dart ใซใ‚‚ใ‚ใ‚‹ใจใ„ใ„ใงใ™ใญ๏ผŽ
ๆฐ—ใŒๅ‘ใ„ใŸใ‚‰ไฝœใ‚ŠใŸใ„๏ผŽ

html ใฎไธญ่บซใฏ mustache template ใ‚’ไฝฟใฃใฆใฟใพใ—ใŸ๏ผŽ
ใจใ„ใ†ใ‹ Dart ใซใŠใ‘ใ‚‹ใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใ‚จใƒณใ‚ธใƒณใงใ“ใ‚Œใ ๏ผใฟใŸใ„ใชใฎใฏไปŠใฎใจใ“ใ‚ใชใ„ใงใ™๏ผŽ
ใพใใ“ใ‚Œใ‚ˆใ‚Š่ค‡้›‘ใช GUI ใŒๆฌฒใ—ใ„ใชใ‚‰ใใ‚Œใ“ใ Flutter web ใ‚’ไฝฟใ†ในใใ ใจๆ€ใ„ใพใ™๏ผŽ