Vue实战 - 项目
一、需求分析与评估
页面有哪一些?
- 首页,各种漫画推荐
- 分类页面
- 排行榜页面
- VIP专区页面
- 历史页面
- 收藏页面
- 个人中心页面
- 关于页面
- 反馈页面
- 登陆、注册页面
- 搜索页面
- 搜索详情页
- 漫画详情页面
-
时间点评估
最终时间:一周
- 分析各个页面需要的时间,先做完所有的静态页面。(静态页面一天4-5个,需要三天做完)
- 实现业务逻辑(一个做5个页面的逻辑,也需要3天)
- 与后端联调(一天做五个页面的联调,也需要3天)
二、创建项目
三、与远程仓库关联
四、路由架子给搭建起来
alt + shift + f 可以启用格式化工具 推荐使用Vetur进行格式化
解决格式化问题
package.json中
"lint": "vue-cli-service lint"
执行:
$ npm run lint
五、实现具体页面
1. 使用 postcss-pxtorem 来自动转换代码中的 px 单位
postcss- pxtorem 是 postcss 的一款插件
@vue/cli 脚手架工具创建的 vue 项目,默认就继承了 postcss 在里面, 并且使用了一款 autoprefixer 插件(可以自动去做一些兼容性的问题)
现在使用 postcss 来用上两款插件 autoprefixer postcss-pxtorem
**
项目根目录下创建一个 postcss-config.js 文件
下载一些插件
$ npm install autoprefixer postcss-pxtorem --save -dev
配置 postcss.config.js 中 plugins 选项
module.exports = {
plugins: {
autoprefixer: {
// 不需要设置这个选项,它会自动去使用 .browserslistrc 这个文件的配置项
// browsers: ['Android >= 4.0', 'iOS >= 8'],
},
'postcss-pxtorem': {
rootValue: 37.5,
propList: ['*'],
},
},
};
.browserslistrc 文档API
- 项目最大宽的限制
- 修改base.scss
b. 修改flexible.jshtml, body, #app {
// 这里的px单位,不希望被转换成rem
// 只需要px => PX
max-width: 540PX;
height: 100%;
margin: auto;
}
function setRemUnit () {
//限制最大宽度为540
var clientWidth = Math.min(docEl.clientWidth, 540);
var rem = clientWidth / 10
docEl.style.fontSize = rem + 'px'
}
- 修改base.scss
2. 使用一段 js 代码来给 html 元素设置fontSize值,并且能在屏幕尺寸发生变化的时候动态修改html元素的 fontSize 值。
问题: postcss 是什么?
是一个用 JavaScript 工具和插件转换 CSS 代码的工具 文档API
六、实现轮播图
- 下载swiper到本地
$ sudo cnpm i swiper -D
- 修改第三方的样式的时候,发现修改不了,原因是 scoped引起的。
解决方案:将对第三方的样式修改,重新提供一个scoped的style里面就好
七、组件封装
一、swiper组件
问题1:组件复用的问题
问题的原因: new Swiper 使用的是一个css类选择器,当swiper复用多次时,new swiper操作会将这个元素实例化多次。
解决方案:
- 方案一:new Swiper 不要使用 类选择器,使用id选择器,(不要这样去用)
- 方案二:使用ref特性。(推荐,首先通过ref去标记元素,然后使用$refs去获取内容)
- ref标记的是普通元素,那么后续得到的就是这个元素的DOM对象
- ref标记的是一个子组件,那么后续得到的是这个子组件的实例对象。
- 方案三:Swiper 组件的根元素就是需要的Swiper容器,所以也可以直接去使用$el实例属性。