当前位置: 首页 > news >正文

Vue2(七):配置脚手架、render函数、ref属性、props配置项、mixin(混入)、插件、scoped样式

Vue2(七)

    • 一、配置脚手架
    • 二、分析脚手架结构
    • 三、render函数
      • 1. 来看下main.js文件
      • 2. vue.js与vue.runtime.xxx.js的区别
      • 3. render函数是干啥的?
      • 4. 为什么要引入残缺的vue呢?
    • 四、脚手架的默认配置
    • 五、ref属性,顺便看看main.js和App.vue长啥样
      • 1. main.js
      • 2. MySchool
      • 3. App.vue
    • 六、props配置项
      • 1. 传递数据:
      • 2. 接收数据:
        • (1)简单接收,用的比较多
        • (2)限制类型接收
        • (3)限制类型、限制必要性、指定默认值
      • 3. 几个注意点
      • 4. 子组件Student.vue代码
    • 七、mixin(混入)
      • 1. 第一步定义混合:
      • 2. 第二步使用混合:
    • 八、插件
      • 1. 插件是干啥的?
      • 2. 定义插件
      • 3. 使用插件`Vue.use()`
    • 九、scoped样式

一、配置脚手架

Vue CLI(Vue Command Line Interface)Vue脚手架,Vue官方提供的标准化开发工具(开发平台)

安装node.js

第一步:输入命令npm config set registry=http://registry.npm.taobao.org 配置淘宝镜像站,全局安装@vue/cil ,命令行输入npm install -g @vue/cli。命令行输入vue,不报错及安装成功

第二步:切到要创建项目的目录,然后使用命令创建项目

vue create name

然后进入新建的name项目文件目录中,输入命令:npm run serve
得到的第一个url即是你的内置服务器,第二个是同局域网的其他人可以使用
在这里插入图片描述
脚手架配置完毕
如果要停止工程:连按两次Ctrl+C即可。

二、分析脚手架结构

├── 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:包版本控制文件

三、render函数

如果使用ES6的模块化引入Vue,那么默认引入的是vue.runtime.esm.js,其中esm是ES6 module简写

1. 来看下main.js文件

该文件是整个项目的入口文件

//引入Vue
import Vue from 'vue'
//引入App组件,它是所有组件的父组件
import App from './App.vue'//创建Vue实例对象:vm
new Vue({el: '#app',//render的中文意思是渲染render: h => h(App),
})

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

(1)vue.js是完整版的Vue,包含:核心功能+模板解析器
(2)vue.runtime.xxx.js是运行版的Vue,只包含:核心功能;没有模板解析器。

因为vue.runtime.xxx.js没有模板解析器,所以不能使用template这个配置项,需要使用render函数接收到的createElement函数去指定具体内容。为什么其他的.vue文件里写template标签就行呢?那是因为template写的是标签,而且在组件里,鱿鱼西专门儿又搞了个库去专门解析组件里的模板

3. render函数是干啥的?

render中文意思是渲染,render函数其实就扮演了vue中解析template模板的那块儿代码,把组件的内容解析一下子,渲染到页面上。我理解的感觉render就是个钩子(可能不是),当需要解析模板渲染页面时拿过来用一下,返回组件里的东西们,然后放到页面上。

(1)写个正常的renderi函数:

 render: function (createElement) {// console.log(typeof createElement);  //createElement是一个函数return createElement(App);}

(2)render函数写成箭头函数:

render: h => h(app)

这个render函数理解的感觉不是很透彻,后面再回来看看

4. 为什么要引入残缺的vue呢?

vue.js是完整版的Vue,由核心和模板解析器组成。但是模板解析器占用的内存太大(占三分之一vue),开发完成后并不需要模板解析器。(模板解析器就像雇的贴瓷砖的工人,工人干完活儿就可以离开了,瓷砖就是那个Vue核心,就一直在那待着了)

四、脚手架的默认配置

vue.config.js配置文件

  1. 使用 vue inspect > output.js可以查看到Vue脚手架的默认配置。
  2. 使用vue.config.js可以对脚手架进行个性化定制,详情见:https://cli.vuejs.org/zh

五、ref属性,顺便看看main.js和App.vue长啥样

被用来给元素或子组件注册引用信息(id的替代者)
应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
使用方式:

  1. 打标识:<h1 ref="xxx">.....</h1><School ref="xxx"></School>
  2. 获取:this.$refs.xxx

看看代码:

1. main.js

// 引入Vue
import Vue from 'vue';
// 引入App
import App from './App.vue';Vue.config.productionTip = false;// 创建一个Vue实例
new Vue({el: '#app',render: h => h(App)
});

2. MySchool

关于起名这块,想想非单文件组件,那里边我们写的时候,const School2 = Vue.extend({…}),然后下边components:{School1: School2}; 其实呢在单文件组件里,相当于是组件里写name:‘School2’,import School1,Vue开发者工具显示的是School2,但我们在代码里使用的是School1这个名字。

<template><div><h2>学校名称:{{ name }}</h2><h2>学校地址:{{ address }}</h2></div>
</templ
http://www.xdnf.cn/news/1369639.html

相关文章:

  • 深入解析交换机端口安全:Sticky MAC的工作原理与应用实践
  • 机器视觉学习-day03-灰度化实验-二值化和自适应二值化
  • 【C++】智能指针底层原理:引用计数与资源管理机制
  • 深度学习篇---LeNet-5网络结构
  • 病理软件Cellprofiler使用教程
  • vue2 和 vue3 生命周期的区别
  • 一篇文章拆解Java主流垃圾回收器及其调优方法。
  • LeetCode-22day:多维动态规划
  • 代码随想录Day62:图论(Floyd 算法精讲、A * 算法精讲、最短路算法总结、图论总结)
  • vue2和vue3的对比
  • TensorFlow 深度学习:使用 feature_column 训练心脏病分类模型
  • Day3--HOT100--42. 接雨水,3. 无重复字符的最长子串,438. 找到字符串中所有字母异位词
  • CentOS 7 服务器初始化:从 0 到 1 的安全高效配置指南
  • 肌肉力量训练
  • 木马免杀工具使用
  • 产品经理操作手册(3)——产品需求文档
  • 全链路营销增长引擎闭门会北京站开启倒计时,解码营销破局之道
  • 构建生产级 RAG 系统:从数据处理到智能体(Agent)的全流程深度解析
  • 书生大模型InternLM2:从2.6T数据到200K上下文的开源模型王者
  • word批量修改交叉引用颜色
  • 【SystemUI】新增实体键盘快捷键说明
  • 常用Nginx正则匹配规则
  • ruoyi-vue(十二)——定时任务,缓存监控,服务监控以及系统接口
  • 软件检测报告:XML外部实体(XXE)注入漏洞原因和影响
  • 服务器初始化流程***
  • 在分布式环境下正确使用MyBatis二级缓存
  • 在 UniApp 中,实现下拉刷新
  • Python爬虫: 分布式爬虫架构讲解及实现
  • IjkPlayer 播放 MP4 视频时快进导致进度回退的问题
  • iOS 26 正式版即将发布,Flutter 完成全新 devicectl + lldb 的 Debug JIT 运行支持