最近公司准备新做一个小程序,准备尝试一下最近比较火的小程序框架
mpvue
之前一家公司做项目的时候,也写了差不多一年的vue
上来就是一顿初始化项目、安装依赖、引入Vuex
、启动项目,一切都是那么完美
组件当然是要用的,但是比起浏览器的vue
,能力还是要缺少很多,不过也还是能用,slot
居然不好使倒是让人蛮难受,不过又写会熟悉的vue
感觉还是不错
npm
仅仅过了一天后,有一位同事要加入到这个项目的开发,于是克隆项目到本地,安装,启动…
dist
目录里居然没有编译出来app.json
等一系列根目录的文件导致项目跑步起来,但是webpack
编译居然还特么的成功…
总之来来回回的都不能行,觉得应该是有些依赖更新了,造成了这么个bug
后来发现,在新下载的模板中有一个新的main.json
文件来编译到小程序app.json
文件(这仅仅过了一天怎么就???)
mpvue-loader
的版本也更新了,想想这应该就是在我老项目上运行异常的原因吧?
之前对依赖包的版本没多大关注,这次踩了这么一个坑,赶紧看看版本的问题喽
package.json
在我们项目中的package.json
文件是记录着我们整个项目需要使用到的各种依赖,通常记录的版本号之前都有一个^
符号,比如我们的版本是1.2.3
下载版本的范围就在1.2.3-2.0.0
之间,去找最新的依赖,没想到这次新版本的依赖居然出现了问题
其实我们在开发的时候是不希望每次重新安装的时候都去更新依赖,因为确实有些新版本反而会带来意想不到的bug
,导致本来完成的工作又得增加一部分;在多人协作的时候,也没有办法保证环境的完全一致从而造成代码之间的差异。
解决方案
1.固定版本号,去除^
等范围符号
2.package-lock.json
在npm install
的时候生成的一份文件,记录当前状态实际安装的各个package
的来源和版本号
但是在不同的npm
版本下,规则并不一样…
npm 5.0.x
:不管package.json
怎么变,npm i
都会根据lock
文件下载
5.1.0
之后,无视lock
,去下载最新的npm
5.4.2
之后,如果改了package.json
,且和lock
文件不同,执行npm i
的时候会根据package
中的版本号和语义去下载新的包,并更新至lock
…
3.yarn
会创建yarn.lock
文件,可以创建完全相同的环境
继续踩坑
更新到最新的mpvue
项目之后,发现之前在模板写的相对路径的图片现在都不能访问到了,必须要改成绝对路径。有些改成了绝对路径的图片也找不到,看了下在编译的过程中并没有把文件夹下的图片复制到dist
,心好累…
2018年09月21日更新
mpvue会频繁的setData
,导致性能较差,并且会使scroll-view
的scroll-top
和scroll-into-view
属性产生bug,会连续设置导致无法滚动
目前更改为fix-mpvue
包解决了此问题