用 Vue 撸一份线上简历有哪些坑
昨天花了一天时间,用 Vue 给自己撸了一份线上简历,并借助 Github Pages 实现了在线预览的效果。
- 项目地址:bighuang624/FE-resume
- 在线预览地址:http://kyonhuang.top/FE-resume/
目前实现的是最简单的效果,可以说只用了 Vue,不涉及全家桶里其他产品。从 UI、文字、性能、测试等各种角度都有改进的空间。这个小项目应该是会长期维护的。今天先总结一下,做到目前为止遇到的坑。
在 Vue 中使用 sass
这个步骤之前已经总结过,现在再在博客上记录一次,方便之后查找。
在 Webpack 中,所有的预处理器需要匹配相应的 loader。因此要使用 sass 或 scss,首先下载依赖:
1 | npm install sass-loader node-sass --save-dev |
然后在单文件组件中的<style>
标签中加上lang="sass"
。vue-loader
会根据lang
属性推断出要使用的 loaders,并将内容交给相应的 loaders 处理:
1 | <style lang="sass"> |
与名称相反,sass-loader 默认解析 scss 语法,因此如果想使用 sass 语法,还需要在 build/vue-loader.conf.js 配置 vue-loader 的选项:
这样的修改不会影响 scss 的使用,记得修改<style>
标签中为lang="scss"
即可。
项目资源无法加载
直接npm run build
得到的项目,默认引用资源文件的路径为/static/js/app.js
。所以程序若不在根目录下,就会出现资源文件引用错误的情况。
最简单的解决方案就是改动 webpack 的配置文件。将/config
文件夹中的 index.js 文件中的assetsPublicPath: '/'
改为assetsPublicPath: './'
即可,截图如下:
如果你还使用了 vue-router,你需要在 router 的配置中加上一行base: '/[项目所在文件夹的名字]/'
,如下所示:
注意:如果启用了 vue-router 的 history 模式,你需要跟着 vue-router 官方文档的后端配置例子 对服务器进行一定的配置。
这是因为在 history 模式下,router 只是通过 JS 操作 window.history 来改变浏览器地址栏里的路径,并没有发起 http 请求。但是直接在地址栏中输入形如http://www.example.com/example/item/1
这样的地址时,就一定先要对服务器发起 http 请求。此目标在服务器上不存在,于是会返回 404。修改服务器的配置,以将所有的请求全部转发到index.html
上。
当然,这意味着单纯使用 Github Pages 的在线预览功能没办法进行这样的配置。你也可以关注知乎上的这个问题 怎样为Github pages Hack使用了vue-router history模式的vue应用? - 知乎 来看别人的解决方法。
iconfont 无法加载
字体图标无法正确加载。参考 https://github.com/vuejs-templates/webpack/issues/166 ,得到的解决方法是修改 build/utils.js 文件,增加一行publicPath: '../../'
,如截图所示:
保存后,npm run build
打包得到的项目中 iconfont 就可以正常显示了。
实现 Github Pages 在线预览
参考 Configuring a publishing source for GitHub Pages - User Documentation,实现 Github Pages 在线预览功能有好几种方法,可以设置从master
分支、gh-pages
分支或者master
分支下的/docs
文件夹中读取。我就选择了最简单的一种方法,把npm run build
打包下来的/dist
文件夹改名为/docs
。
之后,在 Github 项目主页的 Settings 下的 Github pages 下进行设置 Source 为master branch /docs folder
即可。
如果你之前使用过 Github Pages 并绑定了一个域名,那么这个项目的预览地址会像http://kyonhuang.top/resume/
这样在这个域名下,看起来很爽。
参考资料
结语
撸这份简历,是一个总结,也是一个激励。
真正撸完简历,才发现自己在技术层面上的项目经历少的可怜,而技术也不敢说有什么掌握。以后看到这份简历,会让我非常想写一些拿得出手的开源项目,然后对项目经历进行修改。
读完《你不知道的JavaScript(中卷)》,就给 JS 的技能条涨 5 个百分点;用 Node 开发一个支持登录注册的后台,就给 Node 的技能条涨 5 个百分点;或者再点亮一个新的技能。
随着我的不断学习,希望这份简历越来越吸引人。