day5--vue脚手架

本文详细介绍了Vue.js中的单文件组件(SFC),包括它的优点、基本结构和使用示例。通过hello.vue实例,展示了如何在同一个文件内处理模板、脚本和样式。还提及了Vue CLI(脚手架)的使用步骤和项目结构,并讨论了vue.runtime.js与vue.js的区别。此外,文章还讲解了ref属性的用途,props属性的设置及其验证规则,强调了props的只读性。
摘要由CSDN通过智能技术生成
单文件组件

一个文件中只包含一个组件。

在前面的非单文件组件中,有些缺点非常明显:

  • 全局定义 强制要求每个component中的命名不得重复
  • 字符串模板 缺乏语法高亮,在HTML有多行的时候,需要用到丑陋的``
  • 不支持CSS 意味着当HTML和JavaScript组件化时,css明显被遗漏
  • 没有构建步骤 限制只能使用HTML和ES5 JavaScript,而不能预处理

综合以上缺点,引出文件扩展名为.vue的单文件组件来提供解决方法

hello.vue 简单实例:

<template>
        <div>
            <p>{{msg}}</p>
        </div>

</template>

<script>
    //交互
    //默认导出
export default {
    data() {
        return {
            msg:'hello world!'
        }
    },
}
</script>

<style>
    //样式
    p{
        font-size: 2em;
        text-align: center;
    }
</style>

实例中可以看出获得了:

完整语法高亮CommonJS模块组件作用域的css

脚手架
介绍

​ 1.vue脚手架是vue官方提供的标准化开发工具(开发平台)

​ 2.目前最新的版本是4.x

​ 3.文档:https://cli.vuejs.org/zh/

使用步骤

全局安装@vue/cli

$npm install -g @vue/cli

切换到你要创建项目的目录下,然后使用命令创建项目

$vue create 自定义项目名称

启动项目(首先要进入打开你创建的项目)

$npm run serve
脚手架结构

node_modules 存放第三方依赖包

public

​ favicon.ico :页签图标

​ index.html :主页面

src

​ assets:存放静态资源

​ logo.png

​ component:存放组件

​ HelloWorld.vue

​ App.vue :汇总所有组件

​ main.js:入口文件

.gitignore:git版本控制 忽略配置

babel.config.js :babel的配置文件

package.json :应用包配置文件

README.md 应用描述文件

Package-lock.json 包版本控制文件

关于不同版本的vue

1.vue.js与vue.runtime.xxx.js的区别

​ 1)vue.js是完整版的vue,包含:核心功能+模板解析器

​ 2)vue.runtime.xxx.js是运行版的vue,只包含:核心功能,没有模板解析器

2.因为vue.runtime.xxx.js没有模板解析器,所以不能使用template配置项,需要用render函数接收到的createElement函数去指定具体内容

render函数

(createElement: () => VNode) => VNode

字符串模板的代替方案,该渲染函数接收一个createElement方法作为第一个参数用来创建VNode

Vue 选项中的 render 函数若存在,则 Vue 构造函数不会从 template 选项或通过 el 选项指定的挂载元素中提取出的 HTML 模板编译渲染函数。

ref属性

ref是接收string字符串的

ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件

1.被用来给元素或子组件注册引用信息(id的替代者)

2.应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象

3.使用方式:

打标识

获取:this.$refs.xxx

<template>
<!-- 结构 -->
    <div class="school">
        <h2>学校名称{{name}}</h2>
        <!-- ref是id的替代值 -->
        <h2 id="add" ref="add">学校地址{{address}}</h2>
        <button @click="getElement">点击获取元素</button>

    </div>
</template>

<script>
// 交互
// 默认导出
export default {
    data(){
        return{
            name:'briup',
            address:"昆山"
        }
    },
    methods: {
        getElement(){
            // let d=document.getElementById('add');
            // console.log(d);
            // this是指向vc对象
            console.log(this);
            let d=this.$refs.add
            console.log(d);
        }
    },
}
</script>

<style scoped>
    /* 样式 */
    .school{
        background-color:aqua;
    }
</style>

关于 ref 注册时间的重要说明:因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!$refs 也不是响应式的,因此你不应该试图用它在模板中做数据绑定。

props属性

功能:让组件接收外部传过来的数据

​ 1)传递数据

​ 2)接收数据

​ 只接收

​ props:[‘name’,‘age’]

​ 接收并且限制类型

props:{
	name:{
		type:String
	}
}

​ 限制类型、限制必要性、指定默认值

props:{
	name:{
		type:String,
		require:true,	
	}
	age:{
	type:Number,
	defualt:18
	}
}
    • type:可以是下列原生构造函数中的一种:StringNumberBooleanArrayObjectDateFunctionSymbol、任何自定义构造函数、或上述内容组成的数组。会检查一个 prop 是否是给定的类型,否则抛出警告。Prop 类型的更多信息在此
    • defaultany
      为该 prop 指定一个默认值。如果该 prop 没有被传入,则换做用这个值。对象或数组的默认值必须从一个工厂函数返回。
    • requiredBoolean
      定义该 prop 是否是必填项。在非生产环境中,如果这个值为 truthy 且该 prop 没有被传入的,则一个控制台警告将会被抛出。
    • validatorFunction
      自定义验证函数会将该 prop 的值作为唯一的参数代入。在非生产环境下,如果该函数返回一个 falsy 的值 (也就是验证失败),一个控制台警告将会被抛出。你可以在这里查阅更多 prop 验证的相关信息。

    案例:

<template>
  <!-- 结构 -->
  <div class="school">
    <h2>学生姓名{{ name }}</h2>
    <h2>家庭住址{{ age + 1 }}</h2>
  </div>
</template>

<script>
// 交互
// 默认导出
export default {
  data() {
    return {};
  },
  methods: {},
  //   配置项props,用来接收使用者传递的参数
  // props:['name','age']
  props: {
    name: {
      // 类型
      type: String,
      // 必要性
      required: true,
    },
    age: {
      type: Number,
      // 默认值
      default: 18,
        //自定义验证函数
       validator: function (value) {
        return value >= 0
      }
    },
  },
};
</script>

<style scoped>
/* 样式 */
.school {
  background-color: blue;
}
</style>

注意:props是只读的,如果你进行了修改,就会发出警告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值