细说:Vue脚手架main.js中render:h => h(App)

##我们先说说vue脚手架要使用它,因为import Vue from 'vue’此处导入的vue不是完整的,缺少模板解析器,所以我们就不能和以前一样使用如下代码了,运行就会报错。

此时你或许会疑惑为什么vue官方要使用缺少模板解析器的vue文件呢?
因为模板解析器的体积非常的大!不利于后续开发完成之后进行打包上线。所以就使用vue的精简文件里面只有vue的核心功能。

//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//关闭Vue的生产提示
Vue.config.productionTip = false

//创建vm
new Vue({
	el:'#app',
	template:`<App></App>`,
	components:{App}
})

言归正传,接下来我们还是解释重点吧!

##1,初始代码

//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//关闭Vue的生产提示
Vue.config.productionTip = false

//创建vm
new Vue({
	el:'#app',
	render: h => h(App)
})

#接下来我就只展示vue实例对象中的内容了
##2,熟悉react的朋友对它肯定不陌生,不知道也无妨,接下来我们一起探索!我们先利用控制台看看render函数有没有执行

//创建vm
new Vue({
	el:'#app',
	// render: h => h(App)
	render(){
		console.log("render");
		return null
	}
	//通过观察发现控制台成功执行了
})

##3,此时我们不妨尝试在render中随便传入一个参数,并且控制台输出该参数的类型,如果是函数我们就可以直接调用,如果是对象我们就可以点属性使用。

//创建vm
new Vue({
	el:'#app',
	// render: h => h(App)
	render(abc){
		console.log("render");
		console.log(typeof abc);
		return null
	}
	//通过观察发现控制台输出该参数是一个函数,那么我们直接调用即可
})

//4,和大家透个底吧,其实文档里面传入的参数是createElement,看见它是不是很眼熟呢!接下来我们就使用它看看吧!

//创建vm
new Vue({
	el:'#app',
	// render: h => h(App)
	render(createElement){
		console.log("render");
		console.log(typeof createElement);
		return createElement('h2','hello world')
		//此时页面是可以正常渲染的。
		//注意:传入的第一个参数是元素名字要加引号,不加引号就会被误以为是变量
	}
})

5,接下来我们就开始简化此代码吧!

//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//关闭Vue的生产提示
Vue.config.productionTip = false

//创建vm
new Vue({
	el:'#app',

	// render: h => h(App)

	// render(createElement){
	// 	return createElement('h2','hello world')
	// },

	// 既然我们没有使用this,那么我们就可以使用箭头函数吧!
	// render: (createElement) => {
	// 	return createElement('h2','hello world')
	// },

	// 只有一个参数,那么我们就可以省略小括号,对吧!
	// render: createElement => {
	// 	return createElement('h2','hello world')
	// },

	// 只有一句函数体,我们就可以省略return关键字和大花括号咯!
	// render: createElement =>  createElement('h2','hello world'),

	// 既然传入的形参,形参是可以任意写的,那么我们为什么不简单点,只传入一个h字母呢?
	// render: h =>  h('h2','hello world'),

	// 这时如果我们直接把App组件传入进去,我们就不需要传入内容了,因为App组件里面已经写好了内容
	// 此处没有加引号,就代表是一个变量,那么它就会在当前文件中查找这个变量。显然在开头处我们已经引入了这个名为App的组件
	render: h =>  h(App),

	// 你可能还有疑问,为什么App不加引号呢?
	// render: h =>  h('App'),
	// 如果像这样加引号了的话,那么就是想要创建一个html里面的App标签元素,
	//		然而html中并没有这个标签元素!

})

##一个知识越贫乏的人,就越有莫名的优越感!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值