Vue: ssr ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์ˆ˜ํ™” ๊ตฌ์ œ ๊ธˆ์œต

์— ๋งŒ๋“  2017๋…„ 06์›” 28์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: vuejs/vue

๋ฒ„์ „

2.3.4

์ƒ์‹

F5 (๋‹ค์‹œ๋กœ๋“œ) ํ‚ค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ž‘์—… :
ssr_pre_tag_issue
(ํ•œ ๋ฒˆ๋งŒ ๋ฐœ์ƒํ•˜๋ฉฐ ๋น„๋””์˜ค๊ฐ€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค)

์žฌํ˜„ ๋‹จ๊ณ„

vue-hackernews-2.0 ๋ฐ๋ชจ์˜ App.vue์— <pre> ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

<template>
  <div id="app">
    <header class="header">
    <pre style="background-color: #aaa">
foobar
    </pre>
      <nav class="inner">

๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๊นŒ?

ํด๋ผ์ด์–ธํŠธ ์ธก๊ณผ ์„œ๋ฒ„ ์ธก์€ <pre> ํƒœ๊ทธ์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋ฒ„์ „์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ์ธก ๋ฒ„์ „์ด ๋™์ผํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ตฌ์ œ ๊ธˆ์œต?, <pre> ํƒœ๊ทธ ๋‚ด์šฉ์ด ๊นœ๋ฐ•์ž„

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@FranckFreiburger ๋ฒ„๊ทธ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ์–‘ https://www.w3.org/TR/html5/syntax.html#element -restrictions์— ๋”ฐ๋ผ

ํ•˜๋‚˜์˜ ์ค„ ๋ฐ”๊ฟˆ์€ pre ๋ฐ textarea ์š”์†Œ์˜ ์‹œ์ž‘ ํƒœ๊ทธ ๋ฐ”๋กœ ๋’ค์— ๋ฐฐ์น˜ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์†Œ์˜ ๋‚ด์šฉ์ด ์ค„ ๋ฐ”๊ฟˆ์œผ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ์˜๋„ ๋œ ๊ฒฝ์šฐ ์ €์ž๋Š” ์—ฐ์† ๋œ ๋‘ ์ค„ ๋ฐ”๊ฟˆ์„ ํฌํ•จํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

pre ํƒœ๊ทธ ๋ฐ”๋กœ ๋’ค์˜ first ์ค„ ๋ฐ”๊ฟˆ์€ ๋ฌด์‹œ๋˜์ง€๋งŒ vue html ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊ณ ์น˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ด๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

@FranckFreiburger ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Mac๊ณผ Windows ๋ชจ๋‘์—์„œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  F5 key ๊ฒฝ์šฐ F5๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ๋กœ๋“œํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

Windows 7, node v8.1.2, ์ตœ์‹  Google Chrome ๋ฐ Firefox์—์„œ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
vue-hackernews-2.0 ๋ฐ๋ชจ๋ฅผ ๋ณต์ œ ํ•œ ํ›„ ๋ฐฉ๊ธˆ App.vue ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ <pre> ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ npm run dev ์‹คํ–‰ํ•˜๋ฉด ํŽ˜์ด์ง€๊ฐ€ ์ฒ˜์Œ๋กœ๋“œ ๋  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ๋กœ๋“œ ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Google ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ
๋ฌธ์ œ ์ง์ „์— ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘์ง€ํ•˜๋ฉด ๋งˆํฌ ์—… (๊ฐœ๋ฐœ ๋„๊ตฌ ์š”์†Œ ํƒญ)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<pre style="background-color:#aaa;">foobar
        </pre>

์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์„ ๊ณ„์†ํ•˜๋ฉด ๋งˆํฌ ์—…์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด๋ฉ๋‹ˆ๋‹ค.

<pre style="background-color:#aaa;">
foobar
        </pre>

๋„คํŠธ์›Œํฌ ํƒญ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ HTTP GET ์š”์ฒญ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

<pre style="background-color:#aaa;">
foobar
        </pre>

์ฐธ๊ณ  :์ด ๋ฌธ์ œ๋Š” ํ•จ๊ป˜ ์ผํ•˜์ง€ ์•Š๋Š” <div style="white-space:pre;"> ๋Œ€์‹  <pre>

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์กฐ์‚ฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@FranckFreiburger ๋ฒ„๊ทธ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ์–‘ https://www.w3.org/TR/html5/syntax.html#element -restrictions์— ๋”ฐ๋ผ

ํ•˜๋‚˜์˜ ์ค„ ๋ฐ”๊ฟˆ์€ pre ๋ฐ textarea ์š”์†Œ์˜ ์‹œ์ž‘ ํƒœ๊ทธ ๋ฐ”๋กœ ๋’ค์— ๋ฐฐ์น˜ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์†Œ์˜ ๋‚ด์šฉ์ด ์ค„ ๋ฐ”๊ฟˆ์œผ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ์˜๋„ ๋œ ๊ฒฝ์šฐ ์ €์ž๋Š” ์—ฐ์† ๋œ ๋‘ ์ค„ ๋ฐ”๊ฟˆ์„ ํฌํ•จํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

pre ํƒœ๊ทธ ๋ฐ”๋กœ ๋’ค์˜ first ์ค„ ๋ฐ”๊ฟˆ์€ ๋ฌด์‹œ๋˜์ง€๋งŒ vue html ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊ณ ์น˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ด๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰