记账起手篇

242 阅读4分钟

用@vue/cli创建项目

【提醒1:别忘了做项目时,每完成一个小阶段就提交一下代码:git status \ git add. \ git commit -m "xxx"】

【提醒2:template里面不能有两个根组件(两个div),所以要用一个大div包裹住里面的所有内容】

【提醒3:千万不要在手机上使用fixed定位,坑超级超级多 --- 使用flex定位】

【小技巧:vscode快速查找文件快捷键 ctrl+p 】

前期准备

创建项目

Vue功能的配置

项目的目录说明

目录:

  • public: 一般不会变动
  • src: 源代码source的简写src
  • assets(资源):除了HTML, CSS, JS, TS都放在这里. 比如图片, svg
  • components: 只放组件
  • router: 用来放路由
  • store:
  • views: 来放视图的
  • App.vue: 整个应用的视图
  • Main.ts: 入口文件, 主要功能来渲染App
  • registerServiceWorker.ts: 与PWA相关
  • shims-tsx.d.ts: TS相关的
  • shims-vue.d.ts: TS相关的
  • tests: 测试相关
  • 下面都是配置文件
  • tsconfig.json: TS配置
  • vue.config.js: webpack配置

使用编辑器(VScode或Webstorm)的一些快捷功能

编辑器配置:

vscode输入 vbase或者v 就能快速创建一些模板

import alias:

1、TS/JS可以通过 @/目录名 引入文件

改为下图的写法

这里的@就是代表src目录

2、CSS/SASS可以通过 ~@/目录名 引入文件

改为下图的写法

这里的~@就是代表src目录

关于ts文件的细节

默认生成的typescript是没有写分号的,但是ts又希望我们写分号,所以最好都加上分号

TypeScript Importer:自动填写import的工具

  • 1、安装TypeScript Importer插件
  • 2、鼠标滑到要引入的组件名字(这里就是把鼠标移到Money那里)
  • 3、ctrl+shift+p 输入命令Import
  • 4、点击add import选项


底部导航思路一:配置router

确定页面url

配置router

初始化组件

控制渲染区域

这里实现了:用户切换不同的路径,就进入不同的页面 (默认是进入Money页面)

创建404页面

别忘了index.ts文件里import NotFound from '@/views/NotFound.vue'

底部导航思路二:全局引入

继续实现功能:点击记账/标签/统计,切换不同页面

但是呢,比如404页面就不需要记账/标签/统计这几个标签,所以要优化:将包裹记账/标签/统计的这个div封装成一个组件Nav

要引入这个组件,怎么引入呢? 比如在Money引入记账/标签/统计标签:

但是每个页面都这样引入,代码要重复写,所以采用全局引入Nav

全局引入后,单标签的import和components就不用写了

全局引入Nav的思路发展

![](p3-juejin.byteimg.com/tos-cn-i-k3…

底部导航思路三:添加样式

提醒:千万不要在手机上使用fixed定位,坑超级超级多】--- 所以使用flex定位

scoped的作用

写CSS,添加class类名很容易重复,比如nav这种太容易撞车了,这里Vue就给了个东西:scoped(范围),意思这个nav类名只在当前组件范围里 scoped会做俩件事情防止类名重叠:

1、在div类名后面添加随机字符串 data-v-xxxxx

2、会在css里添加一个属性选择器 data-v-xxxxx

【 但是不要在App.vue等这种作用于全局的文件里写scoped 】

将css布局抽离成组件Layout.vue

全局引入Layout

插槽

需求:不同页面插入的文案不同,比如Money.vue的文案是“此页面是Money.vue的内容”,而Labels页面的文案是“此页面是Labels.vue的内容”,不同页面不同文案,这时候可以使用插槽

插槽文档:cn.vuejs.org/v2/guide/co…

步骤:

  • 1、将相同的样式写到Layout.vue里,然后全局引入Layout组件
  • 2、使用插槽,将不同页面要显示的内容插入进去

使用svg-sprite-loader引入icon

步骤:

1、寻找要使用的 icon:iconfont-阿里巴巴矢量图标库

2、搜索相关关键词,比如label,然后下载icon (使用svg下载)

3、修改icon的名字(贴合你的文件名),并将其放到项目中,一般是在assets目录新建一个icons目录

4、引入svg,方法参考:鱼丸:关于Vue typescript 引入svg的问题

而我们得到的 x 是一个路径(字符串),因此我们需要svg-sprite-loader 【后续的操作看参考链接】

后续的操作中有是几个偏工程的代码,照着抄就好

在封装Icon时,别忘了全局引入Icon 以及把Nav里的【improt目录这部分代码】挪到 Icon.vue里

开始写CSS

(看Nav.vue和App.vue代码就行)

active-class 路由激活

实现:点击一个图标,图标就高亮

更新meta viewport

以适应手机端,使用淘宝的meta viewport即可


svg的两个坑

第一个坑:如果你下载的svg文件里,开发者自己写了 fill 这个属性,那么很容易影响你对icon变色的操作

解决办法:

步骤1、在vue.config.js里添加框红处的代码

步骤2、运行 yarn add --dev svgo-loader

有个注意点:

第二个坑:webstorm无法import scss文件 (2020年webstorm已经把这个bug修复了)