2024年10月vue前台门户网站模板(Vue3基础-模板语法)

 更新时间:2024-10-12

  ⑴vue前台门户网站模板(Vue基础-模板语法

  ⑵Vue基础-模板语法

  ⑶如果我们希望把数据显示到模板(template中,使用最多的语法是“Mustache”语法(双大括号)的文本插值。

  ⑷并且我们前端提到过,data返回的对象是有添加到Vue的响应式系统中,当data中的数据发生改变时,对应的内容也会发生更新。

  ⑸当然,Mustache中不仅仅可以是data中的属性,也可以是一个JavaScript的表达式:

  ⑹下面这种写法是语句不是表达式,所以是错误的:

  ⑺v-once用于指定元素或者组件只渲染一次,当数据发生变化时,元素或者组件以及其所有的子元素将视为静态内容并且跳过,该指令可以用于性能优化。

  ⑻如果添加到父节点,那么所有的子节点也是只会渲染一次:

  ⑼用于更新元素的textContent,等价于“Mustache“语法,而且“Mustache“语法更灵活。

  ⑽默认情况下,如果我们展示的内容本身是html的,那么vue并不会对其进行特殊的解析。如果我们希望这个内容被Vue可以解析出来,那么可以使用v-html来展示。

  ⑾v-pre用于跳过元素和它的子元素的编译过程,显示原始的Mustache标签。跳过不需要编译的节点,加快编译的速度。

  ⑿这个指令保持在元素上直到关联组件实例结束编译。

  ⒀v-cloak和CSS规则如{display:none}一起用时,这个指令可以隐藏未编译的Mustache标签直到组件实例准备完毕,主要用于解决闪动问题,现在Vue一般不会出现这个问题了。

  ⒁《div》不会显示,直到编译结束。

  ⒂前面讲的一系列指令,主要是将值插入到模板内容中。但是,除了内容需要动态来决定外,某些属性我们也希望动态来绑定。比如动态绑定a元素的href属性,动态绑定img元素的src属性。

  ⒃绑定属性我们使用v-bind:,缩写:,用于动态地绑定一个或多个attribute,或一个组件prop到表达式。

  ⒄v-bind用于绑定一个或多个属性值,或者向另一个组件传递props值(这个学到组件时再介绍,在开发中,有哪些属性需要动态进行绑定呢?还是有很多的,比如图片的链接src、网站的链接href、动态绑定一些类、样式等等。

  ⒅v-bind有一个对应的语法糖,也就是简写方式,在开发中,我们通常会使用语法糖的形式,因为更简洁。

  ⒆注意:Vuetemplate模板中只能有一个根元素,Vuetemplate模板中允许有多个根元素。

  ⒇在开发中,有时候我们的元素class也是动态的,比如:当数据为某个状态时,字体显示红色,当数据另一个状态时,字体显示黑色。

  ⒈绑定class有两种方式:对象语法,数组语法。

  ⒉对象语法:我们可以传给:class(v-bind:class的简写)一个对象,以动态地切换class。

  ⒊数组语法:我们可以把一个数组传给:class,以应用一个class列表;

  ⒋我们可以利用v-bind:style来绑定一些CSS内联样式,这是因为某些样式我们需要根据数据动态来决定,比如某段文字的颜色,大小等等。

  ⒌CSS属性名可以用驼峰式(camelCase)或短横线分隔(kebab-case,记得用引号括起来)来命名。

  ⒍绑定style有两种方式:对象语法,数组语法。

  ⒎数组语法::style的数组语法可以将多个样式对象应用到同一个元素上

  ⒏在某些情况下,我们属性的名称可能也不是固定的。前面我们无论绑定src、href、class、style,属性名称都是固定的,如果属性名称不是固定的,我们可以使用:=“值”的格式来定义,这种绑定的方式,我们称之为动态绑定属性。

  ⒐如果我们希望将一个对象的所有属性,绑定到元素上的所有属性,应该怎么做呢?非常简单,我们可以直接使用v-bind绑定一个对象。

  ⒑如下:info对象会被拆解成div的各个属性。

  ⒒前面我们绑定了元素的内容和属性,在前端开发中另外一个非常重要的特性就是交互。在前端开发中,我们需要经常和用户进行各种各样的交互,这个时候,我们就必须监听用户发生的事件,比如点击、拖拽、键盘事件等等。

  ⒓在Vue中如何监听事件呢?使用v-on指令。接下来我们来看一下v-on的用法:

  ⒔我们可以使用v-on来监听一下点击的事件:

  ⒕v-on:click可以写成click,是它的语法糖写法:

  ⒖当然,我们也可以绑定其他的事件:

  ⒗如果我们希望一个元素绑定多个事件,这个时候可以传入一个对象:

  ⒘当通过methods中定义方法,以供click调用时,需要注意参数问题:

  ⒙情况一:如果该方法不需要额外参数,那么方法后的()可以不添加,并且方法的实现不用参数,直接就可以打印event。情况二:如果需要同时传入某个参数和event时,可以通过$event传入事件,并且方法的实现必须按顺序写明参数。

  ⒚keyup.enter代表enter键弹起的时候会调用onEnter方法,我们一般在方法里面获取输入的值:

  ⒛在某些情况下,我们需要根据当前的条件决定某些元素或组件是否渲染,这个时候我们就需要进行条件判断了。

  Vue提供了下面的指令来进行条件判断:

  下面我们来对它们进行学习。

  v-if、v-else、v-else-if用于根据条件来渲染某一块的内容,这些内容只有在条件为true时,才会被渲染出来,这三个指令与JavaScript的条件语句if、else、elseif类似。

  v-if的渲染原理:v-if是惰性的,当条件为false时,其判断的内容完全不会被渲染或者会被销毁掉,当条件为true时,才会真正渲染条件块中的内容。

  因为v-if是一个指令,所以必须将其添加到一个元素上,但是如果我们希望切换的是多个元素呢?如果此时我们使用div包裹,div会被渲染到界面上来,但是我们并不希望div被渲染,这个时候,我们可以选择使用template,template元素可以当做不可见的包裹元素,并且v-if可以添加到template上,但是最终template不会被渲染出来,类似于小程序中的block。

  v-show和v-if的用法看起来是一致的,也是根据一个条件决定是否显示元素或者组件。

  首先,在用法上的区别:

  开发中如何进行选择呢?

  在真实开发中,我们往往会从服务器拿到一组数据,并且需要对其进行渲染。这个时候我们可以使用v-for来完成,v-for类似于JavaScript的for循环,可以用于遍历一组数据。

  v-for的基本格式是“itemin数组“,数组通常是来自data或者prop,也可以是其他方式,item是我们给每项元素起的一个别名,这个别名可以自定来定义。

  我们知道,在遍历一个数组的时候会经常需要拿到数组的索引,如果我们需要索引,可以使用格式“(item,index)in数组“,注意顺序,数组元素项item在前面,索引项index在后面。

  类似于v-if,你可以使用template元素来循环渲染一段包含多个元素的内容。我们使用template来对多个元素进行包裹,而不是使用div来完成,因为div会被渲染,template不会被渲染。而且如果有ul,ul里面不推荐放div,只推荐放li。

  Vue将被侦听的数组的变更方法进行了包裹,所以它们也将会触发视图更新,这些被包裹过的方法包括:

  上面的方法会直接修改原来的数组,所以视图会跟着更新。但是某些方法不会替换原来的数组,而是会生成新的数组,比如filter()、concat()和slice(),这时候我们可以通过重新赋值的方式触发视图更新,如下:

  在使用v-for进行列表渲染时,我们通常会给元素或者组件绑定一个key属性。

  这个key属性有什么作用呢?我们先来看一下官方的解释:key属性主要用在Vue的虚拟DOM算法,在新旧nodes对比时辨识VNodes。如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法,而使用key时,它会基于key的变化重新排列元素顺序,并且会移除/销毁key不存在的元素。

  官方的解释对于初学者来说并不好理解,比如下面的问题:什么是新旧nodes,什么是VNode?没有key的时候,如何尝试修改和复用的?有key的时候,如何基于key重新排列的?

  我们先来解释一下VNode的概念:VNode的全称是VirtualNode,也就是虚拟节点。事实上,无论是组件还是元素,它们最终在Vue中表示出来的都是一个个VNode。VNode的本质是一个JavaScript的对象。

  如果我们不只是一个简单的div,而是有一大堆的元素,那么它们应该会形成一个VNodeTree。

  我们先来看一个案例:这个案例是当我们点击按钮时会在li中间插入一个f。

  我们可以确定的是,这次更新对于ul和button是不需要进行更新,需要更新的是我们li的列表。在Vue中,对于相同父元素的子元素节点并不会重新渲染整个列表,因为对于列表中a、b、c、d它们都是没有变化的。在操作真实DOM的时候,我们只需要在中间插入一个f的li即可。

  那么Vue中对于列表的更新究竟是如何操作的呢?Vue事实上会对于有key和没有key会调用两个不同的方法,有key,那么就调用patchKeyedChildren方法,没有key,那么就调用patchUnkeyedChildren方法。

  没有key的diff算法:

  我们会发现上面的diff算法效率并不高,c和d来说它们事实上并不需要有任何的改动,但是因为我们的c被f所使用了,所有后续所有的内容都要一次进行改动,并且最后进行新增。

  有key的diff算法:

  所以我们可以发现,Vue在进行diff算法的时候,会尽量利用我们的key来进行优化操作,在没有key的时候我们的效率是非常低效的,在进行插入或者重置顺序的时候,保持相同的key可以让diff算法更加的高效。

  volar怎么快速生成vue模板

  配置自定义的snippets。通过vscode的snippets我们可以自己配置自定义的snippets,从而实现快捷生成代码片段,在VsCode里按F,输入snippets-》选择配置用户代码片段,选择后出现选择配置的界面,这里我们对Vue文件的代码片段进行配置,然后就完成了。随着vscode以及vue的越来越普及,vetur这个名字也越来越被人熟知。vetur是一个vscode插件,用于为.vue单文件组件提供代码高亮以及语法支持。

  vue模板,钩子函数

  vue脚手架:在vue脚手架中有一个template模板:在模板里面只有一个子类,子类里面可以有其他的类script?脚本:style样式vue的语法:当使用{{}}的时候,里面只可以传入文本,如果传入标签也会被认为文本;v-html:可以传入标签,设置属性的时候,使用v-bind:id可以简写为?:id=’id’在html中的变量都需要在data里面进行定义在{{}}里面可以使用表达式v-if与v-else:如果if条件成立的话,就会显示if里面的内容,如果没有成立的话,就会显示else里面的内容,v-show?条件成立就显示内容,条件不成立,不会显示内容。他会修改display属性vue中的钩子函数:一个指令定义对象可以提供如下几个钩子函数(均为可选):bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。inserted:被绑定元素插入父节点时调用(仅保证父节点存在,但不一定已被插入文档中)。update:所在组件的VNode更新时调用,但是可能发生在其子VNode更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新ponentUpdated:指令所在组件的VNode及其子VNode全部更新后调用。unbind:只调用一次,指令与元素解绑时调用。钩子函数参数指令钩子函数会被传入以下参数:el:指令所绑定的元素,可以用来直接操作DOM。binding:一个对象,包含以下属性:name:指令名,不包括?v-?前缀。value:指令的绑定值,例如:v-my-directive=“+“?中,绑定值为?。oldValue:指令绑定的前一个值,仅在?update?和?ponentUpdated?钩子中可用。无论值是否改变都可用。expression:字符串形式的指令表达式。例如?v-my-directive=“+“?中,表达式为?“+“。arg:传给指令的参数,可选。例如?v-my-directive:foo?中,参数为?“foo“。modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar?中,修饰符对象为?{foo:true,bar:true}。vnode:Vue编译生成的虚拟节点。移步VNodeAPI来了解更多详情。oldVnode:上一个虚拟节点,仅在?update?和?ponentUpdated?钩子中可用。除了?el?之外,其它参数都应该是只读的,切勿进行修改。如果需要在钩子之间共享数据,建议通过元素的dataset来进行。使用vue计算属性:链接:来源:

  vue-cli携手rollup、github-actions打造自动部署的vue组件模板(使用篇

  旨在让开发者在开发时拥有

  的一条龙服务。(接下来,我们携手...)

  假设项目经理提了个需求:要开发一个组件,名叫chaste-ponent。

  默认使用package.json的name打包

  只需关注src文件内的组件开发,开发完成就可以

  发布组件了(有特殊需求配置的除外

  监听src文件变动,热更新

  页面基础内容也是自动生成的,只需要对docs-src/views文件的组件示例做调整

  支持eslint风格检查及自动格式化,在ctrl+s保存的时候自动格式化,没用过格式化的都说直接飞起来了

  eslint风格检查

  需要插件eslint、babel-eslint、eslint-plugin-vue及配置文件.eslintrc.js的支持,这些都已经做好了

  需要器设置的支持,这里在.vscode/settings.json文件配置好了

  年月github正式开放了github-actions,感动!

  这里我们只介绍怎么用她完成demo自动构建,想要更多了解的可以看看阮一峰老师的这篇文章GitHubActions入门教程

  然后提交项目到chaste-ponent仓库

  githubpages

  设置source为gh-pages分支

  打开就进入了demo页面

  之后chaste-ponent项目的每次提交都回自动更新demo

  已配置的workflows/ci.yml如下

  下一篇博客将分享vue-cli携手rollup、github-actions打造自动部署的vue组件模板(搭建篇

  github地址(觉得有帮助,欢迎star

  vueform表单开发快速模板vue-form-marking

  怎么样vue可以动态解析后台给的html模板

  Vue实践与总结——模板、渲染、响应式

  HTML--》AST--》render

  在源码中,Vue增加了对初始化是否成功的判断,如果非newVue()创建的对象,Vue会报warn。

  初始化工作是通过_init(options)函数完成的。

  当然,vdom改变并不一定会引起真实DOM操作。在适当情况下,新vdom会经过diff算法,与旧vodm比较,得到最小变动后,才会进行一次真实DOM操作。

您可能感兴趣的文章:

相关文章