##我们先说说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中并没有这个标签元素!
})
##一个知识越贫乏的人,就越有莫名的优越感!