Vue的render函数&修改默认配置

一、render函数

使用之前的单文件组件中的写法修改main.js,精简一下js,看效果。

/*
  该文件是整个项目的入口文件
*/
// 引入Vue
import Vue from 'vue'
// 引入App组件,他是所有组件的父组件
// import App from './App.vue'
// 关闭vue的生产提示
Vue.config.productionTip = false
// 创建Vue实例对象---vm
new Vue({
  el:'#app',
  // 一会解释,完成的功能:将组件App放入容器中
  // render: h => h(App),

  template:`<h2>你好</h2>`,
  // components:{App}
})
//}).$mount('#app')

把之前单文件组件代码移动到脚手架里面运行
在这里插入图片描述

提示:你使用的vue时残缺(精简)版本的(缺少模板解析器),并给了你两个解决方案,一个是使用render,另一个是引入完整版的vue(包含模板解析器)而不是残缺版

原因:项目的vue_test\node_modules\vue\package.json文件的module配置项使用了残缺版的Vue
在这里插入图片描述

找到dist/vue.runtime.esm.js文件添加几个console.log()刷新项目,观察效果。通过修改源码验证了确实是使用了精简版的vue。

在这里插入图片描述

在这里插入图片描述

解决问题的第一种方式:引入完整版vue

使用import Vue from 'vue/dist/vue'重新引入vue,其中路径vue/dist/vue直接定位到完整版功能的vue.js文件,其功能更加强大。
在这里插入图片描述

在这里插入图片描述

解决问题的第二种方式:render函数

/*
  该文件是整个项目的入口文件
*/
// 引入Vue
import Vue from 'vue'
// 引入App组件,他是所有组件的父组件
// import App from './App.vue'
// 关闭vue的生产提示
Vue.config.productionTip = false
// 创建Vue实例对象---vm
new Vue({
  el:'#app',
  // 一会解释,完成的功能:将组件App放入容器中
  // render: h => h(App),
  render(createElement){
    console.log(typeof createElement)
    //                   标签   内容
    return createElement('h2','你好啊')
  }

  // template:`<h2>你好</h2>`,
  // components:{App}
})
//}).$mount('#app')

在这里插入图片描述

render是一个函数,vue帮你调用,调用时给你传递一个参数(帮你创建一个具体元素的参数)

render箭头函数的简写形式,第一个参数是(h2)是html5种的内置标签,第二参数是内容。若通过render使用组件是直接调用一个参数,参数为引入的组件。
在这里插入图片描述
参数为组件时,只写一个参数就行,即写组件。
在这里插入图片描述

总结:
关于不同版本的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函数去指定具体内容。

二、修改默认配置

脚手架干活依托着webpack,webpack依靠webpack.config.js配置文件(vue隐藏了)

使用vue inspect > output.js命令把vue的默认配置导入到一个js文件。

修改output.js无效,它仅仅是配置的输出文件。

以下五项(属于默认配置)不能修改。
在这里插入图片描述

要想修改需要在项目下新建一个名为vue.config.js的文件。文件内容参考官网。(https://cli.vuejs.org/config/#pages)

修改入口文件例子
在这里插入图片描述

注意:vue.config.js里面不能注释掉,什么也不写,会报错。写了vue.config.js文件,里边的配置项就不要全部注释,需要写上新的配置。

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,

  pages: {
    index: {
      // entry for the page
      entry: 'src/main.js',
    },
  },

  lintOnSave:false,//关闭语法自动检查
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值