vue1.x升级vue2.x,使用字符串模板,页面没办法渲染
问题详情
-
项目中原使用vue1.x,现升级到2.x
-
如图,项目中使用.html文件,并在js文件中引入该文件,使用template字符串渲染vue模板
// index.js import template from './index.html' export default { template: template, data() { ... }, ... }
在vue1.x中项目可正常运行,升级至vue2.x,页面无法渲染
问题分析
vue不同构建版本
vue1.x 不区分运行时和完整版,vue2.x默认使用运行时版本
完整版包含运行时 编译器,编译器作用:将模板字符串编译成js渲染函数
图片来源:vue2官网
模板编译
模板字符串编译
模板字符串解析需要编译器,所以需要引入完整版vue
图片来源:vue2官网
vm.$mount
完整版和运行时的区别在于是否有模板编译阶段,其主要表现在vm.$mount方法的实现上。
只包含运行时版本的$mount方法获取到DOM后直接进入挂载阶段。而完整版的$mount中先进行模板编译,编译成渲染函数;再回过头调用(与只包含运行时版本相同的)$mount,进入挂载阶段。
详见: Vue源码系列-Vue中文社区
vue-loader预编译
运行时版本不包含模板编译阶段,配合vue-loader进行预编译。vue-loader对.vue文件中的<template>预编译成渲染函数。所以不存在模板编译阶段,运行时版可由初始化直接进入挂载阶段。
预编译优势
很明显,编译过程对性能造成损耗,生产环境引入编译也增大了代码体积。所以预编译提高了运行时的性能,vue运行时版本减少了生产环境代码。
解决方案
webpack配置别名(使用模板字符串编译器)
配置来源:vue2官网
module.exports = {
// ...
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js' // 用 webpack 1 时需用 'vue/dist/vue.common.js'
}
}
}
vue cli配置runtimeCompiler(使用模板字符串编译器)
图片来源:vue cli 官网
推荐
不使用模板字符串写法,改为<template>
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgikfcf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13