(二)文件配置

1、项目基本信息

该项目有主要功能:
资讯列表、标签页切换,文章举报,频道管理、文章详情、关注功能、点赞功能、评论功能、搜索功能、登录功能、个人中心、编辑资料、小思同学
生产环境的包

包名概念
vue核心vue
vuex状态管理插件
vue-router路由管理插件
axios网络请求插件
vant移动组件库
socket.io-client即时通讯库
amfe-flexibleflexiblejs适配

开发环境的包

包名概念
babelES语法转换器
lesscss预处理器
vue-clivue项目脚手架包
postcsscss语法转换器(后处理器)
postcss-pxtorem把px自动转rem插件(需要配合webpack用)

项目相关的技术点

  • vuejs中
    • $nextTick使用 (vue更新DOM是异步的)
    • 组件通信 (父, 子传递)
    • async和await用法
    • keep-alive 组件缓存
  • vuex
    • actions中发ajax请求
    • actions的返回值问题
  • vue-router
    • 懒加载 (对打包以后首页加载速度有提高)
  • axios
    • 请求和响应拦截器
    • 封装请求工具方法 (代码分层)
  • vant
    • 对组件使用更熟悉
    • 掌握使用和查阅文档的能力
  • socket.io-client
    • http协议复习 (请求报文和响应报文)
    • 与ajax区别
    • ajax和socket之间的选择
  • amfe-flexible
    • 移动端rem适配

跳过部分
如何创建Vue,不再赘述,使用Vue create就可以创建 另外根据需求,可能需要删除elslint或创建eslint下面总结Eslint经验

2、ESLint配置及介绍

目标

  • 了解ESLint的作用
  • 能判断ESLint的错误

ESLint是什么

ESLint 是一个代码检查工具,用来检查你的代码是否符合指定的规范

  • 例如: = 的前后必须有一个空格
  • 例如: 函数名后面必须有空格
  • 例如: await必须用用在async修饰的函数内
  • 例如: ==必须转换成3个等

ESLint的好处

  • 在写代码过程中, 检查你代码是否错误, 给你小黑屋提示

  • ESLint可以约束团队内代码的风格统一

ESLint是法官, Standard是法律

ESLint的规范

规范文档: http://www.verydoc.net/eslint/00003312.html

规范文档2: https://standardjs.com/rules-zhcn.html

规范文档3: http://eslint.cn/docs/rules/

ESLint使用

在代码里随便多写几个回车, ESLint会跳出来刀子嘴, 豆腐心的提示你.

在webpack开发服务器终端 / 浏览器 => 小黑屋

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hri4KEAh-1654588483423)(images/image-20210119223702865.png)]

eslint 是来帮助你的。心态要好,有错,就改。

把第4步规则名字, 复制到上面规范里查找违反了什么规则 / 根据第三步提示修改

小结

  1. 什么是ESLint?

    代码检查工具

  2. 为什么要使用ESLint?

    规范我们写代码的格式, 看着整洁 / 团队内成员风格统一

  3. ESLint在哪里生效?

    webpack开发服务器+ESLint配置检查

5.ESLint在VSCode中使用

目标

  • 每次运行后, 才看到ESLint报错, 很累吧?
  • 边写代码, VSCode就提示ESLint规则?

ESLint插件

  1. 下载这个插件到vscode中

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xN5ZBHMS-1654588483424)(images/image-20210327194440711.png)]

2. 非常非常非常重要

​ 一定要把脚手架工程, 作为vscode根目录, 因为eslint要使用配置文件.eslintrc

  1. 一定要配置插件监测的时机, 修改ESLint插件配置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aIyLm2Nk-1654588483425)(images/image-20210327195329383.png)]

    不用管别的, 把红框的放在{}内即可

    "eslint.run": "onType",
    "editor.codeActionsOnSave": {
    	"source.fixAll.eslint": true
    }
    

更多的规则可以参考这里: https://www.cnblogs.com/jiaoshou/p/12218642.html

ESLint插件修复

  • 随便文件里多敲击几个回车, vscode报错提示, 证明ESLint插件开始工作
  • ctrl + s 报错下是否能自动修复部分问题, 可以, 证明ESLint插件开始工作

如果不工作, 看下面扩展资料

自定义规则

在.eslintrc.js文件中, 可以调整规则(团队内可以自定义自己一套)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZHRjVBrd-1654588483425)(images/image-20210627220435336.png)]

rules是一个对象,以键值对的格式来约定规则:

  • 键名是规则名
  • 值是这条规则的具体说明。最常见的有off,warn,error

小结

  1. ESLint在哪2个地方分别检查代码?

    VSCode里工作和webpack开发服务器也检查

  2. ESLint插件有什么功能?

    VSCode编码时, 提示, 保存还可以自动修复大部分问题

3、 项目基本结构及配置

  1. 清空src/views/App.vue中的默认内容, 留个框

    <template>
      <div>
          黑马头条移动版
      </div>
    </template>
    
  2. 删除默认生成的文件

    • components/HelloWorld.vue
    • views/Home.vue
    • views/About.vue
  3. 修改一下路由配置 - 留下框

    • src/router/index.js
    import Vue from 'vue'
    import VueRouter from 'vue-router'
    
    Vue.use(VueRouter)
    
    const routes = [
      // 删除掉
    ]
    
    const router = new VueRouter({
      routes
    })
    
    export default router
    

新增文件夹

在 src 目录下中补充创建以下目录:

  • /api/index.js : 存储请求函数模块
  • /styles: 样式文件模块
  • /utils: 工具函数模块

项目的完整目录结构

通过mddir自动生成

├── node_modules # 安装的包
├── public	# 静态资源托管目录
│   ├── favicon.ico
│   └── index.html
└── src	# 源码
    ├── api	#请求接口封装模块
    	└── index.js #封装请求方法
    ├── assets	#资源目录
    ├── components	#组件目录
    ├── router	#路由模块
    	└── index.js #路由对象
    ├── store	#Vuex容器模块
    	└── index.js #store对象
    ├── styles #样式目录
    ├── utils  #工具模块目录
    ├── views  #视图组件目录
    ├── App.vue	#根组件
    └── main.js	#入口文件
├── .browserslistrc # 浏览器的约定
├── .editorconfig #对本项目要用到编辑器的约定
├── .eslintrc.js #eslint
├── .gitignore # git的忽略设置
├── babel.config.js	#babel配置文件
├── package-lock.json	#npm相关文件
├── package.json	#npm相关文件
└── README.md	#项目说明文件

主要留意两个新增

  1. api文件夹的作用?
    • 统一管理网络请求方法
  2. utils文件夹的作用?
    • 定义工具方法的地方

有些项目可能会把axios的二次封装文件放在api下,在这里作为独立的工具包引入utilis下,方便统一管理

4、Vant组件库的使用

Vant是一款轻量级的组件库API,相比起适用于管理系统的element-ui,更适合于移动端,在这个项目中学习如何使用
有赞团队推出的Vant组件库

其他移动端组件库

  • vux
  • mint

引入vant组件库

  1. 下载vant组件库

    yarn add vant
    
  2. 根据文档指引, 配置按需引入

    https://vant-contrib.gitee.io/vant/#/zh-CN/quickstart#yin-ru-zu-jian

    如果上面打不开用这个地址试试: https://youzan.github.io/vant/#/zh-CN/home

  3. 下载插件

    yarn add babel-plugin-import -D
    
  4. 在babel.config.js-添加如下配置

    module.exports = {
        // ...省略了其他
        plugins: [
            ['import', {
                libraryName: 'vant',
                libraryDirectory: 'es',
                style: true
            }, 'vant']
        ]
    };
    
  5. 改了src以外的文件, 要重启本地开发服务器

  6. vant组件库这里采用按需引入

    只需要引入某个组件而不是全部, 组件对应样式文件也会自动引入

5、移动端适配

采用postcss和postcss-pxtorem@5.1.1将px转化为rem
利用amfe-flexible> 根据网页宽度, 设置html的font-size,来适应移动端布局

适配方案选型

  1. PC端一般都是1:1用px还原UI设计图, 靠内容撑开高度
  2. 移动端一般都是rem单位进行适配

适配步骤

  1. 下载amfe-flexible

    根据网页宽度, 设置html的font-size

    yarn add amfe-flexible
    
  2. 到main.js引入

    import "amfe-flexible"
    
  3. 下载postcss和postcss-pxtorem@5.1.1

    postcss: 后处理css, 编译翻译css代码

    postcss-pxtorem: 把css代码里所有px计算转换成rem

    yarn add postcss postcss-pxtorem@5.1.1
    
  4. 根目录下创建postcss.config.js文件

    对postcss进行设置

    module.exports = {
      plugins: {
        'postcss-pxtorem': {
          // 能够把所有元素的px单位转成Rem
          // rootValue: 转换px的基准值。
          // 编码时, 一个元素宽是75px,则换成rem之后就是2rem
          rootValue: 37.5,
          propList: ['*']
        }
      }
    }
    
    

    37.5 是如何得来的?

    UI移动端设计图宽度375px, 而flexible.js会/10, 设置html的font-size为37.5

小结

  1. 移动端适配选择哪种?

    rem + flexible.js

  2. flexible.js作用是什么?

    js代码里获取网页宽度 / 10设置html的font-size的值(px单位)

  3. 代码里px如何自动转换rem?

    postcss和postcss-pxtorem插件

6、封装axios函数

  • 基于axios进行二次封装
  • 统一配置, 便于管理
  1. 下载axios

    yarn add axios
    
  2. 创建utils/request.js

    // 基于 axios 封装的请求模块
    import ajax from 'axios'
    // 新建一个新的axios实例
    const axios = ajax.create({
      baseURL: 'http://123.57.109.30:8000' // 基地址
    })
    
    // 导出自定义函数, 参数对象解构赋值
    export default ({ url, method = 'GET', params, data, headers }) => {
      return axios({ 
        url: url,
        method: method,
        params: params,
        data: data,
        headers: headers
      })
        
    // 以后换库, 只需要改这里, 逻辑页面不用动, 保证代码的复用性和独立性(高内聚低耦合)
    //   return $.ajax({
    //     url: url,
    //     type: method,
    //     data: data,
    //     header: headers
    //   })
    }
    
    

小结

  1. 为何要二次封装axios函数?

    为了让我们的代码更加灵活, 统一管理

  2. axios.create作用?

    创建返回一个新的axios函数对象

这里的封装方式并不绝对,不同项目会有不同封装结构,这里采用这种

最后总结下我们在这里干了什么

  1. 理清项目技术栈项目需求,确定了项目的主要功能(登录与注册等),并清除自己要写什么
  2. 配置项目,确定是否引入eslint,配置项目结构
  3. 使用Vant组件库,按需导入
  4. 配置移动端布局
  5. 配置axios,并且暴露出去

接下来首先完成登录与注册功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值