Vue ts 项目实战

首先,没装vue-cli的,可以使用下列任一命令安装这个新的包:

npm install -g @vue/cli
# OR
yarn global add @vue/cli

安装完成,可以通过 vue -V 检查其版本。

1,脚手架创建 vue 项目

可以根据自己的喜好自行选择哦,以下是我创建项目的选项仅供参考

我们使用 vue cli 脚手架新建项目:vue create vue-demo

2, 梳理需求

  • 首页
  • 文章/视频列表,可以滚动
  • 列表里可以搜索
  • 详情页
  • axios 请求 Mock 数据
  • vuex 的使用
  • router + router 的动效

3,构建路由

1, 创建 home、list、detail组件
2,构建路由:

// 修改 App 入口文件
<div id="app"><router-view/> // 路由匹配到的组件将显示在这里
</div>// 完善 router
const List = () => import('../views/List.vue')
export enum RouteNames {List = 'List',
}const routes: Array<RouteConfig> = [{path: '/',name: 'Home',component: Home},{path: '/list',name: RouteNames.List,component: List},{path: '/detail/:id',name: RouteNames.Detail,component: Detail}
]

移动端项目,我这里就使用 rem + 媒体查询了,有更好的方案欢迎大佬加我交流呦

htmlwidth 100%height 100%font-size 10px
// 实际的 px = html.font-size * rem
@media only screen and (max-width: 338px)htmlfont-size 9px !import// iPhone Plus
@media only screen and (max-width: 411px)htmlfont-size 11px !import// Android Pad
@media only screen and (max-width: 450px)htmlfont-size 12px !import
@media only screen and (max-width: 525px)htmlfont-size 14px !import// Nexus 7
@media only screen and (max-width: 600px)htmlfont-size 16px !import// iPad or Browser
@media only screen and (max-width: 768px)htmlfont-size 20px !import

4,构建首页

1,首页顶部 slider,单独创建个组件

@/components下创建Slider组件,然后Home组件引入该组件即可

<template><div class="slider"><ul><li v-for="(item, idx) in tabs" :key="item + idx" class="tab-item" :class="{active: activeTab === idx}"@click="changeActiveTab(idx)">{{item}}</li></ul></div>
</template><script lang="ts">
import { Component, Vue } from 'vue-property-decorator';@Component({components: {},
})
export default class Slider extends Vue {tabs: string[] = ['推荐', '视频', '娱乐', '文章', '发现', '小说', '交友', '我的']activeTab = 0changeActiveTab(v: number) {this.activeTab = v}
}
</script>
<style lang="stylus" scoped>
.slidermargin 2rem 0uldisplay flexalign-items centeroverflow scroll&::-webkit-scrollbarwidth 0.tab-itemflex: 0 0 25%color #353535text-align centerfont-size 1.6remline-height 2.6remtransition all .3s ease-in-out&.activefont-weight boldcolor #3a3a3atransform: scale(1.2)
</style>

2,首页 Banner 模块

@/components下创建Banner组件

home组件:


Slider组件:


Banner组件:

3, 首页推荐列表 (以下代码我不全部贴出来了,项目整体代码地址,有需要的,可自行下载)

这里开始涉及到请求数据,这里用的是 fastmock模拟的接口请求

import axios from 'axios'
import { HomeRecommend } from './types'
export default class Services {static init() {axios.defaults.baseURL = 'https://www.fastmock.site/mock/e200ea8676a01209d5de4aaa1b515353/yuri/'}// 推荐列表static async getHomeRecommend () {this.init()// 请求回来的结果 res.data 是 HomeRecommend[] 类型的return axios.get<HomeRecommend>('recommend').then(res => res.data)}
}
export interface HomeRecommend {text: string;image: string;
}

1,其他涉及到的内容

// 展示两行 超出部分省略号
text-overflow ellipsis
display -webkit-box
-webkit-line-clamp 2
overflow hidden
-webkit-box-orient vertical// 元素在可视区内relative,离开可视区fixed
position: sticky;
top: 0;

Vue ts 项目实战相关推荐

  1. vue 3 项目实战一(绘制登录界面)

    目录 一.概述 二.创建vue项目 三.需求分析 四.构建组件 五.vue组件之间的通信 一.概述 本文记录了项目实现的详细步骤以及原理,十分适合初学vue的萌新练手,也是阶段性学习的一个总结,可能会 ...

  2. vue+ts项目中import图片时报错Cannot find module ‘xxx‘ or its corresponding type declarations

    TS项目中import图片时报错Cannot find module 'xxx' or its corresponding type declarations 在vue+ts项目中使用import的形 ...

  3. vue.js项目实战运用篇之抖音视频APP-第二节:项目基础架构搭建

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  4. Vue + Element-UI —— 项目实战(零)(项目概述)

    Vue + ElementUI 后台管理项目实战 内容 参考链接 一 Vue + Element-UI -- 项目实战(零)(项目概述[附源码]) 二 Vue + Element-UI -- 项目实战 ...

  5. vue.js项目实战运用篇之抖音视频APP-第十一节: 注册登录及验证码功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  6. vue.js项目实战运用篇之抖音视频APP-第八节: 视频播放功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  7. vue.js项目实战运用篇之抖音视频APP-第一节:项目环境搭建

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  8. vue.js项目实战运用篇之抖音视频APP-第四节:顶部导航栏组件功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  9. vue.js项目实战运用篇之抖音视频APP-第十节: 评论列表功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

最新文章

  1. 2021肿瘤学,所有SCI期刊都在这里
  2. 从行驶的车上向上抛球,球真的会回到原地吗?
  3. OSPF路由协议概念及工作原理
  4. 在ASP.NET Core 2.0中创建Web API
  5. mysql 数据缓冲区,MySQL写入缓冲区在数据库中的作用( Change Buffer )
  6. Maven学习总结(17)——深入理解maven灵活的构建
  7. FPGA 芯片被曝严重的 Starbleed 漏洞,影响数据中心IoT工业设备等
  8. openJDK 源码下载
  9. 如何安装 chrome 开发版
  10. (转)2012年度最佳Web前端开发工具和框架
  11. php 动态生成网站地图,DedeCMS网站地图动态生成方法
  12. 如何把软件Origin切换变成中文显示?
  13. 计算机中丢失aclst16,Win10系统运行CAD2006提示计算机中丢失ac1st16.dll怎么办
  14. Java实现 LeetCode 321 拼接最大数
  15. 用jsp实现文件的下载(download.jsp)
  16. HTML5期末大作业:电影在线网站设计——漫威电影(2页) 免费大学生网页设计制作作业作品下载dreamweaver制作静态html网页设计作业作
  17. 有的项目是没有seting ,.project文件的,import时not project found处理办法
  18. 推荐算法的多模型融合
  19. python获取select选中的值_Python3.x:遍历select下拉框获取value值
  20. Linux下安装Mosquitto以及开启Websockets

热门文章

  1. 服务器抓包命令:tcpdump详解
  2. vue中的data为什么是一个函数?起到什么作用?
  3. python在画布上显示动态图片_python – matplotlib – 直接在画布上绘图
  4. 谭浩强c语言不讲位运算呢,谭浩强C语言_CHAR12位运算.DOC
  5. 直播app开发中这几个功能影响后期运营
  6. 蚂蚁金服Java研发暑期实习的经验总结(已收到Offer)
  7. 渲染引擎入门到精通一_导入模型的实现和解决fbxsdk的使用坑
  8. Visio中使用键盘和鼠标组合指令后不响应(卡死)的解决方法
  9. Open-Falcon安装记录
  10. Mysql常用函数集合