<p>vue-server-renderer : ๊ฐ€์ ธ์˜จ ๊ตฌ์„ฑ ์š”์†Œ์— ์ ์šฉ๋˜์ง€ ์•Š๋Š” ์ง€์‹œ๋ฌธ</p>

์— ๋งŒ๋“  2019๋…„ 10์›” 20์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: vuejs/vue

์ด ๊ธฐ๋Šฅ์œผ๋กœ ํ•ด๊ฒฐ๋˜๋Š” ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํ˜„์žฌ SSR ์ง€์‹œ๋ฌธ์€ ์‚ฌ์šฉ ๋œ (ํ•˜์œ„) ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๊ณ  HTML ํƒœ๊ทธ ๋ฐ ์š”์†Œ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ƒ์‹

// Step 1: Create a Vue instance
const Vue = require("vue");

const Test = {
  template: `<div>This should be red</div>`
}

const app = new Vue({
  template: `
  <div>
    <Test v-make-red/>
    <div v-make-red>This is red</div>
  </div>
  `,
  components: {
    Test
  }
});

const makeRed = (node, dir) => {
  const style = node.data.style || (node.data.style = {});
  if (Array.isArray(style)) {
    style.push({ backgroundColor: "red" });
  } else {
    style.backgroundColor = "red";
  }
};

// Step 2: Create a renderer
const renderer = require("vue-server-renderer").createRenderer({
  directives: {
    makeRed
  }
});

// Step 3: Render the Vue instance to HTML
renderer.renderToString(app, (err, html) => {
  if (err) throw err;
  console.log(html);
  // <div data-server-rendered="true"><div>This should be red</div> <div style="background-color:red;">This is red</div></div>
  // But should include red background-color style for the first div as well
});

๊ด€๋ จ : https://github.com/nuxt/nuxt.js/issues/6575

bug contribution welcome ssr

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

์–˜๋“ค ์•„. ์ €๋Š” ๋งค์ผ vue๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๊ธฐ์—ฌ ํ™˜์˜ ๋ ˆ์ด๋ธ”์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

(์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉฐ ํ…Œ์ŠคํŠธ ๋ฐ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

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

์–˜๋“ค ์•„. ์ €๋Š” ๋งค์ผ vue๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๊ธฐ์—ฌ ํ™˜์˜ ๋ ˆ์ด๋ธ”์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

(์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉฐ ํ…Œ์ŠคํŠธ ๋ฐ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ์ „ํžˆ nuxt 2.14์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ์ „ํžˆ nuxt 2.14์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

+1
๊ทธ๋ž˜๋„ ์ž‘๋™์ด ์•ˆ๋˜๋Š”,
[email protected]
[email protected]
[email protected]

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