Compiles and hot-reloads for development
Compiles and minifies for production
See Configuration Reference .
node_modules -- 所有的项目依赖包都放在这个目录下
public -- 公共文件夹
favicon . ico -- 网站的显示图标
index . html -- 入口的html文件
src -- 源文件目录 , 编写的代码基本都在这个目录下
api -- 请求
constants . js -- 定义一个常量数据和后台保持一致 , 这样不请求后台就能展示一级分类 , 不至于白屏
category . js -- 分类相关api请求
home . js -- 首页相关api请求
product . js -- 商品详情相关api请求
user . js -- 用户相关的api请求
assets -- 放置静态文件的目录
images -- 图片
style -- less预处理器脚本
common . less -- 重置样式
minxins . less -- 混入 ( 函数式 ) , vue . config . js已配置 , 使用后每个元素有动画效果
variables . less -- 全局less变量
components -- 全局组件 , 公共组件
app - topnav . vue -- 顶部通栏 ( 固定 )
app - header . vue -- 头部 ( 存在二级分类 )
app - footer . vue -- 底部
app - header - nav . vue -- 头部和滑动吸顶效果用的是同一种方式 , 封装成一个组件
app - header - sticky . vue -- 吸顶头部
app - member - aside . vue -- 个人中心左侧菜单
Message . js -- 消息提示 ( 将XtxMessage组件 , 设置为函数式调用 )
library -- 全局组件插件
xtx - skeleton . vue -- 骨架屏组件 ( 未加载成功时显示 , 类似于Vant中的骨架屏 , 可以对其设置宽高背景等样式 ) ,
xtx - carousel . vue -- 轮播图组件
xtx - more . vue -- 面板组件 ( 右上角存在 :"查看更多" 的标题 , 公用一个组件 , 注意唯一不同的是跳转的页面不同 )
xtx - bread . vue -- 面包屑 ( 函数式组件使用render函数渲染模版 )
xtx - bread - item . vue -- 单个面包屑组件 ( 参考ElementUi )
xtx - infinite - loading . vue -- 无限加载组件 ( 有数据加载时展示 加载中 . . ) ( 没有数据时 展示 : 没有更多了 . . )
xtx - city . vue -- 城市组件 ( 选择地址 )
xtx - message . vue -- 消息提示组件 ( 添加成功 , 登录成功时 , 登录失败 , 警告等提示 ) , 注意 :没有挂载到原型
index . js -- 注册全局插件 ( 图片懒加载 , 批量注册组件 )
hooks -- 全局方法 ( 全局复用方法 )
mock -- 模拟数据
router -- 路由
store -- Vuex
modules -- 模块化
user . js -- 用户模块
cate . js -- 购物车模块
category . js -- 分类模块
index . js -- Vuex
utils -- 工具
request . js -- 封装请求方法
vee - validate - schema . js -- 表单校验规则
vender -- 第三方Js
views -- 路由页面
Layout . vue -- 布局容器
brand -- 品牌
category -- 分类
index . vue -- 一级分类 ( 首页点击一级类目根据id来到此组件 )
sub . vue -- 二级分类 ( 首页点击二级类目图片根据id来到此组件 )
components
goods - item . vue -- 单个商品组件
sub - bread . vue -- 二级分类页面的面包屑组件
sub - filter . vue -- 二级分类筛选区域
sub - sort . vue -- 二级分类排序区域
goods -- 商品
index . vue -- 商品布局页面
components
goods - image . vue -- 商品图片预览区域 ( 左侧大图和右侧五个小图 )
goods - relevant . vue -- 商品推荐
goods - sales . vue -- 商品信息 ( 放大镜图片预览下的信息 , 静态页面 )
goods - name . vue -- 商品逆袭 ( 右侧商品信息 )
goods - sku . vue -- 规格选择组件 ( 颜色 , 尺寸 . . )
home -- 首页
components
home - category . vue -- 首页左侧侧边栏
home - banner . vue -- 装载首页轮播图的容器 ( 轮播图组件数据不是固定的 , 不能固定宽高 , 可能其他地方要使用 , 所以重新定义一个容器 )
home - panel . vue -- 面板组件 ( 负责每个楼层的标题和右侧内容 )
home - skeleton . vue -- 骨架屏组件 ( 用于人气推荐和新鲜好物使用 , 防止数据为加载完成时的白屏效果 )
home - new . vue -- 新鲜好物
home - hot . vue -- 人气推荐
home - brand . vue -- 热门品牌
home - goods . vue -- 单个商品 ( 每个商品 )
home - product . vue -- 承载单个商品的容器
home - special . vue -- 最新专题
商品区域和最新专题没有做骨架屏效果 , 只做了数据懒加载和图片懒加载
member -- 会员中心
pay -- 结算支付
home -- 个人中心首页
order -- 订单管理
search -- 搜索
login -- 登录
components
login - form . vue -- 登录框的表单组件
login - header . vue -- 登录页头部
login - footer . vue -- 登录页底部
App . vue -- 根组件
main . js -- 入口文件
. browserslistrc -- 在不同前端工具之间公用目标浏览器和node版本的配置文件 , 作用是设置兼容性
. editorconfig -- 编辑器使用的文件 , 使用习惯等
. eslintignore -- eslist校验忽略文件
. eslintrc . js -- Eslint的配置文件
jsconfig . json -- @代表src , 提示路径
. gitignore -- 用来配置那些文件不归git管理
README . md -- 项目的说明文件 , 使用markdown语法进行编写
yarn . lock -- 使用yarn后自动生成的文件 , 由Yarn管理 , 安装yarn包时的重要信息存储到yarn . lock文件中
vue . config . js -- webpack
xtx - more . vue 查看更多和负责跳转
home - panel . vue 容器 标题 内容
组成一个楼层面板
< HomePanel title = "标题" subTitle = "副标题" >
// 右侧插槽
< template #right>
<!-- 查看更多 -->
< XtxMore path = "/" > </ XtxMore >
</ template >
// 插槽
< div > 数据内容区域 < / d i v >
</HomePanel >
一个元素显示或隐藏时 , 才可以触发动画
使用tranistion组件实现动画 , 一个元素或者组件的 ( 显示 / 隐藏 , 创建 / 移除 )
进入
进入前 v - enter ( v - enter - from - Vue3 )
进入中 v - enter - active
进入后 v - enter - to
离开
离开前 v - leave ( v - leave - from - Vue3 )
离开中 v - leave - active
离开后 v - leave - to
< transition >
< div class = "box" v-if = "show" > </ div >
< / t r a n s i t i o n >
. v - enter - from {
opacity: 0 ;
}
. v - enter - active {
transition : all 2 s ;
}
. v - enter - to {
opacity: 1 ;
}
// 可以给动画赋予名字用来生成多个
< transition name = "fade" >
< div class = "box" v-if = "show" > </ div >
</ transition >
. fade - enter - from {
opacity: 0 ;
}
. fade - enter - active {
transition : all 2 s ;
}
. fade - enter - to {
opacity: 1 ;
}
XtxBread 是承载面包屑的容器
XtxBreadItem 是单个面包屑
参考elementui的做法
可以多次复用 , 也可以运用多级分类 , 而且第一个分类的值是首页时固定的
面包屑的动画效果 , 如果加上mode属性 , 会使数据丢失 , 还未解决
useWindowScroll < 吸顶效果 没有使用 >
useVModel < 父子组件双向绑定 >
useMouseInElement < 用于放大镜效果 >
useIntersectionObserver < 监听元素是否进入可视区 >
onClickOutside < 监听元素外部的点击 , 城市选择框点击其他位置关闭 >
useIntervalFn < 用于发送验证码的60秒倒计时 >
如果想在组合式API中使用实例
注意:此时已挂载到原型的基础上 app . config . globalProperties . $messgae = Message
const { proxy } = getCurrentInstance ( )
proxy . $message ( )
-- -- --
proxy = this 相同的意思