背景:
公司的某个项目由百度fis3+vue做基础搭建(公司后端php–fis专为php量身定做)。
目前fis逐步被弃用,百度也专为go语言+python。未来会fis的前端难找到,所以准备使用webpack来做本地开发。fis只用作推个人环境。
改造过程以及过程中遇到的问题
由于之前公司前辈对组件做了其他封装。不用.vue文件,而是拆分成为.js、.less、.tpl文件。
产生第一个问题:.js文件中引入.tpl文件;fis使用内置的资源倒入方法__inline()。webpack没有类似方法。这时产生两个想法:1,将.tpl转成js暴露出一个字符串。这方法缺点很明显----不能设置高亮,也没办法工具自动补全。比较难用(此方案也被老大给否决了「哭唧唧」);2,找一个包,将.tpl文件转成字符串。暴露给js。网上查找到ejs-loader+html-loader两个包,比较契合;遂采用了后面这种方式。ejs通过import 方式暴露出一个方法,此方法返回tpl文件中的DOM节点转换的字符串
当时也是心里有一股执念,想把项目做成同时兼容webpack开发和fis开发。在__inline这地方卡了很久。一直想怎么重写了__inline()方法;
第二个问题实在比较坑,vue提供了两种模式,runtime-only和runtime+compiler,前一种并不支持template:'string’这种模式。此时必须引入完整版的vue。也就是两种vue存放的路径有些区别。前一种:import Vue from ‘vue’
后一种: import Due from ‘vue/dist/vue.esm.js’。并且main.js中初始化vue的地方也有不同。这里不做详细写法,
点击这里可以查看两种不同。
注意:注意整个项目中是否有多个地方引入vue。即使你此刻访问的路由并没有引用vue,而其他页面引用了不完整的vue,也会影响!!!!!!
血与泪的经历,以此祭奠我逝去的几天时间。本身并不难,由于自己的执念和坑,用了过多的时间。