0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel Inertia】めちゃ長いdata-pageを非表示にしたい

Last updated at Posted at 2024-10-09

はじめに

Inertia を使っていると一番気になるところ
フロント画面に渡す値は必ずこの app 要素の data-page に json で展開される

スクリーンショット 2024-10-09 9.11.34.png

HTMLを覗いただけで、すべての値が確認できてしまうのはリスクを気にしてしまう
あと要素が増えすぎるとデバッグがとてもしにくい

これを非表示にできないか

data-page の使われ方の調査

Inertia がどのようにレンダリングをしているかは、以下の記事がとても分かりやすい

つまり、初回アクセス時に data-page にある値を参照してレンダリングをしている
ということは、使い終わったら消しても良いのでは

調査 :mag:

初回実行は app.tssetup() 内、 createApp() が該当する
いわく、この処理の後で data-page を消しちゃって OK とのこと

ほんとか?

スクリーンショット 2024-10-09 9.14.21.png

datasetHTMLElement に生えてるらしいので、強制変換&null条件演算子で繋げる

resources/js/app.ts
    setup({ el, App, props, plugin }) {
        createApp({ render: () => h(App, props) })
            .use(plugin)
            .use(ZiggyVue)
            .mount(el);

        delete (el as HTMLElement)?.dataset?.page;
    },

こんな感じ
試してみると

スクリーンショット 2024-10-09 9.24.10.png

なんと成功 :raised_hands:
とても見やすくなった!

おわりに

消したとしても JS 内には値があるので、フロントにセキュアな値は送らないようにしよう

Inertia v2 が出るみたいなので、標準搭載されるといいな

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?