启发于方应杭大佬的一个会动的简历以及黄轶大佬的 Github .
也应运于我此时最迫切的求职需求而生.
预览地址: 点击这里
将 src/doc 路径下文件 resume.md 内容替换为个人简历内容(.md)即可
进入 src/components/resume 文件夹路径下修改 style.css/styleMobile.css 即可
ps: css文件中样式名要与元素匹配才能生效!!!
-
代码输入展示
通过
raw-loader
将 css/md 文件转换为字符串,然后利用 v-html 绑定变量,递归调用展示函数(setTimeout
已改为requestAnimationFrame
),更新变量对字符串的累加实现代码逐渐输入动画效果. -
代码输入和效果同步生效
通过 <style> 标签同步将 css 代码插入页面
<div class="styleEditor" ref="container"> <div class="code" v-html="codeInStyleTag"></div> <pre class="" v-html="highlightCode"></pre> </div> computed: { codeInStyleTag: function() { return `<style>${this.code}</style>`; } }
-
代码高亮
通过 Prismjs 将字符串 html 转为被包裹标签的 html,然后添加 <style>
/* 代码高亮 */ .token.selector { color: rgb(133,153,0); } .token.property { color: rgb(187,137,0); } .token.punctuation { color: yellow; } .token.function { color: rgb(42,161,152); }
-
.markdown 格式转换为 html
通过 marked 将 .md 格式转换为 html 输出
-
暂停和跳过的实现
在 Resume.vue 中声明两个变量
isPaused
和isSkipped
暂停: 递归调用展示函数中写一个
do while
, 当isPaused
为true
时,一直 delay// 暂停 do { await Promise.delay(interval); } while (this.isPaused && !this.isSkipped)
跳过: 递归调用展示函数中当
isSkipped
为true
时,reject
出去一个new Error('SKIP IT')
,在总流程控制函数startAnimation
中try catch
到该错误则执行skipAnimation
函数.skipAnimation
函数一次性将所有字符串更新变量,流程函数调用// 开始简历展示流程 startAnimation: async function() { try { await this.progressivelyShowStyle(0); ... } catch (e) { if (e.message === 'SKIP IT') { this.skipAnimation(); } } }, // 展示函数 progressivelyShowStyle(n) { return new Promise((resolve, reject) => { ... // 跳过动画 if (this.isSkipped) { return reject(new Error('SKIP IT')); } ... }); }
依赖安装 Project setup
yarn install
本地预览(编译/热更新) Compiles and hot-reloads for development
yarn run serve
项目打包生产 Compiles and minifies for production
yarn run build
运行测试用例 Run your tests
yarn run test
运行代码检查 Lints and fixes files
yarn run lint
运行单元测试 Run your unit tests
yarn run test:unit
自定义配置 Customize configuration 查看官方文档[Configuration Reference].