怎么理解Vue中的组件

这篇文章主要介绍“怎么理解Vue中的组件”,在日常操作中,相信很多人在怎么理解Vue中的组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解Vue中的组件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

这是一个强大的简化,如果你曾研究过Vue代码库的复杂性,那么你就会知道这实际上不是事实。但是从根本上讲,这就是Vue为我们所做的事情。

看一下这个组件:

<template>   <div>     <h2>{{ title }}</h2>     <p>Some words that describe this thing</p>     <button>Clickity click!</button>   </div> </template>

下面是用 Javascript 实现,它做了同样的事情:

function component(title) {   let html = '';    html += '<div>';   html += `<h2>${title}</h2>`;   html += '<p>Some words that describe this thing</p>';   html += '<button>Clickity click!</button>';   html += '</div>';    return html; }

该代码与Vue组件构造HTML 方式基本相同。当然,这里没有响应性,事件处理或其它一系列功能,但是获取输出的 HTML 是同一回事。

如果你从未想过以这种方式考虑组件,那很正常,很多人也没有。

当你开始学习Vue时,会看到新的语法和所有这些神奇的东西,它们看起来与我们以前接触过的任何东西都不太一样。

依靠编程基础

一旦真正意识到 Vue 组件实际上只是函数,那么我们就可以发现一些隐藏的知识点。

我们可以从学习 Javascript 或任何其他编程语言中学到的知识应用到 Vue 中。

例如,假设我们想学习如何编写优雅和简洁的Vue组件。我们可以将所学到的编写干净 Javascript  的知识应用到Vue组件中。比如保持函数简小,使用描述性名称,等等

即使是学习类似的框架,如React或Angular,也是非常有用的练习。

现在让我们看一个更详细的例子。

以新的视角进行重构

假设有以下的一个组件:

<template>   <div>     <h2>{{ title }}</h3>     <div class="navigation">       <!-- ... -->     </div>      <div v-for="item in list">       <h3 class="item-title">         {{ item.title }}       </h3>       <p class="item-description">         {{ item.description }}       </p>     </div>      <footer>       <!-- ... -->     </footer>   </div> </template>

为简化,我们将v-for内部的内容变成了一个新的组件,如下所示:

<template>   <div>     <h3 class="item-title">       {{ item.title }}     </h3>     <p class="item-description">       {{ item.description }}     </p>   </div> </template>

完成此操作后,我们将其替换为父组件,这使我们摆脱了多余的嵌套:

<template>   <div>     <h2>{{ title }}</h3>     <div class="navigation">       <!-- ... -->     </div>      <ListItem       v-for="item in list"       :item="item"     />      <footer>       <!-- ... -->     </footer>   </div> </template>

如果我们在写Javascript,我们会用几乎完全相同的方式来做这些。

下面是一个使用循环的例子

function goingLoopy() {   const elements = document.querySelectorAll('.item');    for (const el of elements) {     const { width } = el.getBoundingClientRect();     if (width > 500) {       el.classList.add('large');     }   } }

在这里,我们使用 DOM 方法获取了类为 item 的所有元素,如果它们大于500px,则将large类添加其中。

这已经很好了,但是如果还要优化代码,应该怎么做呢

我的猜测是,你可能会把for..of的内容带入一个新函数中:

function updateElement(el) {   const { width } = el.getBoundingClientRect();   if (width > 500) {     el.classList.add('large');   } }  function goingLoopy() {   const elements = document.querySelectorAll('.item');    for (const el of elements) {     updateElement(el);   } }

如果你将组件看作是一个函数,那么对于我们的优化会有更深入的了解。

他们一直在你脑海中,你只是没有意识到。

到此,关于“怎么理解Vue中的组件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/208867.html

(0)
上一篇 2021年12月7日
下一篇 2021年12月7日

相关推荐

发表回复

登录后才能评论