Vue 模板编译器简介

发布于 2022-07-31 09:59:19 字数 2316 浏览 280 评论 0

vue-template-compiler 用于将 Vue 模板和 单文件组件 编译成 JavaScript。 大多数开发人员不直接使用 vue-template-compiler。 但是像 用于 Webpack 的 vue-loader 之 使用 vue-template-compiler 来完成实际编译的繁重工作 .vue 文件。

vue-template-compiler 有两个主要功能:将模板转换为 render() 函数 解析单个文件组件

编译模板以 渲染函数

Vue 模板只是一个普通的字符串。 Vue 模板编译器的 compile() 函数转换一个模板字符串,您可以将其用作 render() 为您的组件提供功能。

const compiler = require('vue-template-compiler');
const { renderToString } = require('vue-server-renderer').createRenderer();

// Compile a `render()` function based on a string template
const { render } = compiler.compileToFunctions('<h1>Hello, {{message}}</h1>');

Vue.component('hello', {
  props: ['message'],
  render
});

const app = new Vue({
  template: '<hello message="World"></hello>'
});

// <h1 data-server-rendered="true">Hello, World</h1>
const data = await renderToString(app);

解析一个 .vue 文件

Vue-template-compiler 有一个单独的函数,叫做 parseComponent() 这可以帮助您编译单个文件组件( .vue 文件)转换成 JavaScript。

const compiler = require('vue-template-compiler');
const parsed = compiler.parseComponent(`
  <template>
    <h1>{{message}}</h1>
  </template>
  <script>
    module.exports = {
      data: () => ({ message: 'Hello World' })
    };
  </script>
`);

// Contains `template`, `data` properties
const appComponent = Object.assign({ template: parsed.template.content },
  eval(parsed.script.content));
Vue.component('app', appComponent);
const app = new Vue({
  template: '<app></app>'
});

const data = await renderToString(app);
// <h1 data-server-rendered="true">Hello World</h1>
data;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

女中豪杰

暂无简介

0 文章
0 评论
479 人气
更多

推荐作者

1CH1MKgiKxn9p

文章 0 评论 0

ゞ记忆︶ㄣ

文章 0 评论 0

JackDx

文章 0 评论 0

信远

文章 0 评论 0

yaoduoduo1995

文章 0 评论 0

霞映澄塘

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文