2022年4月13日水曜日

Sinatra で JavaScript を文字列として配信する方法

Sinatra で JavaScript を文字列として配信する方法

概要

わざわざファイルにして public 配下に置いて配信しないでも Sinatra で直接記載することもできます

環境

  • macOS 11.6.5
  • Ruby 3.1.1p18
  • Sinatra 2.2.0

サンプルコード

# coding: utf-8
require 'sinatra'

class WebApp < Sinatra::Base

  # HTMLのテンプレートを管理
  template :index do
    <<~EOF
      <html>
        <body>
          <div id="msg"></div>
          <script src="/js/sample.js"></script>
        </body>
      </html>
    EOF
  end

  # / に来たら :index テンプレートを返却してHTMLを表示する
  get '/' do
    erb :index
  end

  # :index テンプレート内で参照している /js/sample.js をここで配信する
  get '/js/sample.js' do
    content_type 'text/javascript'
    <<~EOF
      var msg = document.getElementById("msg");
      console.log(msg);
      document.getElementById("msg").innerHTML = "hoge";'
    EOF
  end
end

ヒアドキュメントで記載すれば複数行でも書けます
簡単な JavaScript であればこれでもいいかも

0 件のコメント:

コメントを投稿