Open wallleap opened 1 year ago
title: Vue 的完整版和运行时版有什么区别 date: 2023-06-02 20:13 updated: 2023-06-02 20:13 cover: https://cdn.wallleap.cn/img/pic/cover/vue.jpg author: Luwang comments: true rating: 1 tags:
引入 CDN 文件时,Vue 有两个版本,完整版和运行时版,两者有什么区别呢?
在了解这两个版本之前,我们先了解一下 Vue
渐进式 JavaScript 框架 The Progressive JavaScript Framework
现在可以直接用 Vite,但是我们在这里先用 Vue Cli 创建
npm install -g @vue/cli
vue --version
vue create vue-demo
npm run serve
在官网中不同版本区别可以看到除开生产或开发版和模块化,可以分为两个版本完整版(vue.js)和运行时版本(vue.runtime.js)
vue.js
vue.min.js
vue.runtime.js
.vue
div#app
main.js
const vm = new Vue({})
完整版 Vue 的写法:
在 HTML/模板(template)中用到了模板字符串、指令等,需要用到 Compiler({{count}} → 0、v-if、v-for 等)
template
{{count}}
0
v-if
v-for
<div id="app"> {{count}} <button @click="add">+1</button> </div> <script> new Vue({ el: '#app', // template: `<div>{{count}}<button v-on:click="add">+1</button></div>` // 或者用这种 data: { count: 0 }, methods: { add() { this.count += 1 } } }) </script>
编译器 → 复杂 → 占用代码体积(用户的)
不完整版 Vue 的写法:
纯运行时,不需要用到编译器,可以使用 vue-loader,节省了近 40% 代码体积
<div id="app"></div> <script> new Vue({ el: '#app', render(h) { // h → createElement return h('div', [this.count, h('button', {on: {click: this.add}}, '+1')]) }, data: { count: 0 }, methods: { add() { this.count += 1 } } }) </script>
在 render 函数中 return 参数 h
render
return
h
h 用来创建标签,基本用法 h(标签, 内容)
h(标签, 内容)
新建 MyDemo.vue 文件
MyDemo.vue
<template> <!-- 视图放这 --> <div class="red"> {{ count }} <button @click="add">+1</button> </div> </template> <script> // 除了视图的其他选项 export default { data() { // 单文件组件中 data 必须是函数 return { count: 0 } }, // 上面的 template 中内容会自动翻译成 render(h){ return h(...) } methods: { add() { this.count += 1 } } } </script> <style scoped> /* 样式写这 */ .red { color: red; } </style>
main.js 中引入并挂载
import Vue from 'vue' import MyDemo from './MyDemo.vue' // 必须加 ./;加不加 .vue 都可以,但是加了更明确 // console.log(MyDemo) new Vue({ el: '#app', render: h => h(MyDemo) })
MyDemo 是一个对象,有 methods 对象、beforeCreate、beforeDestroy 数组,data、render 等方法
可以把 MyDemo.render.toString() 打印出来就是 render 方法
MyDemo.render.toString()
.min.js
最佳实践:总是使用非完整版,然后配合 vue-loader 和 vue 文件
思路:
注意:
注:开发版和生产版 production 生产模式,代码给用户用,尽量优化、压缩、混淆(CDN 文件一般 .min.js 结尾) development 开发模式,代码给开发者用,需要边写边预览,尽量方便开发、调试(CDN 文件一般 .js 结尾)
注:开发版和生产版
.js
title: Vue 的完整版和运行时版有什么区别 date: 2023-06-02 20:13 updated: 2023-06-02 20:13 cover: https://cdn.wallleap.cn/img/pic/cover/vue.jpg author: Luwang comments: true rating: 1 tags:
前端 description: Vue 的完整版和运行时版有什么区别
引入 CDN 文件时,Vue 有两个版本,完整版和运行时版,两者有什么区别呢?
在了解这两个版本之前,我们先了解一下 Vue
官方文档
创建 Vue 项目
现在可以直接用 Vite,但是我们在这里先用 Vue Cli 创建
使用 Vue CLI 来创建这个项目
npm install -g @vue/cli
安装 @vue-clivue --version
查看版本vue create vue-demo
创建一个项目,进行一些配置选择npm run serve
进行预览自己从零开始搭建 Vue 项目
两个版本
在官网中不同版本区别可以看到除开生产或开发版和模块化,可以分为两个版本完整版(vue.js)和运行时版本(vue.runtime.js)
vue.js
、vue.min.js
vue.runtime.js
.vue
文件翻译成 h 构建方法,这样做 HTML 就只有一个div#app
,SEO 不友好main.js
中const vm = new Vue({})
用完整版 Vue 实现点击加一
完整版 Vue 的写法:
在 HTML/模板(
template
)中用到了模板字符串、指令等,需要用到 Compiler({{count}}
→0
、v-if
、v-for
等)编译器 → 复杂 → 占用代码体积(用户的)
用不完整版 Vue 实现点击加一
不完整版 Vue 的写法:
纯运行时,不需要用到编译器,可以使用 vue-loader,节省了近 40% 代码体积
在
render
函数中return
参数h
h
用来创建标签,基本用法h(标签, 内容)
改写成 Vue 单文件组件
新建
MyDemo.vue
文件main.js
中引入并挂载MyDemo 是一个对象,有 methods 对象、beforeCreate、beforeDestroy 数组,data、render 等方法
可以把
MyDemo.render.toString()
打印出来就是 render 方法总结
vue.js
vue.runtime.js
.min.js
最佳实践:总是使用非完整版,然后配合 vue-loader 和 vue 文件
思路:
h
函数h
函数h
函数注意: