Deno에서 웹 애플리케이션 빠른 시작

이 글은 Deno Advent Calendar 첫날의 글입니다.
데노가 등장한 지 1년 반이 다 됐는데 아직 안 건드린 사람도 많죠?
첫걸음으로 뭘 할지 항상 고민이에요.
역시 여기가 제일 좋아하는 웹 어플이죠?그래서 데노로 간단한 웹 응용 프로그램을 만들고 이동하는 방법을 소개해 드리겠습니다.

이번에 사용한 모듈


  • dinatra : Small web app framework for Deno

  • dejs : EJS engine for Deno
  • 에 설명된 해당 매개변수의 값입니다.
    ※ 또한 디나트라는 내부에서 deno_std의 http 서버를 사용했지만 아직 불안정하기 때문에keroxp씨servest가 더욱 안정적인 웹 서버를 구축하는 것을 추천합니다.

    dinatra를 사용하는 웹 응용 프로그램의 최소 설정


    우선설치됨 Deno을 전제로 담화를 진행한다.
    dinatra 프로그램은 다음 내용을 저장한ts 파일을 Deno에서 실행합니다.
    import { app, get } from 'https://denopkg.com/syumai/dinatra/mod.ts';
    
    app(get('/hello', () => 'hello'));
    
    dinatra의 프로세서는 경로와 되돌아오는 내용(string|Deno.Reader)을 등록하고 싶은 HTTP 방법 이름의 함수에 전달하여 등록할 수 있습니다.
    이 컨텐트를 example.ts 로 저장하고 실행하십시오.
    Deno는 파일 액세스 및 네트워크 액세스에 대한 라이센스가 필요하므로 지정되었습니다--allow-net.
    $ deno --allow-net example.ts
    listening on http://0.0.0.0:8080/
    
    이제 브라우저나curl로 지금 시작하는 Deno의 HTTP 서버에 접근해 보세요.
    $ curl localhost:8080/hello
    hello
    
    hello 이 문자열은 확인을 표시합니다!
    디나트라의 기본 사용법은 이것뿐이다.
    post,put,patch,delete 방법의 처리 프로그램을 등록하려면import를 앱 함수에 전달하면 됩니다.
    (※ delete는 언어 제한을 받습니다. 이름: del자세한 사용 방법은 공식 자술 을 참조하십시오.

    dinatra를 통해 오프라인 자체 검사 발송 수신


    다음은 데노의 서버 측에서 Form이 보낸 내용의 샘플을 만들어 보세요.
    내가 받아들이고 싶은 것은 켜기 자체 검사 요청이다.
    따라서 import는 자동 검사 처리 프로그램에 등록된 함수를 켜는 데 사용됩니다.
    또한 루트(localhost:8080)에 접근한 경우 템플릿의 HTML을 표시합니다.
    이 HTML은 양식이 제출된 후에 메시지를 표시하기 위해 양식과 메시지 표시 영역을 제공합니다.
    인상은 여기 있다.

    이번에는 EJS에서 만든 View 파일과 서버를 분리합니다.
    보기는 다음과 같습니다.
    index.ejs
    <html>
      <head>
        <meta charset="utf-8">
        <title>Deno form example</title>
      </head>
      <body>
        <form action="/posts" method="POST">
          <label>メッセージを入れてね!</label><br>
          <input type="text" name="message" placeholder="message" /><br>
          <button>送信</button>
        </form>
        <div>受け取ったメッセージ: <%= message %></div>
      </body>
    </html>
    
    서버는 다음과 같습니다.
    mod.ts
    import { app, get, post } from 'https://denopkg.com/syumai/dinatra/mod.ts';
    import { renderFile } from 'https://deno.land/x/[email protected]/mod.ts';
    
    const templatePath = `${Deno.cwd()}/index.ejs`;
    
    app(
      get('/', async () => await renderFile(templatePath, { message: '' })),
      post(
        '/posts',
        async ({ params: { message } }) =>
          await renderFile(templatePath, { message })
      )
    );
    
    dinatra에서 Deno.리코더를 되돌려주는 async function을 지원합니다.
    dejs의 renderFile은 Deno입니다.Reader의 async function을 되돌려주기 때문에 보기를 그립니다.
    그러면 상기 두 파일을 각각 index.ejs, mod.ts 로 저장하고 다음과 같이 실행합니다.
    $ deno --allow-net --allow-read mod.ts
    
    이 상태에서 방문localhost:8080하면 표의 동작을 확인할 수 있을 것 같아요!

    이번 콘텐츠를 꼭 사용자 정의하여 Deno에서 실행되는 웹 응용 프로그램을 만드세요!
    분위기가 더 좋은 게시판 앱Denoboard이 있으니 관심 있으신 분들은 이쪽을 보세요.

    데노에 대한 질문이 있으면 deno-ja의 Slack 던지면 가시의 대답이 있을 것 같습니다.
    지금부터 28일은 모두 채워지지 않았지만, 데노에 대한 보도가 힘차게 쏟아질 것을 생각하면 기뻐서 껑충껑충 뛴다!
    내일은 @hashrock 씨의 보도입니다!
    그럼, 모두 즐겁게 놀아요!

    지원

  • 사실 이번 콘텐츠 발송Content-Type: text/html도 게으름을 피웠다.잘 하는 방법은 공식 자술에 기재되어 있다
  • 좋은 웹페이지 즐겨찾기