前端周卡——第一周
vue 中使用 rem 布局
背景:移动端的设备会越来越多,而且会有不同的分辨率。那如何在不同的手机中显示相同的效果呢?也就是我们常说的移动端适配是怎么做到的呢?
常见的方法有很多,比如百分比、flex 布局等。但现在更加常见的是采用 rem 布局的方式
如何在 Vue 项目中使用 rem 呢?
这里记录一下 使用 lib-flexible 和 px2rem-loader 自动转换
- 安装插件
npm install lib-flexible --save
npm install px2rem-loader --save-dev
- main.js 中引入
import 'amfe-flexible/index.js'
- 在 webpack 的配置中配置 px2rem-loader,我这里是采用 Vue-cli 搭建的,在
build/utils.js
文件中,加入如下配置。
const px2remLoader = {
loader: 'px2rem-loader',
options: {
// 设计稿是 320 px
remUnit: 32 // 默认换算为1rem为32px,可根据你的原型图修改
}
}
另外需要在 generateLoaders 函数中加入我们的 px2remLoader 配置,主要的作用是告诉 webpack,处理 CSS 的使用要经过 px2remLoader
const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]
- 在 Vue 组件中使用 这里我用了 Sass,具体的使用如下。注意,我这里设计稿是 320px,,所以
rem 计算出来实际的 rem 值。
<style scoped lang="scss">
$rem: 320/10rem;
.header {
width: 100%;
height: 40/$rem;
display: flex;
align-items: center;
background: #8560A9;
}
参考:vue 中使用 rem 布局的两种方法[1]
ajax 请求报 415 错误
没有配置 accept 请求头
xhr.setRequestHeader('Accept', 'application/json')
xhr.setRequestHeader('Content-Type', 'application/json')
参考:https://stackoverflow.com/questions/11492325/post-json-fails-with-415-unsupported-media-type-spring-3-mvc
当作为 background-image 时修改 SVG 填充颜色
背景:我们知道,假如我们使用 svg 在 HTML 中的时候,我们可以通过 CSS 修改它的颜色
polygon.mystar {
fill: blue;
}
circle.mycircle {
fill: green;
}
但是假如是通过 background-image 引入的 SVG 呢?
解决方法:
CSS masks
这个是存在浏览器的兼容性问题的,基本使用如下所示:
.icon {
background-color: red;
-webkit-mask-image: url(icon.svg);
mask-image: url(icon.svg);
}
dataLoader 源码的阅读【初步】
1.load 方法通过 getCurrentBatch 返回当前的 Batch,这个方法中又通过 _batchScheduleFn 方法即 getValidBatchScheduleFn 方法处理当前的,如果没有,通过 enqueuePostPromiseJob 方法,判断是使用 process.nextTick 还是 setTimeout 还是 setImmediate,去处理入队列的任务
2.loadMany 方法就是多个 load 方法,只是用了 Promise.all 方法处理
思考:这里关于事件队列 Tick 的思考,我个人理解,举个例子,setTimeout 中回调中使用 setTimeout,那么第一个 setTimeout 执行的时候是第一个 Tick,执行完再将第二个 setTimeout 放入第二个 Tick 中。
参考资料:
https://github.com/graphql/dataloader/blob/master/src/index.js
https://www.jianshu.com/p/fbd1257116b0
https://www.thinbug.com/q/42073880
https://dataloader.js.cool/#/?id=loadkey
http://www.ecma-international.org/ecma-262/6.0/#sec-jobs-and-job-queues
Vue 路由拦截跳转登录页
背景:实现跳转到各个页面,判断是否登录,假如没有登录,则跳转到登录页
router.beforeEach((to, from, next) => {
if (to.path === '/login') {
next()
} else {
let token = getCookie('X-BLACKCAT-TOKEN')
if (!token) {
next('/login')
} else {
next()
}
}
})
参考资料
[1]
vue 中使用 rem 布局的两种方法: https://blog.csdn.net/Robin_star_/article/details/86638138
[2]
「前端进阶」高性能渲染十万条数据(虚拟列表): https://juejin.im/post/5db684ddf265da4d495c40e5
[3]
模块的基础操作,导出和导入: https://juejin.im/post/5b2b2d8de51d4558ba1a64e0
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- flink实战教程-使用set实时计算当天网站uv
- 贪心-HDU3348 coins(钱币问题)
- 归并排序详解 -HDU4911 Inversion(逆序对)
- 数据结构与算法——稀疏数组
- Maven安装配置详细教程
- 数据结构与算法——冒泡排序
- MyBatis Generator逆向工程-你还在手写mapper吗?
- JSR303后端校验详解
- SSM整合开发实战 SSM-MALL
- SQL Server获取元数据所有方法和示例
- 数据结构与算法——选择排序
- SmtpJS发送邮件教程
- 数据结构与算法——队列
- 前后端数据交互-json 你还不会传集合吗?
- 动态规划-背包问题(01背包、完全背包、多重背包)