vue简单个人博客的制作(使用 Vue 和 Vue-router 创建一个多布局(layout)系统)

2024-04-14 17:50:08 8

vue简单个人博客的制作(使用 Vue 和 Vue-router 创建一个多布局(layout)系统)

本文目录

使用 Vue 和 Vue-router 创建一个多布局(layout)系统

***隐藏网址*** 假设您创建了一个博客。您希望主页没有侧栏,而所有其他页面都有侧栏。 使用 vue-cli 3 创建一个项目: vue create blog 创建 layouts 文件夹这 src。 创建有边栏的 Default 模版。 创建没有边栏的 NOSidebar 模版: 然后在 router.js 里创建页面: import Vue from ’vue’ import VueRouter from ’vue-router’ Vue.use(VueRouter) import Home from ’./pages/Home’ import About from ’./pages/About’ const routes = const router = new VueRouter({     mode: ’history’,     routes }) export default router 我为Home & About页面添加了一个meta键 在Vue-router中。 现在我们在 main.js 导入 layout

每一个程序员都应该有写博客:使用VuePress搭建一个博客系统

你好啊,我是大阳。一个撸码近十年的程序员。

不知道你是否有这样的职场困惑:职场三年没有任何进步;学了很多,毛用没有;学了,过了一年全都忘记了,更不知道怎么把已经学到的知识迁移到其他领域或者行业。

也就是搬砖多年,一直都没有在自己的专业上建立完备的知识体系

时间和知识的碎片化、工作996、职场pua都在阻止我们系统化地学习、更别说沉淀为知识体系啦。

为了能够对抗这些外部因素,我建议你写博客。强制输出倒逼输入、随时记录学习历程夯实脚步、不断实践形成技能树。

而作为一个程序员,形成个人知识体系,对抗危机和忧虑,可以使用下面的方法:

下面我们来使用VuePress来搭建一个博客系统。我这里使用的是vuepress社区主题vuepress-theme-hope(一款集成了众多插件的vuepress主题)。

事实上,一个 VuePress 网站是一个由 Vue、Vue Router和 webpack驱动的单页应用。如果你以前使用过 Vue 的话,当你在开发一个自定义主题的时候,你会感受到非常熟悉的开发体验,你甚至可以使用 Vue DevTools 去调试你的自定义主题。

在构建时,我们会为应用创建一个服务端渲染(SSR)的版本,然后通过虚拟访问每一条路径来渲染对应的HTML。这种做法的灵感来源于Nuxt的 nuxt generate 命令,以及其他的一些项目,比如 Gatsby。

根据提示进行配置,可以启动自带demo

主配置文件config.ts

主题配置:

palette.scss

vue骚操作之this.$options(个人笔记)

过滤器被用于一些常见的文本格式化,被添加在表达式的尾部,由“管道”符号指示。

试想一个场景,不仅模板内用到这个函数,在 method 里也需要同样功能的函数。但过滤器无法通过 this 直接引用,难道要在 methods 再定义一个同样的函数吗?

要知道,选项配置都会被存储在实例的 $options 中,所以只需要获取 this.$options.filters 就可以拿到实例中的过滤器。豁然开朗.jpg

除了能获取到实例的过滤器外,还能获取到全局的过滤器,因为 this.$options.filters 会顺着 proto 向上查找,全局过滤器就存在原型中。

在vue单文件组件里有时需要重置data中的数据,比如表单填写一半,用户想重新填写。

也可以通过给组件 $data 对象赋值来重置来重置整个 $data 。

Vue 组件学习总结

组件库其实就是一堆组件组成的一个项目,一般项目里会有组件和演示项目。当项目调试时 webpack 打包演示项目的入口文件来进行演示和调试,在发布组件库时 webpack 打包组件库的入口文件。将打包完的组件发布到 npm。

我觉得,组件库的左右只能是一个 —— 提高生产效率。所以,在当前有不少优秀的组件库的情况下,我们能做的应该是帮助那些组件库变得更好。同时基于自己的业务写一些适用于自身业务的前度组件。

关于组件的发布流程, 手把手教你封装 Vue 组件,并使用 npm 发布 这篇文章对组件库从搭建到发布进行了详细的描述,亲测可用。

其实是一些组件库中实现特殊效果所用到的思路。在下面整理了一下用法和应用场景:

DOM 操作

CSS

Vue 功能应用

其他

根据这段时间学习组件库的经验,自己动手写了一个组件库项目 otter-ui 。本项目仅用于交流学习。可以参考着自己写一套组件库玩玩,还是挺酷的!

截止到这篇文章发布,我的 《Vue实验室》 已经有30篇博客了~ 算是对 Vue 相关知识大概学习了一遍了,通过输出的方式学习技术知识让我对这些技术知识学习的非常扎实。 接下来,我会继续维护之前的文章,让那些文章更简单易懂。并且不定期发布一些我觉得有意思的值得深入学习的 Vue 相关知识点。

VUE在前端里面主要是做什么的呢

 Vue是一个js框架。什么叫框架?个人理解是对原生JS ,html,css的功能进行封装之后形成的一个语言。

比如,你需要盖一座房子,你用原生js,html,css写代码相当于你用手一块砖一块砖地垒。而使用Vue,Vue已经给你了一面墙,一根房梁,一扇门,你需要做的是把门墙梁拼成房子。它帮助你提高开发效率。你只需要按照它的规矩来写三段部分:《template》、《script》、《style》就能完成平时html、css、js的功能。页面视图展示,前后数据交互都完成了。

之后使用webpack等工具,会将vue语法转换为html,js,css。

其实使用Vue开发和原生html,css,js开发步骤逻辑是一样的。

除此之外,vue还有动态绑定,数据驱动等等特点,这些都是题外话。我相信我的回答已经解决了你的问题,如果感觉有帮助,请采纳我的答案。

Hexo已经看腻了,来试试VuePress搭建个人博客

先简单介绍一下VuePress,这是尤大在2018年4月份发布的一个新轮子。

一个基于 Vue SSR 的静态站生成器,本来的目的是爽爽的写文档,但是我发现用来撸一个人博客也非常不错。

这是VuePress的官方文档 这是VuePress的中文文档

你可以跟着文档上的例子自己玩一玩,不过由于VuePress的文档也是用VuePress来实现的,所以我取巧直接拿 VuePress仓库 中的 docs 目录拿来玩耍。

当你看到这一行就说明已经成功了:

***隐藏网址*** 发现真的打开了vuepress文档:

下面的工作就是数据的替换了,但我们应该先看一下docs的目录结构:

文档分成了两部分,中文文档在/zh/目录下,英文文档在根目录下。

其实目录里面的东西都挺好看懂的,首先guide 、default-theme-config、config 这三个目录中的都是Vuepress文档的主要内容,从中文文档里也可以看到只有这三个目录被替换了。

默认主题提供了一个主页布局,要使用它,需要在你的根目录 README.md 的 YAML front matter 中指定 home:true ,并加上一些其他的元数据。

我们先看看根目录下的README,md:

实在看不懂, 官网 有比我更详细的配置说明。

导航配置文件在 .vuepress/config.js 中

在导航配置文件中nav是控制导航栏链接的,你可以把它改成自己的博客目录。

剩下的默认主题配置官方文档都有很详细的文档说明这里就不在啰嗦了。

你可以在 .vuepress/ 目录下创建一个 override.styl 文件。 vuepress提供四个可更改的颜色:

我把它改成了这样:

由于评论区里问的人较多,所以在这里更新一下,其实我就算在这里写的再详细也不如大家去看官方文档。 侧边栏的配置也在 .vuepress/config.js 中:

对应的文档结构:

我的博客: brownhu

在配置好你博客之后,命令行执行:

当你看到这一行就说明成功了:

将打包好的vuepress目录上传到你的github仓库,和github page配合,就可以配置好你的博客网站了。

vue禁止横屏

1、style 中设置竖屏时的屏幕处理 @media screen and (orientation:portrait)@media screen and (orientation: portrait) { /*竖屏样式*/ body { transform-origin: 0 0; transform: rotateZ(90deg) translateY(-100%); }}2、在页面加载的时候,进行必要的页面宽高处理 forceLandscapeScreenHandle() { const body = document.getElementsByTagName(’body’); const html = document.getElementsByTagName(’html’); const width = html.clientWidth; const height = html.clientHeight; const max = width 》 height ? width : height; const min = width 》 height ? height : width; body.style.width = max + "px"; body.style.height = min + "px"; }三、注意事项1、添加窗口变化的重新 宽高处理onWindowSizeChanged() { window.addEventListener("resize", this.forceLandscapeScreenHandle) }2、为了页面的变化太多,可以设置屏幕的最大最小比例《!-- 这里的 作用是 让 页面的 宽度 适配 手机屏幕的 宽度,这样写 就能使 html 的 width 等于 对应手机 屏幕的 宽度。另外 还阻止用户 缩放 界面--》《!-- 目的是 让界面显示 更加适应 手机屏幕--》 《meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"》四、效果预览五、实现步骤这里构建 Vue 工程,可参见Web 前端 之 Vue vue cli 环境的搭建简单整理(简单的一些注意事项)_仙魁XAN的博客-CSDN博客1、打开 Vue 工程,在 public/index.html 中添加如下 meta 标签处理,屏幕比例的限制处理《!-- 这里的 作用是 让 页面的 宽度 适配 手机屏幕的 宽度,这样写 就能使 html 的 width 等于 对应手机 屏幕的 宽度。另外 还阻止用户 缩放 界面--》《!-- 目的是 让界面显示 更加适应 手机屏幕--》 《meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"》2、在 src/App.vue 中添加测试的内容3、添加 style 样式,关键处理竖屏时的页面,相关如下4、在页面加载进行 宽高处理5、最后运行工程,效果如下六、关键代码1、public/Index.html《!DOCTYPE html》《html lang=""》 《head》 《meta charset="utf-8"》***隐藏网址***《!-- 这里的 作用是 让 页面的 宽度 适配 手机屏幕的 宽度,这样写 就能使 html 的 width 等于 对应手机 屏幕的 宽度。另外 还阻止用户 缩放 界面--》《!-- 目的是 让界面显示 更加适应 手机屏幕--》 《meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"》 《link rel="icon" href="《%= BASE_URL %》favicon.ico"》 《title》《%= htmlWebpackPlugin.options.title %》《/title》 《/head》 《body》 《noscript》 《strong》We’re sorry but 《%= htmlWebpackPlugin.options.title %》 doesn’t work properly without JavaScript enabled. Please enable it to continue.《/strong》 《/noscript》 《div id="app"》《/div》 《!-- built files will be auto injected --》 《/body》《/html》2、src/App.vue《template》 《div id="container"》 TestForceLandscapeScreen 《/div》《/template》 《script》export default { name: ’ThreeTest’, components: {}, data() { return {} }, mounted() { this.init(); }, methods: { init() { this.forceLandscapeScreenHandle(); // 这里监控 this.onWindowSizeChanged(); }, forceLandscapeScreenHandle() { const body = document.getElementsByTagName(’body’); const html = document.getElementsByTagName(’html’); const width = html.clientWidth; const height = html.clientHeight; const max = width 》 height ? width : height; const min = width 》 height ? height : width; body.style.width = max + "px"; body.style.height = min + "px"; }, onWindowSizeChanged() { window.addEventListener("resize", this.forceLandscapeScreenHandle) } }, // beforeDestroy 废弃,使用 beforeUnmount beforeUnmount() { }} 《/script》 《style》#app { /*文字居中*/ display: flex; justify-content: center; align-items: center; text-align: center; height: 100%;} * { /*初始化样式*/ margin: 0; padding: 0;} html { /*用于 获取 屏幕的可视宽高*/ width: 100%; height: 100%; overflow: hidden;} body { /*让 body 初始 width 和 height 就 等于 页面可视区域的 宽高*/ position: fixed; left: 0; top: 0; width: 100%; height: 100%; } @media screen and (orientation: portrait) { /*竖屏样式*/ body { transform-origin: 0 0; transform: rotateZ(90deg) translateY(-100%); }}《/style》七、其他1、参考博文1)移动端如何让页面强制横屏_Fizz_kai的博客-CSDN博客_html 强制横屏2)h5横屏(以vue为例) - 江峰★ - 博客园2、其他实现强制横屏参考强制横屏展示,这里用到了css3的旋转功能,就是对屏幕 resize 事件进行监听,当判断为竖屏时将整个根容器进行逆时针 CSS3 旋转 90 度即可。代码如下:  在mounted生命周期中监听resize事件:window.addEventListener(’resize’, this.resize)  resize方法如下: resize () { var width = window.innerWidth, height = window.innerHeight, $wrapper = document.getElementById("app"), style = ""; if (width 》= height) { // 横屏 style += "width:" + width + "px;"; // 注意旋转后的宽高切换 style += "height:" + height + "px;"; style += "-webkit-transform: rotate(0); transform: rotate(0);"; style += "-webkit-transform-origin: " + width / 2 + "px " + width / 2 + "px;"; style += "transform-origin: " + width / 2 + "px " + width / 2 + "px;"; } else { // 竖屏 style += "width:" + height + "px;"; style += "height:" + width + "px;"; style += "-webkit-transform: rotate(90deg); transform: rotate(90deg);"; // 注意旋转中点的处理 style += "-webkit-transform-origin: " + width / 2 + "px " + width / 2 + "px;"; style += "transform-origin: " + width / 2 + "px " + width / 2 + "px;"; } $wrapper.style.cssText = style; }接下来就是适配的问题了。我采用的是vw跟vh。以前没用过,初次接触,用过之后感觉真的挺好用的。  假如ios用户开启了屏幕固定或者android用户开启了屏幕自动旋转。这两种情况下,会有一点不一样。这时候使用css判断横竖屏就显得尤其重要了。代码如下: /* 竖屏 */@media screen and (orientation:portrait) { // 以vw为单位} /* 横屏 */@media screen and (orientation:landscape) {  // 以vh为单位}在竖屏的时候使用vw来进行适配。即根据屏幕的宽度来适配。这里以375 x 667的设计稿为例。例如:一个元素宽为526,高为314。根据屏幕的宽度来适配的话就是526/375 * 100% vw、314/375 * 100% vw了。  如果是横屏的话,就是用vh来进行适配。即根据屏幕的高度来适配。同样以375*667的设计稿为例。此时元素宽为526,高为314。就该写成宽为526/375 * 100% vh、高为314/375 * 100% vh了  tips:最近又重新研究了一下横屏这个,发现其实不管ios用户是否开启了屏幕固定或者android用户是否开启了屏幕自动旋转,,都不需要使用css判断横竖屏来写两套样式了,只需要以正常情况(即竖屏下)的宽度来计算,然后使用vmin作为单位即可,这样写一套样式就全部搞定了。(vmin是相对于视口的宽度或高度中较小的那个来计算的)

vue简单个人博客的制作(使用 Vue 和 Vue-router 创建一个多布局(layout)系统)

本文编辑:admin

本文相关文章:


vue简单个人博客的制作(Vue 组件学习总结)

vue简单个人博客的制作(Vue 组件学习总结)

本文目录Vue 组件学习总结vue骚操作之this.$options(个人笔记)使用 Vue 和 Vue-router 创建一个多布局(layout)系统vue禁止横屏Hexo已经看腻了,来试试VuePress搭建个人博客每一个程序员都应该

2024年7月19日 17:28

vue简单个人博客的制作(每一个程序员都应该有写博客:使用VuePress搭建一个博客系统)

vue简单个人博客的制作(每一个程序员都应该有写博客:使用VuePress搭建一个博客系统)

本文目录每一个程序员都应该有写博客:使用VuePress搭建一个博客系统使用 Vue 和 Vue-router 创建一个多布局(layout)系统vue禁止横屏Hexo已经看腻了,来试试VuePress搭建个人博客Vue 组件学习总结vue

2024年7月15日 04:58

更多文章:


decades是什么意思(In recent decades是什么意思)

decades是什么意思(In recent decades是什么意思)

本文目录In recent decades是什么意思Over the passed 3 decades什么意思decades是什么意思for decades什么意思如下句子怎么翻译请问decades在这句中的意思是three-decades

2024年7月3日 06:03

微服务架构和微信小程序的区别(微信小程序和订阅号,服务号有什么区别)

微服务架构和微信小程序的区别(微信小程序和订阅号,服务号有什么区别)

本文目录微信小程序和订阅号,服务号有什么区别微信小程序和订阅号、服务号有什么区别微信公众号和微信小程序有什么区别微信公众号开发和小程序开发有啥区别微信小程序和订阅号,服务号有什么区别微信小程序和订阅号,服务号的区别如下:1、公众平台订阅号,

2024年7月21日 03:27

复合赋值运算符的运算顺序(c语言基础:复合赋值运算符)

复合赋值运算符的运算顺序(c语言基础:复合赋值运算符)

大家好,关于复合赋值运算符的运算顺序很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于c语言基础:复合赋值运算符的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本

2024年7月16日 13:26

c socket send(c++ socket变成 客户端第二个send 服务端没反应)

c socket send(c++ socket变成 客户端第二个send 服务端没反应)

本文目录c++ socket变成 客户端第二个send 服务端没反应c++socket send 能直接发送int类型吗C 语言socket 的send数据太大,最大能发送多少如何分批发送CSocket类的Send()函数问题:连续发送多次

2024年7月1日 01:14

protective怎么读(protective是什么意思)

protective怎么读(protective是什么意思)

本文目录protective是什么意思protective是什么意思protective保护双语对照词典结果:protective[英][prəˈtektɪv][美][prəˈtɛktɪv]adj.保护的,防护的; 保护贸易的; 以上结果来

2024年6月18日 13:58

keys什么意思(KEYS=Keep Empowering Yourself Successfully.是什么意思)

keys什么意思(KEYS=Keep Empowering Yourself Successfully.是什么意思)

本文目录KEYS=Keep Empowering Yourself Successfully.是什么意思key的复数亚马逊开keys是什么意思wherearethekeys是什么意思keys的翻译是:什么意思KEYS=Keep Empowe

2023年5月29日 02:40

简述mvc架构的流程(spring mvc 的工作流程是什么)

简述mvc架构的流程(spring mvc 的工作流程是什么)

本文目录spring mvc 的工作流程是什么简述MVC的处理流程springmvc请求处理的流程有哪些SpringMVC流程是什么springmvc工作流程是springmvc工作流程什么是MVC设计模式,如何使用MVC项目架构为mvc三

2024年7月17日 19:11

switch是循环语句吗(在switch结构体内也可以使用continue这句话对么)

switch是循环语句吗(在switch结构体内也可以使用continue这句话对么)

本文目录在switch结构体内也可以使用continue这句话对么c++中for循环和switch语句哪个更高效请问for循环中的switch语句中case后用break还是continue区别是什么有关switch语句中的几个问题当循环次

2024年7月21日 02:46

health是什么意思英语(health怎么读英语)

health是什么意思英语(health怎么读英语)

本文目录health怎么读英语健康的英语怎么读健康的英语名词形式是什么health是什么词health怎么读health的形容词是什么英语单词“health”与“healthy”的区别health怎么读英语helθ发音。健康状况/状态的英

2023年6月2日 17:00

上海java架构师培训哪家好?现在Java进阶培训量产java架构师是否是件好事

上海java架构师培训哪家好?现在Java进阶培训量产java架构师是否是件好事

本文目录上海java架构师培训哪家好现在Java进阶培训量产java架构师是否是件好事java系统架构师培训班有吗为什么感觉架构师工资很高却不怎么忙的样子培训JAVA,然后努力学能成为架构师吗java架构师培训多久能学会Java架构师跟着培

2024年5月7日 21:43

js的map方法的使用(JS新增对象Map、Set)

js的map方法的使用(JS新增对象Map、Set)

本文目录JS新增对象Map、Setjs什么时候用map什么JS新增对象Map、SetMap映射是ES6里面新增的一个对象,是一组键值对的结构,具有极快的查找速度。 Map是类似Object的一种键值对集合,区别在于Map的键不仅限于是字

2024年7月19日 17:27

安卓编码转换工具(最好的视频编码转换(视频压缩)软件有哪些)

安卓编码转换工具(最好的视频编码转换(视频压缩)软件有哪些)

本文目录最好的视频编码转换(视频压缩)软件有哪些手机有没有amv格式转换器android string如何把其他编码变为utf-8编码在android中怎样把utf-16的字符转换为GBK字符用printf输出最好的视频编码转换(视频压缩)

2024年5月17日 22:42

please英语(please英语怎么读)

please英语(please英语怎么读)

本文目录please英语怎么读please是什么意思英语please怎么读音是什么意思please英语怎么说please读音英语“please”的读音是什么翻译成中文是什么意思Please英文什么意思please是什么意思 请解释pleas

2024年6月12日 08:29

be trapped in什么意思(be trapped in是什么意思)

be trapped in什么意思(be trapped in是什么意思)

这篇文章给大家聊聊关于be trapped in什么意思,以及be trapped in是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录be trapped in是什么意思trapped怎么读英语每到月末,他就陷入经

2024年9月7日 07:10

手机弹出浮动广告(如何关闭晃动手机时出现的广告页面)

手机弹出浮动广告(如何关闭晃动手机时出现的广告页面)

本文目录如何关闭晃动手机时出现的广告页面手机打开就有广告跳出来怎么解决为什么手机总是弹出广告页面,该怎么解决啊手机弹出广告怎么弄手机老是弹出广告怎么关闭手机老是弹广告出来怎么办手机网页上出现广告怎么办为什么手机会突然跳广告手机总是弹出广告是

2024年6月26日 14:35

变量泵工作原理图解(定量泵和变量泵的工作原理)

变量泵工作原理图解(定量泵和变量泵的工作原理)

本文目录定量泵和变量泵的工作原理变量柱塞泵的工作原理轴向柱塞泵是如何实现双向变量泵功能的变量叶片泵的工作原理恒压变量泵的工作原理是什么压力补偿变量轴向柱塞泵工作原理及图解变量液压泵原理1、画出Rexroth+A11VO-DR系列变量泵的变量

2024年7月24日 14:03

div padding(div中间距用padding好还是margin好)

div padding(div中间距用padding好还是margin好)

各位老铁们好,相信很多人对div padding都不是特别的了解,因此呢,今天就来为大家分享下关于div padding以及div中间距用padding好还是margin好的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2024年7月31日 04:35

disabled电脑启动项(联想电脑怎么设置U盘启动)

disabled电脑启动项(联想电脑怎么设置U盘启动)

本篇文章给大家谈谈disabled电脑启动项,以及联想电脑怎么设置U盘启动对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录联想电脑怎么设置U

2024年7月19日 23:35

thinkphp代码加密(thinkphp 怎么生成秘钥)

thinkphp代码加密(thinkphp 怎么生成秘钥)

“thinkphp代码加密”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看thinkphp代码加密(thinkphp 怎么生成秘钥)!本文目录thinkphp 怎么生成秘钥thinkphp这个逻辑是如何执行加密了 是先执行m

2024年7月24日 23:05

开机出现grub(电脑一开机就显示grub怎么解决)

开机出现grub(电脑一开机就显示grub怎么解决)

本文目录电脑一开机就显示grub怎么解决华硕笔记本开机出现GRUB ,除了用u盘还有什么办法修复HP电脑开机出现grub怎么办win7开机出现grub怎么办电脑一开机就显示grub怎么解决电脑开机出现grub  其实就是电脑开机缺失个引导文

2024年7月4日 13:45

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索