Vue.js中定义组件模板的几种方法介绍

Vue.js中定义组件模板的几种方法介绍

Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。

在Vue中定义组件模板有很多选择。在我看来,至少有七种不同的方式:

字符串

模板文字

立即学习“前端免费学习笔记(深入)”;

X-Templates

内联

渲染功能

JSX

单页组件

在本文中,我们将逐一介绍每种方法的示例,并讨论其优缺点,以便您了解在任何特定情况下使用哪种方法最好。

1、字符串

默认情况下,模板将被定义为JS文件中的字符串。我想我们都同意字符串中的模板是非常难以理解的。除了广泛的浏览器支持之外,这个方法没有什么特别之处。

Vue.component('my-checkbox', {template: `
{{ title }}
`,data() {return { checked: false, title: 'Check me' }},methods: {check() { this.checked = !this.checked; }}});

登录后复制

2、模板文字

ES6模板字面量(“backticks”)允许您跨多行定义模板,这是在常规Javascript字符串中无法做到的。虽然为了安全起见,您可能仍然应该转换为ES5,但现在许多新浏览器都支持这些命令,并且更容易阅读。

不过,这种方法并不完美;我发现大多数ide在语法高亮、制表符、换行等方面仍然让您感到痛苦。

Vue.component('my-checkbox', {    template: `      
{{ title }}
 >`,data() {return { checked: false, title: 'Check me' }},methods: {check() { this.checked = !this.checked; }}});/

登录后复制

3、X-Templates

使用此方法,您的模板将在index.html文件中的脚本标记中定义。脚本标记由文本/x-template标记,并由组件定义中的id引用。

我喜欢这种方法,它允许您用正确的HTML标记编写HTML,但缺点是它将模板与组件定义的其余部分分开。

Vue.component('my-checkbox', {template: '#checkbox-template',data() {return { checked: false, title: 'Check me' }},methods: {check() { this.checked = !this.checked; }}});

登录后复制

{{ title }}

登录后复制

4、内联模板

通过向组件添加inline-template属性,您可以向Vue表明内部内容是其模板,而不是将其视为分布式内容。

它的缺点与x-templates相同,但一个优点是内容在HTML模板中的正确位置,因此可以在页面加载时呈现,而不是等到Javascript运行时。

Vue.component('my-checkbox', {data() {return { checked: false, title: 'Check me' }},methods: {check() { this.checked = !this.checked; }}});

登录后复制

{{ title }}

登录后复制

5、渲染功能

呈现函数要求您将模板定义为Javascript对象。它们显然是模板选项中最冗长和抽象的。

但是,这样做的好处是模板更接近编译器,并且允许您访问完整的Javascript功能,而不是指令提供的子集。

Vue.component('my-checkbox', {data() {return { checked: false, title: 'Check me' }},methods: {check() { this.checked = !this.checked; }},render(createElement) {return createElement('div',  {attrs: {'class': 'checkbox-wrapper'},on: {click: this.check}  },  [    createElement(      'div',      {        'class': {        checkbox: true,        checked: this.checked        }      }    ),    createElement(      'div',      {        attrs: {          'class': 'title'        }      },      [ this.title ]    )  ]);}});

登录后复制

6、JSX

Vue中最有争议的模板选项是JSX。一些开发人员认为JSX丑陋、不直观,是对Vue精神的背叛。

JSX要求您首先进行转换,因为浏览器无法读取它。但是,如果需要使用呈现函数,JSX肯定是定义模板的一种不那么抽象的方法。

Vue.component('my-checkbox', {data() {return { checked: false, title: 'Check me' }},methods: {check() { this.checked = !this.checked; }},render() {return 
         
         
{ this.title }
       
}});

登录后复制

7、单个文件组件

只要您对在设置中使用构建工具感到满意,单个文件组件就是模板选项之王。它们带来了两方面的好处:允许您在编写标记的同时将所有组件定义保存在一个文件中。

它们需要换位,而且有些ide不支持这种文件类型的语法高亮显示,但在其他方面很难打败它们。

  
    
    
{{ title }}
  
export default { data() { return { checked: false, title: 'Check me' } }, methods: { check() { this.checked = !this.checked; } } }

登录后复制

您可能会争辩说,有更多的模板定义的可能性,因为您可以使用模板预处理程序,如Pug与SFCs!

哪个最好?

当然没有一种完美的方式,每一种都应该根据你的用例来判断。我认为最好的开发人员会意识到所有可能性,并将每个开发人员作为他们的Vue.js工具带中的工具!

英文原文地址:https://vuejsdevelopers.com/2017/03/24/vue-js-component-templates/

相关推荐:

2020年前端vue面试题大汇总(附答案)

vue教程推荐:2020最新的5个vue.js视频教程精选

更多编程相关知识,请访问:编程入门!!

以上就是Vue.js中定义组件模板的几种方法介绍的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3023365.html

(0)
上一篇 2025年3月13日 06:05:52
下一篇 2025年2月24日 15:14:35

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Vue应用程序中实现AJAX的四个地方

    Vue没有提供实现AJAX的正式方法,而且有许多不同的设计模式可以有效地使用。每种方法都有其优缺点,应该根据需求进行判断。您甚至可以同时使用多个! 在本文中,我将向您展示在Vue应用程序中实现AJAX的四个地方: 根实例 组件 立即学习“前…

    2025年3月13日
    200
  • 15个Vue.js高级面试问题

    本篇文章给大家分享15个vue.js高级面试问题。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 1. 渲染项目列表时,“key” 属性的作用和重要性是什么? 渲染项目列表时,key 属性允许 Vue 跟踪每个 Vnode…

    2025年3月13日
    200
  • 10+个顶级Vue.js工具和库(分享)

    Vue持续流行,并被许多开发人员迅速采用,并且Vue.js工具随处可见。这并非没有道理:Vue的学习曲线浅,功能驱动的结构清晰明了,并且出色的文档资料使新手可以轻松上手,而经验丰富的开发人员也可以从其他框架(如React或Angular)进…

    2025年3月13日 编程技术
    200
  • 详解Vue.js中的作用域插槽

    作用域槽是Vue.js的一个有用特性,它可以使组件更加通用和可重用。唯一的问题是它们很难理解!试着让你的头在父母和孩子的范围内交织,就像解决一个棘手的数学方程。 当你不能很容易地理解某件事时,一个好的方法是试着用它来解决问题。在本文中,我将…

    2025年3月13日 编程技术
    200
  • Vue.js中使用无状态组件的方法介绍

    在本文中,您将了解功能组件,并了解如何在Vue中的工作流中使用无状态组件。Vue应用程序状态是一个确定组件行为的对象。Vue应用程序状态指示组件如何呈现或如何动态。 在你开始之前 你需要在你的电脑: node.js 10.x及以上版本已安装…

    2025年3月13日
    200
  • Vue.js中使用事件发射器修改组件数据的方法

    本文将向您介绍如何使用事件发射器在vue.js中将数据及其状态从子组件传递到其父组件。这篇文章适合所有阶段的开发人员,包括初学者。 在你开始之前… 我们可以在Vue.js中使用道具将数据传递到的子组件一文中查看在Vue.js中将数据从父组件…

    2025年3月13日
    200
  • Vue.js中使用道具将数据传递到的子组件

    在本文中,我们将研究如何在Vue.js中将数据从父组件传递到子组件。这篇文章适合所有阶段的开发人员,包括初学者。 在开始之前 我们可以在Vue.js中使用事件发射器修改组件数据的方法一文中查看使用事件发射器在vue.js中将数据及其状态从子…

    2025年3月13日
    200
  • 深入了解Vue的中间件管道(middleware pipeline)

    通常,在构建SPA时,需要保护某些路由。例如假设有一个只允许经过身份验证的用户访问的 dashboard 路由,我们可以通过使用 auth 中间件来确保合法用户才能访问它。 在本教程中,我们将学到怎样用 Vue-Router 为Vue应用程…

    2025年3月13日
    200
  • 深入研究Vue CLI3

    Vue CLI是一个简单而强大的工具,用于搭建Vue.js项目。它可以确保各种构建工具与合理的默认设置一起顺利运行,因此您可以专注于编写应用程序,而不必花时间在配置上进行斗争。 Vue CLI 3是目前为止Vue生态系统中发生的最好事情,原…

    2025年3月13日
    200
  • Vuex中映射的完整指南

    Vuex 是一把双刃剑。如果使用得当,使用 Vue 可以使你的工作更加轻松。如果不小心,它也会使你的代码混乱不堪。 使用 Vuex 之前,你应该先了解四个主要概念:state、getter、mutation 和 action。一个简单的 V…

    2025年3月13日
    200

发表回复

登录后才能评论