# letao
**Repository Path**: allenxd/letao
## Basic Information
- **Project Name**: letao
- **Description**: 乐淘网页项目
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-07
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 总结
1. 了解项目的架构和目录结构
2. 搭建项目的环境
3. 启动项目
4. 理解项目依赖包和引包顺序
5. 主页的搭建和轮播图组件的使用
6. 主页商品的布局
7. 主页区域滚动插件的使用
8. 使用git管理源代码和上传到github
## 常见网页布局方式和应用场景
1. 固定宽高: 在PC端jd 不考虑屏幕适配的页面
2. 浮动+定位:
浮动: 传统没有伸缩布局之前只能使用浮动实现块级元素一行显示
定位: 需要定到别的元素上 或者整屏上
3. 百分比布局(流式布局)+浮动: 需要考虑屏幕适配的页面
1. 早期没伸缩布局 只能使用百分比实现 宽度(只能是宽度)自适应
4. 伸缩布局:宽度自适应 解决以上 块级元素不能一行显示 和 无法自适应屏幕
1. 伸缩布局 === 浮动 + 百分比
2. 伸缩布局只能实现宽度自适应
5. rem布局:宽高内容都自适应 解决以上所有问题
1. rem = 伸缩布局宽度自适应 + 高度也自适应
6. 框架的栅格布局: 响应式布局 同时适配PC 移动端需要使用栅格布局
## 电商全端项目
1. 是一个综合移动端+PC端+node.js后台 (前端(PC+移动)+后端(node.js)) 重点是前端
2. 学会移动web切图写页面 + 移动端基本交互 点击滑动之类的交互 + ajax请求数据 渲染模板 + PC切图 + PC 端的交互 + 请求数据渲染模板
## 搭建电商全端项目
1. 安装环境
1. 安装node.js (用来开启nodejs服务器 提供数据API数据)
1. 打开移动web第三天 1-教学资料 》 nodejs 找到对应位数的安装包
2. 双击打开一路下一步安装 不要修改安装目录默认在C盘
3. 验证是否安装成功 打开cmd 左下角开始菜单右键 》 运行 或者输入win+r 打开运行窗口输入cmd 回车
4. 输入node -v 出现版本 v10.12.0 表示安装成功
2. 安装phpstudy (开启mysql数据库服务器) 没有安装的重新安装一下
2. 启动项目
1. 下载项目
2. 导入数据库
1. 找到数据sql文件
2. 打开phpstudy 启动数据库
3. 导入数据库
3. 开启数据库服务器 打开phpstudy 变绿
4. 开启nodeAPi后台服务器
1. 进入letao-master文件夹的根目录
2. 在空白处 按住shift+鼠标右键 在此处打开命令窗口
3. 访问项目
1. 使用链接的方式访问
1. 乐淘完整版移动端 http://localhost:3000/mobile/index.html
2. 乐淘完整版PC端 http://localhost:3000/manage/login.html
3. 乐淘自写版移动端 http://localhost:3000/m/index.html
4. 乐淘自写版PC端 http://localhost:3000/admin/login.html
2. 使用书签的方式访问页面
3. 前端用户名密码 itcast 111111
4. PC后台管理系统 用户名 root 123456
## 项目架构和项目的文件作用
1. bin 项目启动目录
2. docs 项目文档目录
3. models 数据模型文件 增删改查数据库
4. node_modules nodejs依赖包文件 类似前端lib
5. public 前端项目根目录 (页面文件)
6. routes nodejs APi路由文件 APiurl配置
7. app.js项目根文件
8. readme.md说明文档
## 前端的项目文件夹public
1. admin 自己写的PC后台管理系统文件夹
2. m 自己写的移动端文件夹
3. manage 完整版的后台管理系统文件夹
4. mobile 完整版的移动端文件夹
## 如何写前端代码
1. 把m里面的除了lib和images都删掉
2. 把admin里面除了lib和images都删掉
3. 把项目在编辑器打开
在public 里面的 m文件夹里面 创建一个移动端的主页index.html 然后写点代码
在public 里面的 admin文件夹里面 创建一个PC端的登录页面login.html 写点代码
4. 打开书签的自写移动端 和 自己写的PC后台管理系统 看看能不能看到自己写的代码
## 回顾项目启动
1. 开启数据流库phpstudy 变绿
2. 进入letao-master文件夹 在根目录打开黑窗 黑窗只能开启一个 执行npm start
3. 通过书签的方式访问页面(一定要使用书签的链接的方式访问页面)
## 项目的依赖包
1. MUI : 在移动端写页面的UI框架
2. zepto: 是一个移动端的JS库 操作DOM和发送ajax请求
3. artTemplate : 模板引擎的JS文件 用来渲染模板生成模板
4. fontawesome : 字体图标框架 实现页面的字体图标显示
5. less : 编译less
6. bootstrap: 在PC端用来写页面UI框架
7. jquery:在PC端写JSDOM操作和发送ajax请求
在移动端使用 MUI+zepto+fontawesome+arttemplate+less
在PC端使用 bootstrap+jquery+arttemplate+fontawesome+less
## 项目的搭建
1. 添加视口和引包
匡威三星标1970s converse复刻 142334c 144757c三星标黑色高帮
.product-name{ /* 强制让文本换行或者不换行 normal自动 */ white-space: normal; color:#666; } 5. 给商品尺码和数量放到一起设置 两端对齐 .product-params{ display:flex; justify-content: space-between; } ## 6. 实现购物车的查询渲染 1. 发送ajax请求购物车商品数据 2. 渲染页面 注意数据如果没有的时候返回是一个空数组 不是对象 模板用 了会报错判断如果数组转成对象 里面data:[] // 因为data数据后台返回有点问题 当没有数据 后台直接返回空数组 而不是对象 // 如果是空数组传入到模板使用里面的data会报错 if (data instanceof Array) { // 判断如果是一个空数组 赋值给一个对象 里面有data数组值为空 data = { data: [] } } ## 7. 实现购物车的下来刷新和上拉加载更多 1. 添加下拉上拉结构 2. 初始化下拉刷新和上拉加载 3. 在下拉刷新的函数请求最新的数据 4. 结束下拉刷新的效果(不结束会一直转) 5. 定义一个page = 1; 6. 上拉加载的回调函数让page++ 7. 请求page++了之后的更多的数据 8. 追加append到购物车的列表 9. 结束上拉加载效果 10. 判断如果没有数据的时候结束并且提示没有数据了 调用结束上拉加载效果传递一个true 11. 下拉结束后重置上拉加载的效果 12. 把page也要重置为1 ## 1. 商品删除 1. 给删除按钮添加事件 2. 弹出确认框问用户是否要删除 3. 如果e.index == 0 点击确定 4. 获取当前要删除id去删除(绑定在按钮 这里面确认有回调函数会改变this指向把按钮提前保存在that) 5. 调用APi删除商品 删除调用查询刷新页面 6. 如果e.index == 1点击取消 关闭滑动效果 // 1. 获取当前要滑动回去的li 只能使用dom元素 不能是zpeto对象 var li = that.parentNode.parentNode; // 2. 调用官方的滑动关闭函数 mui.swipeoutClose(li); ## 2. 编辑购物车的商品 1. 给编辑按钮添加点击事件 2. 弹出框框让用户编辑 3. 框框里面需要放当前商品尺码 数量标签选择 4. 提前准备商品尺码 和 数量标签 5. 使用模板 需要商品数据 把商品数据绑定在编辑按钮上 data-product="{{value}} 把整个商品对象绑定在属性里面 6. 通过JS获取整个商品对象 把尺码变成数组 7. 调用模板生成html 8. 把html字符串的回车换行去掉 html = html.replace(/[\r\n]/g, ''); 9. 把HTML放到确认框里面 10. 对按钮和数字框初始化放到确认框的后面 注意不是里面 里面回调函数点击确定和取消的 11. 点击确定获取最新尺码数量 调用API更新购物车商品数据 如果成功重新查询渲染页面 12. 如果点击取消吧li滑动回去 ## 3. 真机调试 1. 让手机(真实手机) 看到我们写的移动web页面 2. 上网原理 1. 上网不是虚拟的 是有真实的物理传输 把服务器的文件 通过网络下载到你的本机设备 实现上网 2. 手机上网 通过手机网络 去服务器请求文件 浏览器接收服务器请求的文件 保存手机上 通过浏览器把文件(html 图片)显示出来 3. 局域网 广域网 1. 局域网 内网 在同一个网关上就是一个局域 2. 广域网 外网 连上外网(全球 全国性) 4. 网站想让外网访问 1. 你的网站得部署到外网的服务器 (阿里云 新浪云等等 电脑) 2. 这种电脑 和 广域网在一个网关 5. 网站想让内网范围 1. 你的网站 得部署到 内容的服务器(电脑) 2. 你的内网电脑 和 内网在一个网关上 3. 真机调试的原理 就是利用内网 让手机和电脑通过内网在一个网关上 手机通过网关请求到服务器上的文件 4. 真机调试步骤 1. 让手机和电脑在一个局域网 1. 手机电脑 都连接同一个wifi (网关是一样 网关在路由创建) 2. 手机开热点 电脑连接手机wifi (网关也是一样 在手机上创建的) 1. 打开设置 2. 打开个人热点 3. 移动网络 》 个人热点 4. 开启热点 有一个wifi 会有密码() 5. 电脑连接这个wifi 6. 教室的网线有点坑 插了网线 连接了教室的网络 不能连接wifi 测试电脑能不能上网(保证连接了能够上网 把网线拔了) 3. 电脑开热点 手机连接电脑wifi (网关在电脑上创建) 1. 打开电脑设置 网络设置 移动热点 打开 2. 手机去找到wifi连接即可 2. 使用电脑开启网页服务器 目前npm start就是服务器 localost:3000就是服务器 默认这个是本机服务器 把他改成ip地址服务器 http://localhost:3000/m/index.html http://192.168.137.1:3000/m/index.html 3. 使用手机打开这个页面 1. 安装二维码插件手机扫描打开 2. 手机对着网址输入打开 http://192.168.137.1:3000/m/index.html 3. 使用微信QQ把网址发给手机 4. 注意手机扫描打不开 防火墙没关 ## 移动端点透问题 1. 点透: 点击按钮透过按钮 点击到了a标签 2. 点击了是立即购买按钮 但是按钮添加 tap事件(不延迟的点击事件) 我们在tap事件里面执行跳转到详情页面的操作(不是一下子跳过去是需要时间) 还没有跳过的去的时候 又触发了a的默认跳转 a默认跳到# a里面又要跳转到当前页面 因为a在按钮的后面执行的跳转 所以a覆盖了按钮的跳转 3. 解决方法 就是阻止a默认行为 4. 把a删掉 现在a也是没有用的 已经通过按钮能跳转了不需要使用a 5. 使用fastclick包 除了可以解决延迟 还可以解决点透(fastclick包里面 加click事件 不会触发父元素a事件 里面做了阻止a默认跳转的操作) 6. 如何防止点透 1. 原因的原因是点击事件的延迟造成 2. 不使用click之类的事件 不使用a(click)跳转 全部 tap代替 3. 使用fastclick包 4. 全部用click不要tap ## 找网站 扒网站 ## 移动端常见的兼容性问题 https://www.jianshu.com/p/cb2d8ca8cff2 https://blog.csdn.net/diqi77/article/details/54692920/ 1. 二倍图问题 2. 屏幕缩放问题 3. 点击事件延迟问题 4. input内边框问题 5. 移动端点击事件点透问题 6. MUI的一些奇怪的问题 等等