前言
记录Vue的一些常用操作
安装与卸载
卸载vue cli
正确方式如下(视情况加sudo),而非网上大多人说的 npm uninstall vue-cli -g
1 | npm uninstall -g @vue/cli |
安装vue cli
1 | npm install -g @vue/cli |
npm install时的常见报错
1 | Unexpected end of JSON input |
我的解决方法均是通过清缓存解决,清一次不行,那就多清三五次
1 | npm cache clean --force |
编写项目代码步骤
- cd到想要创建项目的目录
- 键入vue ui 命令,通过vue cli可视化界面创建项目
- 输入项目名称,如果有预设(babel + eslint + router + vuex)则直接使用预设,如果没有则使用手动,勾选上述列举
- 一路确定,等待项目创建完成
- vscode打开项目,终端输入npm run serve 能够运行,则说明项目创建成功
常用代码
两到三个公用的界面,最好封装为组件,简化代码
组件使用
在传动态参数时,prop前面加冒号
:
,传固定值时不加组件有事件传递时,使用emit传递回父组件,父组件用
v-on:组件传递过来的事件名="父组件接收的事件名"
来接收1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 组件事件传递方式
// param为参数
// clickEvent为父组件接收的事件名
clickEvent (param) {
this.$emit('clickEvent', param)
}
// 父组件接收事件方式(假设组件名为component1)
// 使用v-on接收,clickEvent为子组件传过来的事件名,noticeClick为父组件实际处理事件的方法名
<component1 v-on:clickEvent="noticeClick" />
// 父组件具体实现子组件事件的地方
noticeClick (param) {
// ...
}
必须要计算好单个页面的高度,否则会影响如Vant组件的上拉下拉效果,滚动条显示等,具体参照西北项目
CSS样式,基本上flex和grid可以搞定大部分情况,可参照收藏的掘金文章多熟悉
Vant目前修改其组件内部样式是用的
::v-deep .vant的class名(通过Chrome调试查看)
路由传参与接收
1
2
3
4// 传值
// name: 路由名
// params: 所传参数,object(字典)类型
this.$router.push({ name: 'tododetail', params: { id: id, type: pType } })1
2
3
4// 接收传值
// 通过当前路由route获取params中的参数
// xx为传值过来中object中的具体参数字段
this.$route.params.xx项目配置
- 网络请求跨域
- 屏幕适配
- 公共样式导入
- …
注意事项
调用data或者方法,一定要记得写this. 不然起不了作用很难发现问题😂
JS字符串中使用变量
1
var strWithVar = `some string ${var}` // 外边包含的是``,不是单引号
常见问题
网络请求返回数据正确,但是HTML标签赋值却没值。
- 问题:检查数据是否有多层嵌套如data.xx.yy.zz,可能是VUE不够智能,它可能不能获取较深层的数据,一般最多两层。
- 解决:用一个新的变量接收
Uncaught TypeError: Cannot read property ‘substring‘ of undefined相关
- 问题:一般为调用如substring等方法的字段未undefined,所以整体也会报undefined
- 解决:对不能自动处理undefined的字段进行判断,null判断,undefined等判断
van-overlay
不能拖动滚动- 解决:vant版本太低,需要升级到
2.6.2
以上,设置:lock-scroll=false
- 解决:vant版本太低,需要升级到
- 纯数字或纯字母不换行
- 问题:被认为是一个数字(纯数字)或者一个单词(纯字母)
- 解决:CSS样式加上
word-break: break-all
- 传参prop值变化,但是组件显示没变
- 问题:组件绑定的是data的值
- 解决,将data绑定改为computed
- Vue默认创建的项目,布局在手机上从状态栏下面开始
- 解决:在public/index.html中对应viewport的meta标签加上
viewport-fit=cover
,确保视图缩放填充整个屏幕
- 解决:在public/index.html中对应viewport的meta标签加上
待深入
- 移动端页面滚动条&高度一次性配置方案