Vue学习笔记重点(1)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>todo-list组件版</title>
    <script src="js/vue.js"></script>
    <style>
        #app{
            width: 300px;
            border: 1px solid #ccc;
        }
    </style>
    <script>

    </script>
</head>
<body>
<div id="app">
    <form @submit.prevent="addNewTodo">
        <!--⬆️这里使用表格的submit属性,是为了符合规范,将表格的submit属性绑定给addNewTodo这个变量,在vue实例中再对addNewTodo赋予具体要操作的函数-->
        <label for="new-todo">add to list</label>
        <!--label的for标签与表单元素的id绑定,实现效果为:点击表单文字时,会自动在表格中的input出现光标-->

        <!--v-model用于绑定input中的文字与vue数据中的变量,在后面vue实例中,直接使用了newTodoText来获取当前input中的值-->
        <input
                v-model="newTodoText"
                id="new-todo"
                type="text"
                placeholder='请输入文字'>
        <input type="submit"  value="add">
        <!--<button type="button" id="btn1">add</button>-->
        <!--此处如果用button标签,必须给button标签加上type-->
    </form>
    <ul class="ul1">
        <todo-item
            v-for="(todo,index) in todos"
            :key="todo.id"
            :title="todo.title"
            :index="index"
            v-on:removec="todos.splice(index,1)"
        >
            <!--splice中第一项为数组中要执行删除的位置,第二项为删除的数量.ps:index是不跟随项的,一直都是固定的0123456-->
            <!--removec是自定义的事件,在后面使用$emit()方法绑定到了删除按钮的click事件上。此处使用v-on绑定在组件上,是因为函数的操作就在todos上-->
        </todo-item>
    </ul>
</div>
</body>
<script>
    Vue.component('todo-item',{
        props:['title','index'],//这里主要需要传的是本来在组件里不出现的东西
        template:'<li>{{ index }}--{{ title }}<input value="删除" v-on:click="$emit(\'removec\')" type="button"></li>'
        //$emit(eventName)是触发事件的函数,removec是自定义的事件,绑定在了html中的todo-item中。由删除按钮的click来触发,相当于按钮按下时经过了两层事件,首先是click,然后是自定义的removec。

    });
    new Vue({
        el:'#app',
        data:{
            newTodoText:'',
            todos:[
                {
                    id:1,
                    title:'学习vue'
                },
                {
                    id:2,
                    title:'学习组件的基础'
                },
                {
                    id:3,
                    title:'实践一个小项目'
                }
            ],
            nextTodoId:4
        },


        methods:{
            addNewTodo:function(){   //这里的addNewTodo绑定的是form表格的sublime属性,即表格提交时(也就是按提交按钮时),触发该函数
                this.todos.push(//此处的this为整个vue实例,这里直接把新的id和title推进实例中的todos[]中,而没有直接与html、dom交互,实在是妙啊(之前也说过,vue实例是会随改变刷新局部页面)。
                    {
                        id:this.nextTodoId++,//每次递增自定义id编号,然后赋值给id
                        title: this.newTodoText //data中的newTodoText用v-model与input绑定了,这里直接取到了文本框中的内容
                    }
                );
                this.newTodoText = '';   //此行代码作用为每次点增加按钮时,清空文本框中的内容
            }
        }

    })


</script>
</html>
<think>好的,我现在需要帮助用户寻找关于Vue3的学习资料或笔记。首先,用户已经提供了一些参考引用,其中提到了创建Vue3工程的方法和npm版本的要求。我需要结合这些信息,整理出一个结构清晰的回答,并生成相关问题。 首先,我应该检查用户提供的引用内容。引用[1]提到了基于vue-cli创建Vue3工程,以及学习建议,比如多练习和查看官网。引用[2]则涉及npm版本的要求。这些都是学习Vue3的基础,需要包含在回答中。 接下来,我需要确保回答符合系统级指令的要求。比如,所有行内数学表达式要用$...$,但这里可能不涉及数学公式,所以可能不需要。但需要检查是否有其他格式要求。独立公式用$$...$$,但同样可能不适用。需要确保LaTeX语法正确,但问题主要关于Vue3,可能用不上数学表达式,这点需要注意。 回答需要用中文,结构清晰,分步骤解决问题。用户需要教程和笔记,所以应该列出官方资源、推荐教程、实践项目、社区资源、笔记技巧等。同时,每个部分末尾如果有引用到用户提供的引用内容,需要添加引用标识,如[^1]或[^2]。 然后,生成相关问题。根据用户的需求,相关问题可能涉及学习路线、官方文档重点、项目推荐、常见问题解决、调试技巧等。这些问题需要与Vue3学习相关,并且能够帮助用户进一步深入学习。 现在,我需要组织内容。首先,介绍官方文档和工具,提到vue-cli创建工程和npm版本要求,引用[1]和[2]。然后推荐免费教程,如B站视频和实战课程,接着是书籍和付费课程。实践项目部分可以建议TodoList、电商后台等。社区资源包括GitHub、掘金、Stack Overflow。最后,笔记技巧部分,强调多练习,参考引用[1]。 在生成相关问题的时候,需要确保问题覆盖学习路线、文档重点、项目实践、常见问题、调试工具、Vue3新特性以及与其他框架比较等。这样用户可以有方向地继续学习。 最后,检查是否符合所有格式要求,没有使用任何markdown,正确添加引用标识,语言自然口语化,没有使用专业格式。确保LaTeX部分如果有的话正确,但在这个问题中可能不需要,所以可以忽略。确认回答结构清晰,分点明确,帮助用户逐步找到所需资料。</think>以下是关于Vue3的学习资料和整理建议,结合实践经验和参考资料: ### 一、官方核心资源 1. **Vue3官方文档** 必读部分:响应式基础、组合式API、Teleport组件、Vite工程配置 示例代码: ```javascript // 组合式API示例 import { ref, computed } from 'vue' export default { setup() { const count = ref(0) const double = computed(() => count.value * 2) return { count, double } } } ``` 2. **Vue CLI工具** 创建项目时注意npm版本需≥8.0(可通过`npm install -g npm@latest`升级) ```bash vue create vue3-demo ``` ### 二、高效学习路径 1. **新手入门阶段(1-2周)** - 完成官方交互式教程 - 实现基础功能:组件通信、路由配置 - 参考案例:TodoList + 天气查询API对接 2. **进阶提升阶段(3-4周)** - 掌握Vuex状态管理 - 学习TypeScript集成 - 实战项目:电商商品管理系统 ### 三、精选学习资源 || 资源类型 | 推荐内容 | 特点 | |---|---|---|---| |1|视频教程|B站「尚硅谷Vue3教程」|项目驱动教学| |2|开源项目|vue3-element-admin|后台管理系统模板| |3|工具链|Vite + Pinia + VueUse|现代开发套件| ### 四、典型问题解决方案 1. **响应式数据失效** 使用`toRefs`解构props: ```javascript import { toRefs } from 'vue' export default { setup(props) { const { title } = toRefs(props) return { title } } } ``` 2. **组件通信优化** 优先使用provide/inject代替多层prop传递
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值