Vue 单文件组件的基础入门指南

news2024/11/28 20:38:29

        本文是我2年前做的一个学习小demo,在这里分享一下

        希望对想要学习Vue的小伙伴能有一丢丢的小帮助~_~

1 Vue CLI

     Vue CLI (opens new window)是一个基于Vue.js进行快速开发的完整系统。

  • 这里我使用 Vue CLI 生成了一个Vue项目,命令为:vue create 自定义项目名称
  • 生成的Vue项目目录结构如下👇【目录生成命令:tree > /f E:result.txt】
│  .gitignore  这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中
│  babel.config.js 项目范围配置
│  jsconfig.json 目录中存在jsconfig.json文件表示该目录是JavaScript项目的根目录
│  package.json  定义了项目的所有依赖,包括开发时依赖和发布时依赖
│  README.md     说明文件
│  vue.config.js vue的一个配置文件
│  yarn.lock     作用是锁定唯一版本
├─node_modules  这个目录存放的是项目的所有依赖,即 npm install 命令下载下来的文件  
├─public
│      favicon.ico  ico图标文件
│      index.html  项目的首页,入口页,也是整个项目唯一的HTML页面
│      
└─src
    │  App.vue  是一个Vue组件,也是项目的第一个Vue组件
    │  main.js  相当于Java中的main方法,是整个项目的入口js
    │  
    ├─assets  用来存放资源文件
    │      logo.png  图片文件
    │      
    └─components  用来存放组件(一些可复用,非独立的页面)
            HelloWorld.vue 项目自带的HelloWorld组件
            TodoItem.vue   自定义开发的组件示例

2 组件中包含三部分内容

<template>
这里写的是html代码
</template>

<script>
这里写的是js代码
</script>

<style>
这里写的是css代码  
如果style标签里加个scoped属性,它表示style里面所写的css样式只会对本文件生效,别的地方用是不好使的
</style>

3 源码示例

  • TodoItem.vue

这个是开发的一个单文件组件示例代码

<!--这里写的是html代码 -->
<template>
    <li class="item">
        <!-- checkbox复选框 -->
        <input type="checkbox" v-model="yuan" >
           
        <!-- slot是vue中的插槽,插槽用于决定将所携带的内容,插入到指定的某个位置 -->
        <!-- 通过插槽jialin将checkbox选中状态(true或false)checked值传递过去,在App.vue的中使用了插槽v-slot:jialin -->
        <slot name="jialin" v-bind="{yuan}"></slot>
    </li>
</template>

<!--这里写的是js代码 -->
<script>
export default {
    props:['item'],
    data(){
        return{
            // isCheck和<input type="checkbox" v-model="isCheck">中的v-model进行双向绑定
            yuan:false,
        }
    }
}
</script>

<!--这里写的是css代码,加上scoped属性表示:style里面所写的css样式只会对本文件中<template>模板中的html代码生效,别的地方用是不好使的 -->
<style scoped>
 .item {
     color: red;
 }
</style>
  • App.vue

这个是开发的一个单文件组件示例代码

<!--这里写的是html代码 -->
<template>
    <li class="item">
        <!-- checkbox复选框 -->
        <input type="checkbox" v-model="yuan" >
           
        <!-- slot是vue中的插槽,插槽用于决定将所携带的内容,插入到指定的某个位置 -->
        <!-- 通过插槽jialin将checkbox选中状态(true或false)checked值传递过去,在App.vue的中使用了插槽v-slot:jialin -->
        <slot name="jialin" v-bind="{yuan}"></slot>
    </li>
</template>

<!--这里写的是js代码 -->
<script>
export default {
    props:['item'],
    data(){
        return{
            // isCheck和<input type="checkbox" v-model="isCheck">中的v-model进行双向绑定
            yuan:false,
        }
    }
}
</script>

<!--这里写的是css代码,加上scoped属性表示:style里面所写的css样式只会对本文件中<template>模板中的html代码生效,别的地方用是不好使的 -->
<style scoped>
 .item {
     color: red;
 }
</style>
  • App.vue

这个是开发的一个单文件组件示例代码

<!--这里写的是html代码 -->
<template>
  <div id="app">
    {{msg}}
    <!-- div代码块-start -->
    <div>
      <!-- input输入框,输入的内容会赋值给info -->
      <input type="text" v-model="info">
      <!-- button添加按钮,鼠标单击事件(v-on:click)中定义了一个handleClick方法 -->
      <button ref="inputPosition" v-on:click="handleClick">添加</button>
    </div>
    <!-- div代码块-end -->

    <!-- ul代码块-start -->
    <ul>
       <!-- 通过v-for循环获取list数组中的内容,每次获取内容以item变量输出 -->
       <todo-item v-for="flm in list" :key="flm">
         <!-- 通过v-slot:jialin插槽传递checkbox是否选中的对象,选中时itemProps.checked=true,未选中时itemProps.checked=false -->
         <template v-slot:jialin="itemProps">
           <!-- {{flm}}获取循环的内容 -->
           <span :style="{fontSize:'20px',color:itemProps.yuan?'red':'blue'}">{{flm}}</span>
         </template>
       </todo-item>
    </ul>
    <!-- ul代码块-end -->
  </div>
</template>

<!--这里写的是js代码 -->
<script>
// 引用TodoItem组件
import TodoItem from './components/TodoItem.vue'

export default {
  name: 'app',
  //在这里初始化数据
  data(){
    return{
      msg:'单文件组件',
      info:'',
      list:[],
    }
  },

  //在这里编写方法
  methods:{
    //button按钮的单击事件方法
    handleClick(){
      if(this.info==''){
        alert("请先写点啥呗")
        return;
      }

      //向list数组中添加input框中输入的info内容
      this.list.push(this.info)
      //清空input框中输入的info内容
      this.info = ''
    }
  },

  //在这里注册组件
  components: {
    TodoItem,
  }
}
</script>

<!--这里写的是css代码 -->
<style>

</style>

4 最终运行效果

5 下载源码

下载源码icon-default.png?t=N7T8https://github.com/fenglm2021/fenglm-vue-cli.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1356698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效工具汇总,让学习和办公飞起来

目录 1、寻找论文&#xff0c;效率很高2、学习各类编程的地方 1、寻找论文&#xff0c;效率很高 AMiner&#xff0c;由清华大学计算机科学与技术系的唐杰教授团队开发的一个显著的学术搜索和挖掘系统。系统提供了一整套功能以协助学术研究&#xff0c;包括研究人员档案、专家搜…

JAVA的引用与C++的指针有什么区别

JAVA的引用与C的指针有什么区别 1. Java值类型与引用类型1.1 变量初始化1.2 变量赋值1.3 函数传参 2. Java数据存储方式2.1 Java局部变量&&Java方法参数2.2 Java数组类型引用和对象2.3 String类型数据 3. Java引用类型3.1 强引用3.2 软引用3.3 弱引用3.4 虚引用 4. JAV…

SpringBoot启动时执行初始化操作还只会用@PostConstruct?进来看看其它方式~

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

网易云商冯旻伟:“大模型是下一代信息系统的大脑”

编者按 AIGC时代&#xff0c;大模型在智能客服领域的应用一直备受关注&#xff0c;其不断演进的技术给用户体验和业务效率带来了全新的可能性。 近日&#xff0c;我们有幸采访了网易云商AI技术线的负责人冯旻伟&#xff0c;深入了解了他们在智能客服方面的创新和实践。从文字交…

grep笔记240103

常用选项&#xff1a;&#xff1a; -i&#xff1a;忽略大小写进行匹配。 -v&#xff1a;反向匹配&#xff0c;只打印不匹配的行。 -n&#xff1a;显示匹配行的行号。 -r&#xff1a;递归查找子目录中的文件。 -l&#xff1a;只打印匹配的文件名。 -c&#xff1a;只打印匹配的行…

打造专属个人或企业知识付费平台,核心功能设计

在当今数字化时代&#xff0c;知识付费市场正在迅速崛起&#xff0c;而私域流量的概念也日益受到重视。私域流量指的是企业通过自有渠道获取的、能够自由支配的流量&#xff0c;这种流量具有更高的用户粘性和转化率。因此&#xff0c;打造一个基于私域流量的知识付费小程序平台…

【响应式编程-03】常见的函数式接口

一、简要描述 使用Lambda的前提 必须有一个函数式接口: 有且只有一个抽象方法的接口 FunctionnalInterface注解 常见的函数式接口 Runnable / CallableSupplier / ConsumerComparatorPredicateFunction 二、代码实现 1、Runnable - RunnableLambda测试类 package tech.flygo.…

VSCode编辑器下载与安装

1、下载 官网下载地址&#xff1a; 打开下载地址&#xff0c;如下图&#xff0c;根据自己的平台选择相应版本下载&#xff08;本文只针对Windows系统的安装&#xff0c;所以下载Windows版的&#xff09;。 点击会自动下载&#xff0c;下载完成文件如下图&#xff1a; 2、安装…

超实用的小红书达人投放策略分析,纯干货

为什么我投放了小红书达人却没有什么效果&#xff1f; 品牌到底应该怎么投放小红书达人&#xff1f; 品牌小红书达人投放怎么去把控和规划&#xff1f; 小红书达人作为品牌方和用户之间的桥梁&#xff0c;直接影响消费决策。达人粉丝数量大&#xff0c;粘性高&#xff0c;很…

市场复盘总结 20240104

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整 昨日回顾: 方法一:指标选股 select * from dbo.ResultAll where 入选类型 like %指标选股% and 入选日期=20240104;方法二:趋势选股法 1、最低价持续3日上涨 2、均价…

CSS transition详解

文章目录 属性transition-propertytransition-durationtransition-timing-functiontransition-delaytransition 简写属性 方法Element&#xff1a;transitionrun 事件Element&#xff1a;transitionstart 事件Element&#xff1a;transitionend 事件Element&#xff1a;transit…

深入探究:使用大型AI模型的实战指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在今天的技术领域&#xff0c;大型AI模型已成为…

指增的超额来自于哪里,2024的乾坤九法,美股的宏观估值双杀

图片截止到&#xff1a;2024/1/4 上证 周四 -0.43% 市场热点分析 1. 2024元旦后国内外市场都出现了不同程度的下跌。技术面国内市场一直走在72日均线之下&#xff0c;而且没有形成底部&#xff0c;熊市还会延续。宏观方面&#xff0c;12月官方PMI持续向下&#xff0c;小企业更多…

C++_string类

目录 一、string的模拟实现 1、初始化字符串 2、拷贝构造 3、赋值重载 4、迭代器 5、比较字符串 6、尾插字符、字符串 7、resize 8、中间插入数据、删除数据 8.1 插入数据 8.2 删除数据 9、查找数据 10、打印对象&#xff08;流插入、流提取&#xff09; 结语&a…

【企业动态】Silicon Labs中国区总经理拜访东胜物联,加深合作交流

12月27日&#xff0c;芯科科技(Silicon Labs)中国区总经理周巍先生前来我司拜访&#xff0c;东胜物联CEO支江峰先生热情接待&#xff0c;双方就物联网网关、Beacon等产品合作相关事宜进行交流。 在这次重要的会晤中&#xff0c;双方就技术创新以及未来合作方向进行了深入沟通。…

快手推荐算法工程师三面回顾

快手三次技术面试一次HR面试的简单回顾&#xff0c;希望对大家有所启发。 一面 面试官一上来就让写算法题&#xff0c;第一个是计算岛屿数量&#xff0c;第二个是最长回文字串。 然后就是介绍自己的论文。对于论文的工作&#xff0c;面试官只是在问关于论文的问题&#xff0…

光掩膜基板,到2024年全球市场规模将超过30亿美元

光掩膜基板是一种用于微电子加工的关键材料&#xff0c;其特点是具有高透光性和高平整度&#xff0c;能够提升微电子元器件的成品率和品质。全球市场分析 从全球市场来看&#xff0c;光掩膜基板市场规模持续增长。据分析&#xff0c;到2024年&#xff0c;全球光掩膜基板市场规模…

buuctf-Misc 题目解答分解106-108

106.[DDCTF2018]流量分析 提示了私钥 &#xff0c;无厘头&#xff0c;先不管了&#xff0c;应该是流量加密了&#xff0c;用wireshark 打开 看看&#xff0c;真个数据流量&#xff0c;没有http 直接找到TCP 协议的包追踪一下TCP 找到TCP 不是红色的包追踪&#xff0c;大量的数…

webStorm打开终端Cannot open Local Terminal Failed to start [powershell.exe] in

今天webStorm打开终端显示 Cannot open Local Terminal Failed to start [powershell.exe] in D:\allproject\boosterStation 有关详细信息&#xff0c;请查看 IDE 日志(帮助 | 在 Explorer 中显示日志)。 解决方案&#xff1a; 打开设置&#xff08;如下图&#xff09;&a…

Mysql和Redis数据一致性问题

MySQL和Redis数据一致性算是个很经典的问题,在之前也看到过很多相关的文章,最近心血来潮,想把一致性问题的解决方案和存在问题都总结一下。 不推荐方案 1 先更新MySQL,再更新Redis。 如上图有两个请求要同时进行更新操作,在并发情况下,B请求虽然更新时间晚于A请求,但是…