当前位置: 首页 > 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.dtcms.com/a/352174.html

相关文章:

  • C/C++ 数据结构 —— 树(2)
  • Leetcode 1049. 最后一块石头的重量 II 动态规划-01背包
  • LeetCode-22day:多维动态规划
  • Docker详细学习
  • 税务岗位职场能力解析与提升路径规划
  • 固定资产管理系统核心模块拆解:全流程管理逻辑
  • 如何利用ArcGIS探究环境与生态因子对水体、土壤、大气污染物等影响
  • 【服务器】Apache Superset MCP接入与使用
  • postman使用
  • golang 8函数
  • pytorch_grad_cam 库学习笔记——基类BaseCAM
  • 使用 Docker、Jenkins、Harbor 和 GitLab 构建 CI/CD 流水线
  • Unity:游戏性能优化!之把分散在各个游戏角色GameObject上的脚本修改为在一个脚本中运行。这样做会让游戏运行更高效?
  • Caddy + CoreDNS 深度解析:从功能架构到性能优化实践(下)
  • 【BurpSuite 插件开发】实战篇(十六-终章)性能优化实践:线程管理到正则匹配的全方位提升
  • Python爬虫实战:研究开源的高性能代理池,构建电商数据采集和分析系统
  • STM32物联网项目---ESP8266微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制---云平台篇(一)
  • 深度学习——神经网络(PyTorch 实现 MNIST 手写数字识别案例)
  • 数据集数量与神经网络参数关系分析
  • Vibe 编程:下一代开发者范式的深度解析
  • 扩展现有的多模块 Starter
  • 2025本地部署overleaf
  • 售价3499美元,英伟达Jetson Thor实现机器人与物理世界的实时智能交互
  • 09-SpringBoot入门案例
  • 嵌入式学习笔记-LINUX系统编程阶段-DAY01脚本
  • 第四章:条件判断
  • VueFlow画布可视化——js技能提升
  • 安全测试、web探测、httpx
  • vue2和vue3的对比
  • Android 属性系统