vue3知识点

简介

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
以下内容基于vue3

安装

  • 在页面上以 CDN 包的形式导入。
<script src="https://unpkg.com/vue@next"></script>
npm install vue@next
npm install -D @vue/compiler-sfc //单文件组件配套工具
  • 使用官方的 CLI 来构建一个项目,它为现代前端工作流程提供了功能齐备的构建设置 (例如,热重载、保存时的提示等等)。
yarn global add @vue/cli
# 或
npm install -g @vue/cli

vue upgrade --next

创建vue

<script src="https://unpkg.com/vue@next"></script>
<div id="hello-vue" class="demo">
  {
  { message }}
</div>

<script>
const HelloVueApp = {
     
  data() {
      //data 选项是一个函数。Vue 在创建新组件实例的过程中调用此函数。
  //它应该返回一个对象,然后 Vue 会通过响应性系统将其包裹起来,并以 $data 的形式存储在组件实例中。
    return {
     
      message: 'Hello Vue!!'
    }

  }
}

Vue.createApp(HelloVueApp).mount('#hello-vue') //hello-vue是渲染的起点

const app = Vue.createApp({
     
	data() {
     
		return {
      count: 4 }
	},
	methods: {
     
    increment() {
     
      // `this` 指向该组件实例
      this.count++
    }
  }
})
const vm = app.mount('#app')
vm.$data.message = "a" // 修改 vm.message 的值也会更新 $data.message 
vm.message = "b" // 修改 vm.message 的值也会更新 $data.message 
vm.increment() // 调用方法
</script>

模板语法

数据绑定最常见的形式就是使用 {
  {...}}(双大括号)的文本插值
<div id="app">
  <p>{
  { message }}</p>
</div>

如果不想改变标签的内容,可以通过使用 v-once 指令执行一次性地插值
<span v-once>这个将不会改变: {
  { message }}</span>

使用 v-html 指令用于输出 html 代码
<p>使用 v-html 指令: <span v-html="rawHtml"></span></p>

属性中的值应使用 v-bind 指令
<div v-bind:id="dynamicId"></div>

对于布尔属性,常规值为 true 或 false,如果属性值为 null 或 undefined,则该属性不会显示出来
<button v-bind:disabled="isButtonDisabled">按钮</button>

<!-- 完整语法 -->
<a v-bind:href="url"></a>
v-bind 缩写
<a :href="url"></a>

Vue.js 都提供了完全的 JavaScript 表达式支持。
{
  {5+5}}<br>
{
  {ok ? 'YES' : 'NO' }}<br>
{
  { message.split('').reverse().join('') }}
<!--  这是语句,不是表达式:-->
{
  { var a = 1 }}
<!-- 流控制也不会生效,请使用三元表达式 -->
{
  { if (ok) { return message } }}

指令是带有 v- 前缀的特殊属性。
<div id="app">
    <p v-if="seen">现在你看到我了</p>
</div>

事件
<!-- 完整语法 -->
<a v-on:click="doSomething"> ... </a>
v-on 缩写
<a @click="doSomething"> ... </a>
<!-- 动态参数的缩写 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>

修饰符是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。
例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault():
<form v-on:submit.prevent="onSubmit"></form>

用户输入 在 input 输入框中我们可以使用 v-model 指令来实现双向数据绑定
v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。
<div id="app">
    <p>{
  { message }}</p>
    <input v-model="message">
</div>

条件语句

条件判断使用 v-if 指令,指令的表达式返回 true 时才会显示
<div id="app">
    <p v-if="seen">现在你看到我了</p>
</div>

如果是多个元素,可以包裹在 <template> 元素上,并在上面使用 v-if。最终的渲染结果将不包含 <template> 元素
<div id="app">
    <template v-if="seen">
        <h1>网站</h1>
        <p>Google</p>
        <p>Runoob</p>
        <p>Taobao</p>
    </template>
</div>

可以用 v-else 指令给 v-if 添加一个 "else" 块
<div id="app">
    <div v-if="Math.random() > 0.5">
      随机数大于 0.5
    </div>
    <div v-else>
      随机数小于等于 0.5
    </div>
</div>

v-else-if 即 v-if 的 else-if 块,可以链式的使用多次
<div id="app">
    <div v-if="type === 'A'">
         A
    </div>
    <div v-else-if="type === 'B'">
      B
    </div>
    <div v-else-if="type === 'C'">
      C
    </div>
    <div v-else>
      Not A/B/C
    </div>
</div>

可以使用 v-show 指令来根据条件展示元素(更改display为none)
<h1 v-show="ok">Hello!</h1>

循环

循环使用 v-for 指令。
<div id="app">
  迭代数组
  <ol>
    <li v-for="site in sites">
      {
  { site.text }}
    </li>
  </ol>
  v-for 还支持一个可选的第二个参数,参数值为当前项的索引
  <ol>
    <li v-for="(site, index) in sites">
      {
  { index }} -{
  { site.text }}
    </li>
  </ol>
  迭代对象
  <ul>
    <li v-for="value in object">
    {
  { value }}
    </li>
  </ul>
  也可以提供第二个的参数为键名
  <ul>
    <li v-for="(value, key) in object">
    {
  { key }} : {
  { value }}
    </li>
  </ul>
  第三个参数为索引
  <ul>
    <li v-for="(value, key, index) in object">
     {
  { index }}. {
  { key }} : {
  { value }}
    </li>
  </ul>
  迭代整数
  <ul>
    <li v-for="n in 10">
     {
  { n }}
    </li>
  </ul>
  template使用循环
  <ul>
    <template v-for="site in sites">
      <li>{
  { site.name }}</li>
      <li>--------------</li>
    </template>
  </ul>
</div>
 
<script>
const app = {
     
  data() {
     
    return {
     
      object: {
     
        name: '菜鸟教程',
        url: 'http://www.runoob.com',
        slogan: '学的不仅是技术,更是梦想!'
      }
    }
  }
}
</script>

在自定义组件上,你可以像在任何普通元素上一样使用 v-for
<my-component v-for="item in items" :key="item.id"></my-component>

为了把迭代数据传递到组件里,我们要使用 props
<my-component
  v-for="(item, index) in items"
  :item="item"
  :index="index"
  :key="item.id"
></my-component>

组件

组件(Component)是 Vue.js 最强大的功能之一。
组件可以扩展 HTML 元素,封装可重用的代码。

注册全局组件
<script>
const app = Vue.createApp({
     ...})

app.component('my-component-name', {
     
  /* ... */
})
</script>
注册后,我们可以使用以下方式来调用组件
<my-component-name></my-component-name>
例子
<script>
// 创建一个Vue 应用
const app = Vue.createApp({
     })

// 定义一个名为 button-counter 的新全局组件
app.component('button-counter', {
     
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值