
vue的两个版本
在我们使用Vue
时,我们可以引用两个不同版本的Vue
,分别是Vue
完整版(vue.js
)和Vue
(vue.runtime.js
)非完整版。如果要部署给用户,则使用生产环境后缀为.mini.js
。
cdn
引入完整版(vue.js
)
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.min.js"></script>
cdn
引入非完整版 (vue.runtime.js
)
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.runtime.min.js"></script>
两者版本区别
Vue
完整版
- 有
compiler
- 视图写在
HTML
里或者写在template
选项
Vue非完整版
- 没有
compiler
- 视图写在
render
函数里,用h
来创建标签
注意
compiler
占40%体积。h
函数是Vue
作者尤雨溪写好传给render
的
template
和render
怎么用
假设我们有这样一个需求,用vue
在HTML
里写入一个div
,里面有数字0
,有一个button
按钮,当用户点击button
按钮数字+1
使用Vue
完整版在js
文件写入template
//html代码
<body>
<div id="app"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script>
</body>
//js代码
new Vue({
el:'#app',
template:`
<div>{{n}}<button @click="add">+1</button></div>
`,
data:{
n:0
},
methods:{
add(){
this.n += 1
}
}
})
使用Vue
非完整版在js
写入render
//html代码
<body>
<div id="app"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.runtime.min.js"></script>
</body>
//js代码
new Vue({
el:'#app',
render (h) { //h即createElement
return h('div', [this.n, h('button', {on:{click:this.add}}, '+1')])
},
data:{
n:0
},
methods:{
add(){
this.n += 1
}
}
})
使用Vue
单文件组件实现需求
//html代码
<body>
<div id="app"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.runtime.min.js"></script>
</body>
//Demo.vue代码
//视图
<template>
<div class="red">
{{n}}
<button @click="add">+1</button>
</div>
</template>
//视图以外其他的选项
<script>
export default {
data() {
return {
n: 0
}
},
methods: {
add() {
this.n += 1
}
}
}
</script>
//main.js代码
//引入Demo.vue赋值给变量Demo
import Demo form './Demo.vue'
new Vue({
el:'#app',
render (h) {
return h(Demo)
}
})
最佳实践
总是使用非完整版,然后配合vue-loader
和vue文件
思路
- 保证用户体验,用户下载的
JS文件
d体积更小,但只支持h函数 - 保证开发体验,开发者可直接在
vue文件
里写HTML标签
,而不是h函数 vue-loader
把vue文件
里的HTML
转为h函数
使用codesandbox.io写 Vue 代码
- 点击右上角的
Create Sandbox
按钮 - 在
Official Templates
中点击Vue
即可创建Vue
项目 - 编辑完后点击
file
按钮,选择Export to ZIP
即可下载压缩包到本地