Vue完整版和runtime版的区别详解

 更新时间:2022年12月21日 14:27:08   作者:dan_n  
这篇文章主要为大家介绍了Vue完整版和runtime版的区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

创建Vue实例的三种方式

从HTML得到视图

前提:使用完整版,CDN引入或者修改配置

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
	// ...
  configureWebpack: {
    resolve: {
      alias: {
        vue$: 'vue/dist/vue.esm.js', // 用 webpack 1 时需用 'vue/dist/vue.common.js'
      },
    },
  },
})

index.html

<div id="app">
  {{n}} 
</div>

main.js

import Vue from 'vue' // 或者在index.html使用CDN引入
new Vue({
  // 挂载到app元素并以其DOM内部的HTML作为模板
  el: '#app',
  data: {
    n: 1,
  },
})
// 或者传一个字符串给template
new Vue({
  template: '<div>{{ n }}</div>'
})

用JS构建视图

需要用到render函数,参数是Vue提供的h函数,也即createElement

import Vue from 'vue'
new Vue({
  el: '#app',
  render(h) { // createElement
    return h('div', [this.n, h('button', { on: { click: this.add } }, '+1')])
  },
  data: {
    n: 0,
  },
  methods: {
    add() {
      this.n += 1
    },
  },
})

使用vue-loader

可以把*.vue文件翻译成h构建方法,但这样做HTML就只有一个div#app,SEO不友好

新建一个单文件组件 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>
<style>
  .red {
    color: red;
  }
</style>
import Vue from 'vue'
import Demo from './Demo.vue'
console.log(Demo.render.toString())
new Vue({
  el: '#app',
  render(h) {
    return h(Demo)
  },
})

将render()函数打印出来,可以看到该函数将<template>内部代码翻译成h构建方法

完整版和运行时版的区别

完整版:运行时+编译器(compiler将模板字符串编译成JavaScript渲染函数的代码)

运行时版:没有编译器,体积小

如果把视图写在HTML或template选项会报错

两者对比

特点视图CDN引入webpack或@vue/cli引入
Vue完整版有编译器,体积大写在HTML或template选项里vue.js需额外配置
Vue运行时版无编译器写在render函数里,用参数h创建标签vue.runtime.js默认使用

最佳实践

使用非完整版,配合 vue-loader 和 vue 文件

思路

  • 保证用户体验,用户下载的JS文件体积更小,但只支持h函数
  • 保证开发体验,开发者可以直接在vue文件里写HTML标签,不写h函数
  • 脏活让loader做,vue-loader把vue文件里的HTML转为h函数

SEO友好

搜索引擎优化

搜索引擎就是不停地curl,搜索引擎根据curl结果猜测页面内容

p.s. 用户访问网站看到的界面是JS渲染之后的,右键查看源代码才是curl返回的结果

如果页面都是JS创建div,curl无法获取有效信息,因此最好在title, description, keyword, h1, a写入内容(前面三个是meta标签)

总结一条原则:让curl能得到页面的主要内容和相关内容,SEO就能正常的工作

怎么提升SEO排名呢,访问量or氪金

以上就是Vue完整版和runtime版的区别详解的详细内容,更多关于Vue完整版runtime版区别的资料请关注脚本之家其它相关文章!

相关文章

  • vue表格(table)计算总计方式

    vue表格(table)计算总计方式

    这篇文章主要介绍了vue表格(table)计算总计方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 你不知道的SpringBoot与Vue部署解决方案

    你不知道的SpringBoot与Vue部署解决方案

    这篇文章主要介绍了你不知道的SpringBoot与Vue部署解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • vue 实现基础组件的自动化全局注册

    vue 实现基础组件的自动化全局注册

    这篇文章主要介绍了vue 实现基础组件的自动化全局注册的方法,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • Vue自定义指令使用方法详解

    Vue自定义指令使用方法详解

    这篇文章主要为大家详细介绍了Vue自定义指令的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • vue router解决路由带参数跳转时出现404问题

    vue router解决路由带参数跳转时出现404问题

    我的页面是从一个vue页面router跳转到另一个vue页面,并且利用windows.open() 浏览器重新创建一个页签,但是不知道为什么有时候可以有时候又不行,所以本文给大家介绍了vue router解决路由带参数跳转时出现404问题,需要的朋友可以参考下
    2024-03-03
  • vue  elementUI 表单嵌套验证的实例代码

    vue elementUI 表单嵌套验证的实例代码

    这篇文章主要介绍了vue + elementUI 表单嵌套验证,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • vue实现滚动底部加载下一页指令的示例代码

    vue实现滚动底部加载下一页指令的示例代码

    vue中监控滚动事件可以直接在mounted中绑定滚动事件,然后在销毁前解绑滚动事件,本文通过实例代码介绍vue实现滚动底部加载下一页指令的过程,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • vue开发table数据合并实现详解

    vue开发table数据合并实现详解

    这篇文章主要为大家介绍了vue开发table数据合并实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • vue 项目代码拆分的方案

    vue 项目代码拆分的方案

    这篇文章主要介绍了vue 项目代码拆分的方案,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-03-03
  • vue利用sync语法糖实现modal弹框的项目实践

    vue利用sync语法糖实现modal弹框的项目实践

    本文主要介绍了vue利用sync语法糖实现modal弹框的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论