项目准备
需要实现的主要功能如下:
资讯列表、标签页切换,文章举报,频道管理、文章详情、阅读记忆,关注功能、点赞功能、评论功能、回复评论、搜索功能、登录功能、个人中心、编辑资料、小智同学 ...
创建项目(使用vuecli创建新的项目)
vue create hmtt-tj
( 项目名称:hmtt-tj ) 这里用到的是vue2.0版本
让项目先跑起来
cd到当前创建的目录
npm run serve
打开本机地址 需要删除一些多余的配置项
准备一个空壳子 将src/App.vue 删除多与代码到如图 注意:这个地方不要删除router-view标签
在src/router/index.js文件中删除冗余代码 如图
删除默认生成的文件:
components/HelloWorld.vueviews/Home.vueviews/About.vue
此时若是正常运行的话会看到项目中一片空白
接下来去码云(gitee)创建一个空仓库 仓库名和项目同名
将本地代码推送到远端仓库
git add .
2.
git commit -m '创建了项目'
//推送日志
3.
git remote add origin git@gitee.com:MeQgJ/hmtt-tj.git
这里填入ssh仓库地址
4.
git push -u origin master
如果后续有代码变化,需要提交到远程仓库,则需要两个步骤:
- 正常本地提交 git add, git commit
- 推到远程仓库 git push
随后我们在src目录中创建以下目录:
- /api : 存储请求函数模块
- /styles:样式文件模块
- /utils:工具函数模块
在接下来的项目中我们需要用到vant框架:所以需要安装并引入
npm i vant
对应安装的是vue2.0版本 我们先采用完整引入,之后再调整 ,在src/main.js 中,以vue插件的方式完整引入vant组件
import Vant from 'vant' // 组件库
import 'vant/lib/index.css' // 样式
Vue.use(Vant) // 引入
接下来测试一下vant是否引入成功 在App.vue中写入
<van-button type="default">默认按钮</van-button> <van-button type="primary">主要按钮</van-button> <van-button type="info">信息按钮</van-button> <van-button type="warning">警告按钮</van-button> <van-button type="danger">危险按钮</van-button>
若成功的话会在网页中显示
到这准备工作已经完成大半了,我们还需要完成两个工作, 即:实现rem适配 和 对后端接口地址的封装
首先,我们先完成rem适配, 我们需要用到两个插件postcss-pxtorem@5.1.1 和 amfe-flexible
postcss-pxtorem@5.1.1 可以把px单位自动转成rem单位, amfe-flexible 会根据设置屏幕的宽度去调整rem的值
接下来安装
npm i postcss-pxtorem@5.1.1 -D
npm i amfe-flexible
在根目录下创建postcss.config.js文件,内容如下:(一定是根目录且名字也不能写错)
module.exports = {
plugins: {
'postcss-pxtorem': {
// 能够把所有元素的px单位转成Rem
// rootValue: 转换px的基准值。
// 例如一个元素宽是75px,则换成rem之后就是2rem。
rootValue: 37.5,
propList: ['*']
}
}
}
在入口文件src/main.js
导入 amfe-flexible
注意:修改配置文件之后一定要重启项目 之后在调试工具中将网页调整成为移动端,在放大缩小页面时按钮内容能随之放大缩小表示已经成功了!
最后一步:封装接口地址的根目录(我们用到了axios发送请求)
安装:
npm i axios
创建 src/utils/request.js
, 开始在这个文件中写如下代码(需要用到两个基地址)
先写好如下框架
import axios from 'axios'
// 创建axios的实例,配置
// 1. 基地址
const request = axios.create({
baseURL: 'http://toutiao-app.itheima.net'
})
export const request2 = axios.create({
baseURL: 'http://toutiao-app.itheima2.net2'
})
// 默认导出
export default request
在App.vue中写入如下代码,来测试一下我们的请求是否能成功发送
<template>
<div id="app">
黑马头条
<van-button type="primary" @click="hTestAxios2">测试axios的效果-async</van-button>
<router-view/>
</div>
</template>
<script>
// import { request2 } from '@/utils/request.js'
import request from '@/utils/request.js'
export default {
methods: {
async hTestAxios2 () {
const res = await request({
method: 'GET',
url: 'v1_0/user/channels'
})
console.log(res)
}
}
</script>
可以在控制台中看到类似如下:
说明已经成功了! 为了方便之后组件代码的简洁,结构分明 我们对axios进行二次封装
创建 api/channel.js 并写入
import request from '@/utils/request.js'
export const getChannels = () => {
// 如果函数没有写return,
// 它有一个默认的return值,就是undefined
// return request({
return request({
url: 'v1_0/user/channels', // 接口地址
method: 'GET'
})
}
然后在具体的页面中加载调用,两个步骤:
// 1. 导入上面封装api
import { getChannels } from '@/api/channel.js'
async hTestAxios2 () {
try {
// 2. 调用
const res = await getChannels()
console.log(res)
} catch (err) {
console.log(err)
}
}
好了,第一天项目准备工作就这些!!!