01、vue.js 3 笔记(只是本人笔记,大家请自行到官网看文档)

需要引入:

<script src="https://unpkg.com/vue@next"></script>

第一个 Vuejs 3

复制代码
<div id="counter">
    Counter: {{counter}}
</div>

const Counter = {
    data() {
        return {
            counter: 0
        }
    },
    mounted(){
        setInterval(()=>{
            this.counter++
        }, 1000)
    }
}

Vue.createApp(Counter).mount('#counter')
复制代码

 

v-bind指令设置 attribute

指令 都是以前缀 v- 开头 

复制代码
<div id="bind-attribute">
    <!-- 将这个元素节点的 title attribute 和当前活跃实例的 message property 保持一致 -->
    <span v-bind:title="message">
        鼠标悬停几秒钟查看此处动态绑定的提示信息!
    </span>
</div>

const AttributeBinding ={
    data(){
        return {
            message: 'you loaded this page on ' + new Date().toLocaleString()
        }
    }
}
Vue.createApp(AttributeBinding).mount('#bind-attribute')
复制代码

  

事件 v-on

复制代码
<div id="event-handling">
    <p>{{message}}</p>
    <button v-on:click="reverseMessage">点击翻转 Message</button>
</div>

const EventHandling = {
    data(){
        return {
            message: "Hello Vue.js"
        }
    },
    methods:{
        reverseMessage(){
            this.message = this.message.split('').reverse().join('')
        }
    }
}
Vue.createApp(EventHandling).mount("#event-handling")
复制代码

  

v-model 表单输入和应用状态之间的双向绑定

复制代码
<div id="two-way-binding">
    <p>{{message}}</p>
    <input v-model="message">
</div>

const TwoWayBinding = {
    data(){
        return {
            message : 'Hello Vue!'
        }
    }
}
Vue.createApp(TwoWayBinding).mount('#two-way-binding')
复制代码

 

v-if

复制代码
<div id="conditional-rendering">
    <span v-if="seen">现在你看到我了</span>
</div>

const  CoditionalRendering =  {
    data(){
        return {
            seen: true
        }
    }
}
Vue.createApp(CoditionalRendering).mount("#conditional-rendering")
复制代码

 

v-for

复制代码
<div id="list-rendering">
    <ol>
        <li v-for="todo in todos">
            {{todo.text}}
        </li>
    </ol>
</div>

const ListRendering = {
    data(){
        return {
            todos: [
                {text: '111'},
                {text: '222'},
                {text: '333'}
            ]
        }
    }
}
Vue.createApp(ListRendering).mount('#list-rendering')
复制代码

 

组件化开发

就是在一个页面中,将每个部分都模块化,每个部分里面又可以继续模块化,形成如下图:

Vue 的组件,就是一个预定义选项的实例,注册组件也很简单,如下

复制代码
<div id="todo-list-app">
    <ol>
        <!-- 创建一个 todo-item 组件实例 -->
        <!--
            现在我们为每个 todo-item 提供 todo 对象
            todo 对象是变量,即其内容可以是动态的。
            我们也需要为每个组件提供一个“key”,稍后再
            作详细解释。
        -->
        <todo-item v-for="item in groceryList" v-bind:todo="item" v-bind:key="item.id"></todo-item>
    </ol>
</div>


// TodoItem 就是一个预定义选项的实例,即:定义了这组件的选项
const TodoItem = {
    props: ['todo'],       // 父组件的数据传递到子组件中
    template: `<li>{{todo.text}}</li>`
}

const TodoList = {
    data() {
        return {
            groceryList: [
                { id: 0, text: 'Vegetables' },
                { id: 1, text: 'Cheese' },
                { id: 2, text: 'Whatever else humans are supposed to eat' }
            ]
        }
    },
    components: {
        TodoItem    // 注册一个新组件
    }
    //... // 组件的其它 property
}

const app = Vue.createApp(TodoList)

// 挂载 Vue 应用
app.mount('#todo-list-app')
复制代码

上图的橙色箭头中为:子单元通过 prop 接口与父单元进行了良好的解耦。我们现在可以进一步改进 <todo-item> 组件,提供一个更为复杂的模板和逻辑,而不会影响到父应用。

在一个大型应用中,有必要将整个应用程序划分为多个组件,以使开发更易管理。类似:

<div id="app">
  <app-nav></app-nav>
  <app-view>
    <app-sidebar></app-sidebar>
    <app-content></app-content>
  </app-view>
</div>

 

下一篇:Vue Components (组件)

posted @   醉马踏千秋  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示