、网站题目
个人网页设计、♂️个人简历制作、简单静态HTML个人网页作品、个人介绍网站模板 、等网站的设计与制作。
二、✍️网站描述
⭐个人网页设计网站模板采用DIV CSS布局制作,网页作品有多个页面,如 :个人介绍(文字页面)、我的作品(图片列表)、个人技能(图文页面)、在线留言(表单页面)CSS样式方面网页整体采用左右布局结构,制作了网页背景图片,导航区域每个导航背景色不同,导航背景色与页面背景呼应。
一套A+的网页应该包含 (具体可根据个人要求而定)
页面分为页头、菜单导航栏(最好可下拉)、中间内容板块、页脚四大部分。
所有页面相互超链接,可到三级页面,有5-10个页面组成。
页面样式风格统一布局显示正常,不错乱,使用Div+Css技术。
菜单美观、醒目,二级菜单可正常弹出与跳转。
要有JS特效,如定时切换和手动切换图片轮播。
页面中有多媒体元素,如gif、视频、音乐,表单技术的使用。。
页面清爽、美观、大方,不雷同。 。
不仅要能够把用户要求的内容呈现出来,还要满足布局良好、界面美观、配色优雅、表现形式多样等要求。
三、网站介绍
网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。
网站程序方面:计划采用最新的网页编程语言HTML5+CSS3+JS程序语言完成网站的功能设计。并确保网站代码兼容目前市面上所有的主流浏览器,已达到打开后就能即时看到网站的效果。
网站素材方面:计划收集各大平台好看的图片素材,并精挑细选适合网页风格的图片,然后使用PS做出适合网页尺寸的图片。
网站文件方面:网站系统文件种类包含:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;
网页编辑方面:网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++ 等任意html编辑软件进行运行及修改编辑等操作)。
其中:
(1)html文件包含:其中index.html是首页、其他html为二级页面;
(2) css文件包含:css全部页面样式,文字滚动, 图片放大等;
(3) js文件包含:js实现动态轮播特效, 表单提交, 点击事件等等(个别网页中运用到js代码)。
网站页面展示:
注意,这篇文章篇幅较长,主要针对新手,每一步很详细,所以可能会显得比较啰嗦,建议基础比较好小伙伴根据右侧目录选择自己感兴趣的部分跳着看,不要文章没看,上来先喷一下!谢谢( ⊙ o ⊙ )。
教程内容随意复制使用,引用的话请加一个参考链接,谢谢!
倒腾了一两周总算把个人博客网站完善了,目前这个版本使用应该是够了,当然还有一些优化项和功能增加后续在慢慢更新,为了回馈开源,今天准备把我自己修改完善的blog网站源代码开源。这不是生成后的网页文件,是您可以直接使用的源码,您只需要把博客相关信息换成您自己的就可以部署了,对于新手或者不懂编程的小伙伴来说,简直是福音,极大简化了您构建博客的工作量和复杂度,每个人都可以下载并修改成自己喜欢样式!如果你有修改想法,欢迎PR!最后,我们还是给这个开源小项目取个名字吧,就叫hexo-blog-fly吧,怎么样?<<<<<源代码下载>>>>>
本博客基于Hexo框架搭建,用到hexo-theme-matery主题,并在此基础之上做了很多修改,修复了一些bug,增加了一些新的特性和功能,博客地址:https://shw2018.github.io,博客演示:sunhwee.com。
简单使用方法:
更多详情教程,强烈推荐看我写的:Hexo+Github博客搭建完全教程
有什么问题可以在文章最后评论区留言和讨论,当然,欢迎文章最后打赏投币,请博主一杯冰阔乐,笑~
最后,如果项目和教程对你有所帮助或者你看见了还算比较喜欢,欢迎给我github项目仓库点个star,谢谢您!
去年在博客园注册了自己的第一个博客,当时初衷就是想拿来作为自己的在线笔记本,做做学习记录,分享一些学到的东西,使用第三方提供的博客服务其实也挺方便,现在市面上提供类似服务的博客网站也很多,如CSDN,博客园,简书等平台,可以直接在上面发表,用户交互做的好,写的文章百度也能搜索的到。但是缺点是比较不自由,会受到平台的各种限制和恶心的广告,个性化不足。而自己购买域名和服务器,搭建博客的成本实在是太高了,不光是说这些购买成本,单单是花力气去自己搭这么一个网站,还要定期的维护它,对于我们大多数人来说,也是没有这样的精力和时间。那么,我们能不能自己定制一个自己喜欢的个性化博客,同时也不用付出太高的成本啦?
这就引出了第三种选择,基于开源框架搭建博客,然后直接在github page平台上托管我们的博客。这样就可以安心的来写作,又不需要定期维护,基于这个想法,今年8月初的时候开始搭建第一个属于自己的独立博客,前后断续弄了近一周,到现在稍微有点模样了。我想可能有很多小伙伴应该也想过搭建一个自己的博客,当然,网上也有一堆详细教程。写这篇博客的目的大概有两个,第一个是当做自己的搭建记录,方便以后自己随时查看提示修改,第二个是稍稍总结一下具体的搭建步骤以及一些支持个性化定制的博客源码修改的教程,稍稍分享一下这些修改经验,当然,更多的一些个性化操作需要你自己以后在这个基础上慢慢去摸索,有些写的不太好的地方还希望看到的小伙伴多多包涵。
博客初步的页面效果可以看一下我的博客:sunhwee.com,欢迎大家支持。
本博客基于Hexo,所以首先要了解一下我们搭建博客所要用到的框架。Hexo是高效的静态网站生成框架,它基于Node.js,快速,简单且功能强大,是搭建博客的首选框架。大家可以进入hexo官网进行详细查看,因为Hexo的创建者是台湾人,对中文的支持很友好,可以选择中文进行查看。通过Hexo,你可以直接使用Markdown语法来撰写博客。相信很多小伙伴写工程都写过README.md文件吧,对,就是这个格式的!写完后只需两三条命令即可将生成的网页上传到github或者coding等代码管理托管平台,然后别人就可以浏览你的博客网页啦。是不是很简单?你无需关心网页源代码的具体生成细节,只需要用心写好你的博客文章内容就行了。
简单总结:Hexo, 产品成熟,使用简单,功能强大,有丰富的各种插件资源;但,像发布后台、站内搜索,评论系统类似诉求,虽然有对应的工具,但也需要自己折腾下,后续我们一步一步介绍。
教程大致分三个部分,
hexo的初级搭建还有部署到github page上,以及个人域名的绑定。
为了把本地的网页文件上传到github上面去,需要用到工具———Git[下载地址]。Git是目前世界上最先进的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git非常强大,建议每个人都去了解一下。廖雪峰老师的Git教程写的非常好,大家可以看一下。Git教程
windows:到git官网上下载.exe文件,Download git,安装选项还是全部默认,只不过最后一步添加路径时选择Use Git from the Windows Command Prompt,这样我们就可以直接在命令提示符里打开git了。
顺便说一下,windows在git安装完后,就可以直接使用git bash来敲命令行了,不用自带的cmd,cmd有点难用。
linux:对linux来说实在是太简单了,因为最早的git就是在linux上编写的,只需要一行代码
sudo apt-get install git
安装完成后在命令提示符中输入git --version来查看一下版本验证是否安装成功。
Hexo是基于node.js编写的,所以需要安装一下node.js和里面的npm工具。
windows:下载稳定版或者最新版都可以Node.js,安装选项全部默认,一路点击Next。
最后安装好之后,按Win+R打开命令提示符,输入node -v和npm -v,如果出现版本号,那么就安装成功了。
linux:命令行安装:
sudo apt-get install nodejs
sudo apt-get install npm
不过不推荐命令行安装,有时候有问题,建议直接到官网去下载编译好的压缩文件,如下所示:
然后解压到你指定的文件夹即可,比如我解压到我系统的/home/shw/MySoftwares目录下了,如图:
注意本压缩包是.tar.xz格式的,需要两次解压
配置一下环境变量
sudo vim /etc/profile
复制下面两行到刚打开的profile文件最底部(注意node的安装地址
/home/shw/MySoftwares/node-v12.8.0-linux-x64换成自己的):
export NODE_HOME=/home/shw/MySoftwares/node-v12.8.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin
保存后退出,再执行下面命令将环境变量生效:
source /etc/profile
将目录软链接到全局环境下(命令后面的/usr/local/bin/node是固定的)
sudo ln -s /home/shw/MySoftwares/node-v12.8.0-linux-x64/node /usr/local/bin/node
sudo ln -s /home/shw/MySoftwares/node-v12.8.0-linux-x64/npm /usr/local/bin/npm
这样安装好了以后使用npm安装的包(比如:ionic serve),使用包的命令时可能会提示找不到命令,没关系,在用户目录下终端执行下面命令(固定写法):
echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.bashrc && source ~/.bashrc
这样我们在所有用户下,都可以使用npm,也可以使用npm安装的包的命令。成功地将nodejs安装并配置到全局环境下。
安装完后,打开命令行终端,输入:
node -v
npm -v
检查一下有没有安装成功
如果没有梯子的话,可以使用阿里的国内镜像进行加速。
npm config set registry https://registry.npm.taobao.org
前面git和nodejs安装好后,就可以安装hexo了,你可以先创建一个文件夹MyBlog,用来存放自己的博客文件,然后cd到这个文件夹下(或者在这个文件夹下直接右键git bash打开)。
比如我的博客文件都存放在D:\Study\MyBlog目录下。
在该目录下右键点击Git Bash Here,打开git的控制台窗口,以后我们所有的操作都在git控制台进行,就不用Windows自带的cmd了。
定位到该目录下,输入npm install -g hexo-cli安装Hexo。可能会有几个报错,无视它就行。
npm install -g hexo-cli
安装完后输入hexo -v验证是否安装成功。
至此hexo就安装完了。
接下来初始化一下hexo,即初始化我们的网站,输入hexo init初始化文件夹
hexo init MyBlog
这个MyBlog可以自己取什么名字都行,然后,接着输入npm install安装必备的组件。
cd MyBlog //进入这个MyBlog文件夹
npm install
新建完成后,指定文件夹MyBlog目录下载:
这样本地的网站配置也弄好了,输入hexo g生成静态网页,然后输入hexo s打开本地服务器,
hexo g
hexo server(或者简写:hexo s))
然后浏览器打开http://localhost:4000/,就可以看到我们的博客啦,效果如下:
按ctrl+c关闭本地服务器。
接下来就去注册一个github账号,用来存放我们的网站。大多数小伙伴应该都有了吧,作为一个合格的程序猿(媛)还是要有一个的。
打开https://github.com/,新建一个项目仓库New repository,如下所示:
然后如下图所示,输入自己的项目名字,后面一定要加.github.io后缀,README初始化也要勾上。
要创建一个和你用户名相同的仓库,后面加.http://github.io,只有这样,将来要部署到GitHub page的时候,才会被识别,也就是http://xxxx.github.io,其中xxx就是你注册GitHub的用户名。例如我的:http://shw2018.github.io
生成SSH添加到GitHub,连接Github与本地。
右键打开git bash,然后输入下面命令:
git config --global user.name "yourname"
git config --global user.email "youremail"
这里的yourname输入你的GitHub用户名,youremail输入你GitHub的邮箱。这样GitHub才能知道你是不是对应它的账户。例如我的:
git config --global user.name "shw2018"
git config --global user.email "hwsun@std.uestc.edu.cn"
可以用以下两条,检查一下你有没有输对
git config user.name
git config user.email
然后创建SSH,一路回车
ssh,简单来讲,就是一个秘钥,其中,id_rsa是你这台电脑的私人秘钥,不能给别人看的,id_rsa.pub是公共秘钥,可以随便给别人看。把这个公钥放在GitHub上,这样当你链接GitHub自己的账户时,它就会根据公钥匹配你的私钥,当能够相互匹配时,才能够顺利的通过git上传你的文件到GitHub上。
ssh-keygen -t rsa -C "youremail"
这个时候它会告诉你已经生成了.ssh的文件夹。在你的电脑中找到这个文件夹。或者git bash中输入
cat ~/.ssh/id_rsa.pub
将输出的内容复制到框中,点击确定保存。
打开github,在头像下面点击settings,再点击SSH and GPG keys,新建一个SSH,名字随便取一个都可以,把你的id_rsa.pub里面的信息复制进去。如图:
在git bash输入ssh -T git@github.com,如果如下图所示,出现你的用户名,那就成功了。
这一步,我们就可以将hexo和GitHub关联起来,也就是将hexo生成的文章部署到GitHub上,打开博客根目录下的_config.yml文件,这是博客的配置文件,在这里你可以修改与博客配置相关的各种信息。
修改最后一行的配置:
deploy:
type: git
repository: https://github.com/shw2018/shw2018.github.io
branch: master
repository修改为你自己的github项目地址即可,就是部署时,告诉工具,将生成网页通过git方式上传到你对应的链接仓库中。
这个时候需要先安装deploy-git ,也就是部署的命令,这样你才能用命令部署到GitHub。
npm install hexo-deployer-git --save
然后
hexo clean
hexo generate
hexo deploy
其中 hexo clean清除了你之前生成的东西,也可以不加。 hexo generate顾名思义,生成静态文章,可以用 hexo g缩写 ,hexo deploy部署文章,可以用hexo d缩写
注意deploy时可能要你输入username和password。
得到下图就说明部署成功了,过一会儿就可以在http://yourname.github.io 这个网站看到你的博客了!!
现在你的个人网站的地址是yourname.github.io,如果觉得这个网址逼格不太够,这就需要你设置个人域名了。但是需要花钱。
不过,这一步不是必要的,如果目前还不想买域名可以先跳过,继续看后面的,以后想买域名了在还看这块
首先你得购买一个专属域名,xx云都能买,看你个人喜好了。
这篇以腾讯云为例,腾讯云官网购买:
然后实名认证后进入腾讯云控制台,点云解析进去,找到你刚买的域名,点进去添加两条解析记录,如下图所示:
然后打开你的github博客项目,点击settings,拉到下面Custom domain处,填上你自己的域名,保存:
这时候你的项目根目录应该会出现一个名为CNAME的文件了。如果没有的话,打开你本地博客/source目录,我的是D:\Study\MyBlog\source,新建CNAME文件,注意没有后缀。然后在里面写上你的域名,保存。最后运行hexo g、hexo d上传到github。
过不了多久,再打开你的浏览器,输入你自己的专属域名,就可以看到搭建的网站啦!
首先在博客根目录下右键打开git bash,安装一个扩展npm i hexo-deployer-git。
然后输入hexo new post "article title",新建一篇文章。
然后打开D:\Study\MyBlog\source\_posts的目录,可以发现下面多了一个文件夹和一个.md文件,一个用来存放你的图片等数据,另一个就是你的文章文件啦。
你可以会直接在vscode里面编写markdown文件,可以实时预览,也可以用用其他编辑md文件的软件的工具编写。
编写完markdown文件后,根目录下输入hexo g生成静态网页,然后输入hexo s可以本地预览效果,最后输入hexo d上传到github上。这时打开你的github.io主页就能看到发布的文章啦。
到这儿基本第一部分就完成了,已经完整搭建起一个比较简陋的个人博客了,接下来我们就可以对我们的博客进行个性化定制了。
我们要定制自己的博客的话,首先就要来了解一下Hexo博客的一些目录和文件的作用,以及如何平滑更换漂亮的主题模板并加入自己的定制源代码实现个性化定制
从上图可以看出,博客的目录结构如下:
- node_modules
- public
- scaffolds
- source
- _data
- _posts
- about
- archives
- categories
- friends
- tags
- themes
node_modules是node.js各种库的目录,public是生成的网页文件目录,scaffolds里面就三个文件,存储着新文章和新页面的初始设置,source是我们最常用到的一个目录,里面存放着文章、各类页面、图像等文件,themes存放着主题文件,一般也用不到。
我们平时写文章只需要关注source/_posts这个文件夹就行了。
在文件根目录下的_config.yml,就是整个hexo框架的配置文件了。可以在里面修改大部分的配置。详细可参考官方的配置描述。
参数描述title网站标题subtitle网站副标题description网站描述author您的名字language网站使用的语言timezone网站时区。Hexo 默认使用您电脑的时区。时区列表。比如说:America/New_York, Japan, 和 UTC 。
其中,description主要用于SEO,告诉搜索引擎一个关于您站点的简单描述,通常建议在其中包含您网站的关键词。author参数用于主题显示文章的作者。
参数描述url网址root网站根目录 permalink文章的永久链接格式permalink_defaults永久链接中各部分的默认值
在这里,你需要把url改成你的网站域名。
permalink,也就是你生成某个文章时的那个链接格式。
比如我新建一个文章叫temp.md,那么这个时候他自动生成的地址就是
http://yoursite.com/2018/09/05/temp。
以下是官方给出的示例,关于链接的变量还有很多,需要的可以去官网上查找 永久链接 。
参数结果
:year/:month/:day/:title/2019/08/10/hello-world :year-:month-:day-:title.html 2019-08-10-hello-world.html :category/:titlefoo/bar/hello-world
再往下翻,中间这些都默认就好了。
theme: landscap
theme就是选择什么主题,也就是在themes这个文件夹下,在官网上有很多个主题,默认给你安装的是lanscape这个主题。当你需要更换主题时,在官网上下载,把主题的文件放在themes文件夹下,再修改这个主题参数就可以了。
Front-matter 是md文件最上方以 ---分隔的区域,用于指定个别文件的变量,举例来说:
title: Hexo+Github博客搭建记录
date: 2019-08-10 21:44:44
下是预先定义的参数,您可在模板中使用这些参数值并加以利用。
参数描述layout布局title标题date建立日期updated更新日期comments开启文章的评论功能tags标签(不适用于分页)categories分类(不适用于分页)permalink覆盖文章网址
其中,分类和标签需要区别一下,分类具有顺序性和层次性,也就是说Foo,Bar不等于Bar,Foo;而标签没有顺序和层次。
---
title: Hexo+Github博客搭建记录
date: 2019-08-10 21:44:44
author: 洪卫
img: /medias/banner/7.jpg
coverImg: /medias/banner/7.jpg
top: true
cover: true
toc: true
password: 5f15b28ffe43f8be4f239bdd9b69af9d80dbafcb20a5f0df5d1677a120ae9110
mathjax: true
summary: 这是你自定义的文章摘要内容,如果这个属性有值,文章卡片摘要就显示这段文字,否则程序会自动截取文章的部分内容作为摘要
tags:
- Hexo
- Github
- 博客
categories:
- 软件安装与配置
---
1.2.4.1 post
当你每一次使用代码
hexo new XXX
它其实默认使用的是post这个布局,也就是在source文件夹下的_post里面。
Hexo有三种默认布局:post、page和draft,它们分别对应不同的路径,而您自定义的其他布局和post相同,都将储存到source/_posts文件夹。
而new这个命令其实是:
hexo new [layout] <title>
只不过这个layout默认是post罢了。
1.2.4.2 page
如果你想另起一页,那么可以使用
hexo new page newpage
系统会自动给你在source文件夹下创建一个newpage文件夹,以及newpage文件夹中的index.md,这样你访问的newpage对应的链接就是http://xxx.xxx/newpage
1.2.4.3 draft
draft是草稿的意思,也就是你如果想写文章,又不希望被看到,那么可以
hexo new draft newdraft
这样会在source/_draft中新建一个newdraft.md文件,如果你的草稿文件写的过程中,想要预览一下,那么可以使用
hexo server --draft
在本地端口中开启服务预览。
如果你的草稿文件写完了,想要发表到post中,
hexo publish draft newdraft
就会自动把newdraft.md发送到post中。
我们在了解Hexo博客文件基础之后,知道主题文件就放在themes文件下,那么我们就可以去Hexo官网下载喜欢的主题,复制进去然后修改参数即可。
网上大多数主题都是github排名第一的Next主题,但是我个人不是很喜欢,我在网上看到一个主题感觉还不错:hexo-theme-matery,地址在传送门。这个主题看着比较漂亮,并且响应式比较友好,点起来很舒服,功能也比较很多。
当然,人各有异,这个主题风格也不一定是你喜欢,那么你也可以跟着这教程类似的方法替换成你喜欢的就行了。
特性:
他的介绍文档写得非常的详细,还有中英文两个版本。效果图如下:
首先先按照文档教程安装一遍主题,然后是可以正常打开的,如果你是一般使用的话,基本没啥问题了。不过有些地方有些地方可以根据你自己的习惯和喜好修改一下, 下面记录一下我这个博客修改了的一些地方。
首先为了新建文章方便,我们可以修改一下文章模板,建议将/scaffolds/post.md修改为如下代码:
---
title: {{ title }}
date: {{ date }}
author:
img:
coverImg:
top: false
cover: false
toc: true
mathjax: false
password:
summary:
tags:
categories:
---
这样新建文章后 一些Front-matter参数不用你自己补充了,修改对应信息就可以了。
原来的主题没有404页面,我们加一个。首先在/source/目录下新建一个404.md,内容如下:
title: 404
date: 2019-08-5 16:41:10
type: "404"
layout: "404"
description: "Oops~,我崩溃了!找不到你想要的页面 :("
然后在/themes/matery/layout/目录下新建一个404.ejs文件,内容如下:
<style type="text/css">
/* don't remove. */
.about-cover {
height: 75vh;
}
</style>
<div class="bg-cover pd-header about-cover">
<div class="container">
<div class="row">
<div class="col s10 offset-s1 m8 offset-m2 l8 offset-l2">
<div class="brand">
<div class="title center-align">
404
</div>
<div class="description center-align">
<%= page.description %>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
// 每天切换 banner 图. Switch banner image every day.
$('.bg-cover').css('background-image', 'url(/medias/banner/' + new Date().getDay() + '.jpg)');
</script>
修改
/themes/matery/layout/about.ejs,找到<div class="card">标签,然后找到它对应的</div>标签,接在后面新增一个card,语句如下:
<div class="card">
<div class="card-content">
<div class="card-content article-card-content">
<div class="title center-align" data-aos="zoom-in-up">
<i class="fa fa-address-book"></i> <%- __('myCV') %>
</div>
<div id="articleContent" data-aos="fade-up">
<%- page.content %>
</div>
</div>
</div>
</div>
这样就会多出一张card,然后可以在/source/about/index.md下面写上你的简历了,当然这里的位置随你自己设置,你也可以把简历作为第一个card。
2.4.1 解决mathjax与代码高亮的冲突
如果你按照教程安装了代码高亮插件hexo-prism-plugin,单独使用是没有问题的,但如果你又使用了mathjax,并且按照网上教程,安装kramed插件并修改了js文件里的正则表达式(为了解决markdown和mathjax的语法冲突),那你的代码就无法高亮了。解决方法很简单,别用kramed插件了,还用原来自带的marked插件,直接改它的正则表达式就行了。
2.4.2 加数学公式显示
打开/themes/matery/layout中的post.ejs文件,在最下方粘贴如下代码:
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>
由于markdown语法与mathjax语法存在冲突,所以还需要修改源文件。
打开/node_modules/marked/lib中的marked.js文件,第539行的escape:处替换成:
escape: /^$[`*\[\]()#$+\-.!_>])/
第553行的em:处替换成:
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/
这时在文章里写数学公式基本没有问题了,但是要注意:
数学公式中如果出现了连续两个{,中间一定要加空格!
举个例子:
行内公式:y=f(x)y=f(x)
代码:
$y = f(x)$
行间公式:
y=fg1(x)y=fg1(x)
代码:
\\[y = {f_{ {g_1}}}(x)\\]
注意上面花括号之间有空格!
修改
/themes/matery/layout/_partial中的footer.ejs,在最后加上:
<script language=javascript>
function siteTime() {
window.setTimeout("siteTime()", 1000);
var seconds = 1000;
var minutes = seconds * 60;
var hours = minutes * 60;
var days = hours * 24;
var years = days * 365;
var today = new Date();
var todayYear = today.getFullYear();
var todayMonth = today.getMonth() + 1;
var todayDate = today.getDate();
var todayHour = today.getHours();
var todayMinute = today.getMinutes();
var todaySecond = today.getSeconds();
/* Date.UTC() -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳)
year - 作为date对象的年份,为4位年份值
month - 0-11之间的整数,做为date对象的月份
day - 1-31之间的整数,做为date对象的天数
hours - 0(午夜24点)-23之间的整数,做为date对象的小时数
minutes - 0-59之间的整数,做为date对象的分钟数
seconds - 0-59之间的整数,做为date对象的秒数
microseconds - 0-999之间的整数,做为date对象的毫秒数 */
var t1 = Date.UTC(2017, 09, 11, 00, 00, 00); //北京时间2018-2-13 00:00:00
var t2 = Date.UTC(todayYear, todayMonth, todayDate, todayHour, todayMinute, todaySecond);
var diff = t2 - t1;
var diffYears = Math.floor(diff / years);
var diffDays = Math.floor((diff / days) - diffYears * 365);
var diffHours = Math.floor((diff - (diffYears * 365 + diffDays) * days) / hours);
var diffMinutes = Math.floor((diff - (diffYears * 365 + diffDays) * days - diffHours * hours) / minutes);
var diffSeconds = Math.floor((diff - (diffYears * 365 + diffDays) * days - diffHours * hours - diffMinutes * minutes) / seconds);
document.getElementById("sitetime").innerHTML = "本站已运行 " +diffYears+" 年 "+diffDays + " 天 " + diffHours + " 小时 " + diffMinutes + " 分钟 " + diffSeconds + " 秒";
}/*因为建站时间还没有一年,就将之注释掉了。需要的可以取消*/
siteTime();
</script>
然后在合适的地方(比如copyright声明后面)加上下面的代码就行了:
<span id="sitetime"></span>
因为不蒜子至今未开放注册,所以没办法在官网修改初始化,只能自己动手了。和上一条一样,我们在
/themes/matery/layout/_partial里的footer.ejs文件最后加上:
<script>
$(document).ready(function () {
var int = setInterval(fixCount, 50); // 50ms周期检测函数
var pvcountOffset = 80000; // 初始化首次数据
var uvcountOffset = 20000;
function fixCount() {
if (document.getElementById("busuanzi_container_site_pv").style.display != "none") {
$("#busuanzi_value_site_pv").html(parseInt($("#busuanzi_value_site_pv").html()) + pvcountOffset);
clearInterval(int);
}
if ($("#busuanzi_container_site_pv").css("display") != "none") {
$("#busuanzi_value_site_uv").html(parseInt($("#busuanzi_value_site_uv").html()) + uvcountOffset); // 加上初始数据
clearInterval(int); // 停止检测
}
}
});
</script>
然后把上面几行有段代码:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalTraffic) { %>
<span id="busuanzi_container_site_pv">
<i class="fa fa-heart-o"></i>
本站总访问量 <span id="busuanzi_value_site_pv" class="white-color"></span>
</span>
<% } %>
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalNumberOfvisitors) { %>
<span id="busuanzi_container_site_uv">
人次, 访客数 <span id="busuanzi_value_site_uv" class="white-color"></span> 人.
</span>
<% } %>
修改为:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalTraffic) { %>
<span id="busuanzi_container_site_pv" style='display:none'>
<i class="fa fa-heart-o"></i>
本站总访问量 <span id="busuanzi_value_site_pv" class="white-color"></span>
</span>
<% } %>
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalNumberOfvisitors) { %>
<span id="busuanzi_container_site_uv" style='display:none'>
人次, 访客数 <span id="busuanzi_value_site_uv" class="white-color"></span> 人.
</span>
<% } %>
其实就是增加了两个style='display:none'而已。
其实三步就行了,不用像网上有些教程那么复杂。
第一步:
npm install --save hexo-helper-live2d
第二步:
npm install live2d-widget-model-shizuku
这里的动漫模型可以改,只需要下载对应模型就行了,你可以官方仓库去看有哪些模型,下载你喜欢的就行。
第三步:
在根目录配置文件中添加如下代码:
live2d:
enable: true
scriptFrom: local
pluginRootPath: live2dw/
pluginJsPath: lib/
pluginModelPath: assets/
tagMode: false
log: false
model:
use: live2d-widget-model-shizuku
display:
position: right
width: 150
height: 300
mobile:
show: false
react:
opacity: 0.7
然后hexo g在hexo s就能预览出效果了,但是有个注意的地方,这个动漫人物最好不要和不蒜子同时使用,不然不蒜子会显示不出来。至于解决办法后续更新。
解决动漫人物和不蒜子不能同时使用的bug(2019.08.11):
打开themes\matery\layout\_partial中的footer.ejs,将本站总访问量和访客数的代码改为如下:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalTraffic) { %>
<span id="busuanzi_container_site_pv" style='display:none'></span>
<i class="fa fa-heart-o"></i>
本站总访问量 <span id="busuanzi_value_site_pv" class="white-color"></span>
<% } %>
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalNumberOfvisitors) { %>
<span id="busuanzi_container_site_uv" style='display:none'></span>
人次, 访客数 <span id="busuanzi_value_site_uv" class="white-color"></span> 人.
<% } %>
变化就在下面两句,将源代码对应字段后面的</span>写在前面了。
<span id="busuanzi_container_site_pv" style='display:none'></span>
<span id="busuanzi_container_site_uv" style='display:none'></span>
发现按照上面改了过后,又出现一个新bug:文章头部的阅读次数不显示了,解决办法:(2019.08.11):
打开themes\matery\layout\_partial中的post-detail.ejs,找到对应代码字段:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.enable) { %>
<div id="busuanzi_container_page_pv" class="info-break-policy">
<i class="fa fa-eye fa-fw"></i><%- __('readCount') %>:
<span id="busuanzi_value_page_pv" ></span>
</div>
<% } %>
修改为下面的就可以了:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.enable) { %>
<span id="busuanzi_container_site_pv" style='display:none'></span>
<i class="fa fa-eye fa-fw"></i><%- __('readCount') %>:
<span id="busuanzi_value_page_pv" ></span>
<% } %>
由于这个主题自带了gittalk、gitment、valine等评论插件,所以我们只需要对应插件参数就行了,这个博客用的是gittalk,如下:
当然也可以用其他评论插件,只需要配置对应项就是了,不是自带的可以照着网上的教程自己弄一个,类似的文章有很多,可以搜索关键字就行了。
写文章的时候,想插入一段BGM怎么办?
其实我们可以借助一些在线音乐的外链播放方式,首先打开网易云网页版,找到想听的歌曲,然后点击生成外链:
可能你会遇到问题,比如点击生成外链会提示你由于版权原因,不能生成,那么可以用下面办法(目前还有效,不知道后面会不会失效)
复制如下代码:
粘贴到文章对应位置就行了,为了美观,设置一下居中,具体代码如下:
<div align="middle">这里粘贴刚刚复制的代码</div>
如果我们自己写博客写疲劳了,想放松一下听听歌又不想切出博客主页,那么我们可以自己定制一个博客音乐播放界面,把自己喜欢的歌曲都放进来,这里用到是Aplayer插件,但是歌曲来源需要我们自己定义,但是,因为各大音乐平台,由于版权原因,很多歌曲是不支持外链播放的,难道我们就必须每首歌下载然后上传云空间,再获取词曲封面么?这就比较麻烦了。其实不然,研究了半个小时,我发现可以采取下面的办法,很方便:
操作如下图:
为博客新增对emoji表情的支持,使用到了 hexo-filter-github-emojis 的 Hexo 插件来支持 emoji表情的生成,把对应的markdown emoji语法(::,例如: :smile:)转变成会跳跃的emoji表情,安装命令如下:
npm install hexo-filter-github-emojis --save
在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:
githubEmojis:
enable: true
className: github-emoji
inject: true
styles:
customEmojis:
执行 hexo clean && hexo g 重新生成博客文件,然后就可以在文章中对应位置看到你用emoji语法写的表情了。
如下图:
matery主题已经集成Valine评论模块,在主题配置文件.yml中配置相应的字段就行了。enable: true,XXX字段是需要自己注册登录leancloud官网,创建应用然后获取appId和appKey,其他参数根据自己的需求修改就是,如下:
valine:
enable: true
appId: XXXXXXXXXXXXXXXXXXXXX
appKey: XXXXXXXXXXXXXXXXXXXX
notify: true
verify: true
visitor: true
avatar: 'mm' # Gravatar style : mm/identicon/monsterid/wavatar/retro/hide
pageSize: 10
placeholder: 'just go go' # Comment Box placeholder
注意:Valine用在matery主题上有个bug就是第一条评论位置会错位
如下图:
解决办法:
F12开发者模式,控制台定位bug位置,修改参数,调整对应主题源文件参数,得以解决,如下图示:
原理就是给博客增加一个事件判断,如下图所示:
打开博客主题文件夹,路径:
themes/matery/layout/layout.ejs,在对应位置添加如下代码:
<script type="text/javascript">
var OriginTitile = document.title,
st;
document.addEventListener("visibilitychange", function () {
document.hidden ? (document.title = "看不见我~看不见我~", clearTimeout(st)) : (document.title =
"(๑•̀ㅂ•́) ✧被发现了~", st = setTimeout(function () {
document.title = OriginTitile
}, 3e3))
})
</script>
然后 hexo clean && hexo g 即可。
hexo添加各种优化功能,比如SEO优化等。
待续......
网站推广是一个比较烦人的事情,特别是对于专心搞技术的来说,可能就不是很擅长,那么怎么才能让别人知道我们网站呢?也就是说我们需要想办法让别人通过搜索就可以搜索到博客的内容,给我们带来自然流量,这就需要seo优化,让我们的站点变得对搜索引擎友好
SEO是由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”。SEO是指通过站内优化比如网站结构调整、网站内容建设、网站代码优化等以及站外优化。
首先要做的就是让各大搜索引擎收录你的站点,我们在刚建站的时候各个搜索引擎是没有收录我们网站的,在搜索引擎中输入site:<域名>,如果如下图所示就是说明我们的网站并没有被百度收录。我们可以直接点击下面的“网址提交”来提交我们的网站
登录百度站长搜索资源平台:
http://zhanzhang.baidu.com, 只要有百度旗下的账号就可以登录,登录成功之后在站点管理中点击添加网站然后输入你的站点地址。
注意,这里需要输入我们自己购买的域名,不能使用xxx.github.io之类域名.因为github是不允许百度的spider(蜘蛛)爬取github上的内容的,所以如果想让你的站点被百度收录,只能使用自己购买的域名
在填完网址选择完网站的类型之后需要验证网站的所有权,验证网站所有权的方式有三种:
其实使用哪一种方式都可以,都是比较简单的。
但是一定要注意,使用文件验证文件存放的位置需要放在sourc文件夹下,如果是html文件那么hexo就会将其编译,所以必须要在html头部加上的layout:false,这样就不会被hexo编译。(如果验证文件是txt格式的就不需要)
其他两种方式也是很简单的,个人推荐文件验证和CNAME验证,CNAME验证最为简单,只需加一条解析就好~
我们需要使用npm自动生成网站的sitemap,然后将生成的sitemap提交到百度和其他搜索引擎
npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save
在根目录配置文件.yml中修改url为你的站点地址
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
# url: https://shw2018.github.io/
url: https://sunhwee.com
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
执行完hexo g命令之后就会在网站根目录生成sitemap.xml文件和baidusitemap.xml文件,可以通过:
https://sunhwee.com/baidusitemap.xml, 查看该文件是否生成,其中sitemap.xml文件是搜索引擎通用的文件,baidusitemap.xml是百度专用的sitemap文件。
然后我们就可以将我们生成的sitemap文件提交给百度,还是在百度站长平台,找到链接提交,这里我们可以看到有两种提交方式,自动提交和手动提交,自动提交又分为主动推送、自动推送和sitemap
如何选择链接提交方式
主动推送:最为快速的提交方式,推荐您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。自动推送:最为便捷的提交方式,请将自动推送的JS代码部署在站点的每一个页面源代码中,部署代码的页面在每次被浏览时,链接会被自动推送给百度。可以与主动推送配合使用。sitemap:您可以定期将网站链接放到sitemap中,然后将sitemap提交给百度。百度会周期性的抓取检查您提交的sitemap,对其中的链接进行处理,但收录速度慢于主动推送。手动提交:一次性提交链接给百度,可以使用此种方式。
一般主动提交比手动提交效果好,这里介绍主动提交的三种方法
从效率上来说:
主动推送>自动推送>sitemap
安装插件hexo-baidu-url-submit
npm install hexo-baidu-url-submit --save
然后再根目录的配置文件中新增字段
baidu_url_submit:
count: 80 # 提交最新的一个链接
host: www.sunhwee.com # 在百度站长平台中注册的域名
token: xxxxxxxxxxxxxx # 请注意这是您的秘钥, 所以请不要把博客源代码发布在公众仓库里!
path: baidu_urls.txt # 文本文档的地址, 新链接会保存在此文本文档里
再加入新的deploy:
deploy:
- type: baidu_url_submitter
如图所示:
注意,这里多个 type 的写法应该这么写**,前面那个 type 是我推送到 Github 与 Coding的page页面的配置,后面再讲这个。
密钥的获取位置在网页抓取中的链接提交这一块,如下所示:
这样执行hexo deploy的时候,新的链接就会被推送了。
推送成功时,会有如下终端提示
在主题配置文件下设置,将baidu_push设置为true:
在主题配置文件下设置,将baidu_push设置为true:
# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO
baidu_push: true
然后主题文件目录加入下面代码,一般在目录
/themes/matery/layout/_partial中的head.ejs中加入下面JS代码(有可能你的目录不是这样,原理类似),这样全站都有了:
<% if (theme.baidu_push) { %>
<script>
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<% } %>
这样每次访问博客中的页面就会自动向百度提交sitemap
将我们上一步生成的sitemap文件提交到百度就可以了~
百度收录过程还是蛮久的,需要大家耐心等待一下,提交链接在站长工具中有显示大概是要两天,站点被百度收录大概花了半个月= =,收录了之后,可以在百度搜索site: xxxxx.com可以搜索到结果
相比于百度,google的效率实在不能更快,貌似十分钟左右站点就被收录了,其实方法是和百度是一样的。
google站点平台:
https://www.google.com/webmasters/
向 google 添加 sitemap 后: 进入 Google Search Console - 抓取 - 站点地图,点击「添加/测试站点地图」,输入你的博客网址. 若无报错则站点地图提交成功
一步一步来就好,过不了过久就可以被google收录了
robots.txt 是一种存放于网站根目录下的 ASCII 编码的文本文件,它的作用是告诉搜索引擎此网站中哪些内容是可以被爬取的,哪些是禁止爬取的。robots.txt 放在博客目录下的 source 文件夹中,博客生成后在站点目录 /public/ 下。
robots.txt 是一种存放于网站根目录下的 ASCII 编码的文本文件,它的作用是告诉搜索引擎此网站中哪些内容是可以被爬取的,哪些是禁止爬取的。robots.txt 放在博客目录下的 source 文件夹中,博客生成后在站点目录 /public/ 下。
我的 robots.txt 文件内容如下:
User-agent: *
Allow: /
Allow: /archives/
Allow: /categories/
Allow: /about/
Disallow: /js/
Disallow: /css/
Disallow: /fonts/
Disallow: /vendors/
除了百度和google两大搜索引擎,还有搜狗、360等其他的搜索引擎,流程都是一样的,大家就自行选择添加哈,这里就不再赘述了~
seo搜索引擎优化认为,网站的最佳结构是用户从首页点击三次就可以到达任何一个页面,但是我们使用hexo编译的站点打开文章的url是:
sitename/year/mounth/day/title四层的结构,这样的url结构很不利于seo,爬虫就会经常爬不到我们的文章,于是,我们需要优化一下网站文章url
方案一:
我们可以将url直接改成sitename/title的形式,并且title最好是用英文,在根目录的配置文件下修改permalink如下:
url: https://sunhwee.com
root: /
permalink: :title.html
permalink_defaults:
方案二:
使用插件优化url
插件hexo-abbrlink实现了这个功能,它将原来的URL地址重新进行了进制转换和再编码。
安装hexo-abbrlink。
npm install hexo-abbrlink --save
配置博客根目录下的_config.yml文件。
# permalink: :title/
permalink: archives/:abbrlink.html
abbrlink:
alg: crc32 # 算法:crc16(default) and crc32
rep: hex # 进制:dec(default) and hex
运行hexo clean和hexo g命令来重新生成文件看看,可以清楚的看到,URL结构成功变为了3层。
seo优化应该说是一个收益延迟的行为,可能你做的优化短期内看不到什么效果,但是一定要坚持,seo优化也是有很深的可以研究的东西,从我们最初的网站设计,和最基础的标签的选择都有很大的关系,网站设计就如我们刚刚说的,要让用户点击三次可以到达网站的任何一个页面,要增加高质量的外链,增加相关推荐(比如说我们经常见到右侧本站的最高阅读的排名列表),然后就是给每一个页面加上keyword和描述
在代码中,我们应该写出能让浏览器识别的语义化HTML,这样有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;并且对外链设置nofollow标签,避免spider爬着爬着就爬出去了(减少网站的跳出率),并且我们要尽量在一些比较大的网站增加我们站点的曝光率,因为spider会经常访问大站,比如我们在掘金等技术社区发表文章中带有我们的站点,这样spider是很有可能爬到我们中的站点的,so....
由于代码高亮插件prism_plugin的样式没有行号显示和代码块整体复制功能,不是很方便,为了优化观感和易用性,我们可以对其进行修改:
待续......
我们在配置文件.yml中找到prism_plugin配置项line_number: false(# default false)改为true,开启行号,但是在我们这个matery主题中中是无效的,有bug需要改一下matery.css样式参数,在第95行位置将:
pre {
padding: 1.5rem !important;
margin: 1rem 0 !important;
background: #272822;
overflow: auto;
border-radius: 0.35rem;
tab-size: 4;
}
改为:
pre {
padding: 1.5rem 1.5rem 1.5rem 3.3rem !important;
margin: 1rem 0 !important;
background: #272822;
overflow: auto;
border-radius: 0.35rem;
tab-size: 4;
}
注释掉紧接着的code代码块里面的font-size项,如下:
code {
padding: 1px 5px;
font-family: Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace;
/*font-size: 0.91rem;*/
color: #e96900;
background-color: #f8f8f8;
border-radius: 2px;
}
好了这下可以显示行号了,如图:
issue问题:
优化网站加载逻辑问题:图片最后加载,加入图片懒加载方法
hexo-lazyload-image的作用原理是讲你博客里面img标签的src属性替换为一个loading image,把真实的图片地址放在data-origin属性下面。然后当你的网页翻到那张图片时(也就是图片在窗口中完全可见时),他会有一段js用data-origin的内容替换src,打到懒加载的目的。
一般情况下懒加载和gallery插件会发生冲突,比如按照我上面所说,最终结果就会变成,可能只有第一张图片在gallery中打开是原图,右翻左翻都会是那张loading image,需要你掌握js,可以修改matery.js里面的内容,甚至可能换一个gallery,比如photosiwpe之类的
解决方法:修改/themes/matery/source/js中的matery.js文件
第103行:
$('#articleContent, #myGallery').lightGallery({
selector: '.img-item',
// 启用字幕
subHtmlSelectorRelative: true,
showThumbByDefault: false //这句加上
});
后面加上:
$(document).find('img[data-original]').each(function(){
$(this).parent().attr("href", $(this).attr("data-original"));
});
再装个插件,
https://github.com/Troy-Yang/hexo-lazyload-image
在博客根目录配置.yml文件加入对应字段,如下:
# lazyload configuration 2019.08.23
lazyload:
enable: true
onlypost: false
loadingImg: # eg ./images/loading.gif
好了,这样实现了博客网站的图片懒加载。
Gulp实现代码压缩,以提升网页加载速度。
1 首先我们需要安装Gulp插件和5个功能模块,依次运行下面的两条命令。
npm install gulp -g #安装gulp
# 安装功能模块
npm install gulp-htmlclean gulp-htmlmin gulp-minify-css gulp-uglify gulp-imagemin --save
# 额外的功能模块
npm install gulp-debug gulp-clean-css gulp-changed gulp-if gulp-plumber gulp-babel babel-preset-es2015 del --save
2 接下来在博客的根目录下新建gulpfile.js文件,并复制下面的内容到文件中。
var gulp = require("gulp");
var debug = require("gulp-debug");
var cleancss = require("gulp-clean-css"); //css压缩组件
var uglify = require("gulp-uglify"); //js压缩组件
var htmlmin = require("gulp-htmlmin"); //html压缩组件
var htmlclean = require("gulp-htmlclean"); //html清理组件
var imagemin = require("gulp-imagemin"); //图片压缩组件
var changed = require("gulp-changed"); //文件更改校验组件
var gulpif = require("gulp-if"); //任务 帮助调用组件
var plumber = require("gulp-plumber"); //容错组件(发生错误不跳出任务,并报出错误内容)
var isScriptAll = true; //是否处理所有文件,(true|处理所有文件)(false|只处理有更改的文件)
var isDebug = true; //是否调试显示 编译通过的文件
var gulpBabel = require("gulp-babel");
var es2015Preset = require("babel-preset-es2015");
var del = require("del");
var Hexo = require("hexo");
var hexo = new Hexo(process.cwd(), {}); // 初始化一个hexo对象
// 清除public文件夹
gulp.task("clean", function() {
return del(["public/**/*"]);
});
// 下面几个跟hexo有关的操作,主要通过hexo.call()去执行,注意return
// 创建静态页面 (等同 hexo generate)
gulp.task("generate", function() {
return hexo.init().then(function() {
return hexo
.call("generate", {
watch: false
})
.then(function() {
return hexo.exit();
})
.catch(function(err) {
return hexo.exit(err);
});
});
});
// 启动Hexo服务器
gulp.task("server", function() {
return hexo
.init()
.then(function() {
return hexo.call("server", {});
})
.catch(function(err) {
console.log(err);
});
});
// 部署到服务器
gulp.task("deploy", function() {
return hexo.init().then(function() {
return hexo
.call("deploy", {
watch: false
})
.then(function() {
return hexo.exit();
})
.catch(function(err) {
return hexo.exit(err);
});
});
});
// 压缩public目录下的js文件
gulp.task("compressJs", function() {
return gulp
.src(["./public/**/*.js", "!./public/libs/**"]) //排除的js
.pipe(gulpif(!isScriptAll, changed("./public")))
.pipe(gulpif(isDebug, debug({ title: "Compress JS:" })))
.pipe(plumber())
.pipe(
gulpBabel({
presets: [es2015Preset] // es5检查机制
})
)
.pipe(uglify()) //调用压缩组件方法uglify(),对合并的文件进行压缩
.pipe(gulp.dest("./public")); //输出到目标目录
});
// 压缩public目录下的css文件
gulp.task("compressCss", function() {
var option = {
rebase: false,
//advanced: true, //类型:Boolean 默认:true [是否开启高级优化(合并选择器等)]
compatibility: "ie7" //保留ie7及以下兼容写法 类型:String 默认:''or'*' [启用兼容模式; 'ie7':IE7兼容模式,'ie8':IE8兼容模式,'*':IE9+兼容模式]
//keepBreaks: true, //类型:Boolean 默认:false [是否保留换行]
//keepSpecialComments: '*' //保留所有特殊前缀 当你用autoprefixer生成的浏览器前缀,如果不加这个参数,有可能将会删除你的部分前缀
};
return gulp
.src(["./public/**/*.css", "!./public/**/*.min.css"]) //排除的css
.pipe(gulpif(!isScriptAll, changed("./public")))
.pipe(gulpif(isDebug, debug({ title: "Compress CSS:" })))
.pipe(plumber())
.pipe(cleancss(option))
.pipe(gulp.dest("./public"));
});
// 压缩public目录下的html文件
gulp.task("compressHtml", function() {
var cleanOptions = {
protect: /<\!--%fooTemplate\b.*?%-->/g, //忽略处理
unprotect: /<script [^>]*\btype="text\/x-handlebars-template"[\s\S]+?<\/script>/gi //特殊处理
};
var minOption = {
collapseWhitespace: true, //压缩HTML
collapseBooleanAttributes: true, //省略布尔属性的值 <input checked="true"/> ==> <input />
removeEmptyAttributes: true, //删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: true, //删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true, //删除<style>和<link>的type="text/css"
removeComments: true, //清除HTML注释
minifyJS: true, //压缩页面JS
minifyCSS: true, //压缩页面CSS
minifyURLs: true //替换页面URL
};
return gulp
.src("./public/**/*.html")
.pipe(gulpif(isDebug, debug({ title: "Compress HTML:" })))
.pipe(plumber())
.pipe(htmlclean(cleanOptions))
.pipe(htmlmin(minOption))
.pipe(gulp.dest("./public"));
});
// 压缩 public/uploads 目录内图片
gulp.task("compressImage", function() {
var option = {
optimizationLevel: 5, //类型:Number 默认:3 取值范围:0-7(优化等级)
progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片
interlaced: false, //类型:Boolean 默认:false 隔行扫描gif进行渲染
multipass: false //类型:Boolean 默认:false 多次优化svg直到完全优化
};
return gulp
.src("./public/medias/**/*.*")
.pipe(gulpif(!isScriptAll, changed("./public/medias")))
.pipe(gulpif(isDebug, debug({ title: "Compress Images:" })))
.pipe(plumber())
.pipe(imagemin(option))
.pipe(gulp.dest("./public"));
});
// 执行顺序: 清除public目录 -> 产生原始博客内容 -> 执行压缩混淆 -> 部署到服务器
gulp.task(
"build",
gulp.series(
"clean",
"generate",
"compressHtml",
"compressCss",
"compressJs",
"compressImage",
gulp.parallel("deploy")
)
);
// 默认任务
gulp.task(
"default",
gulp.series(
"clean",
"generate",
gulp.parallel("compressHtml", "compressCss", "compressImage", "compressJs")
)
);
//Gulp4最大的一个改变就是gulp.task函数现在只支持两个参数,分别是任务名和运行任务的函数
3 最后 hexo clean && hexo g && gulp && hexo d 就可以了。
注意,很可能你会运行到第三步,也就是运行gulp压缩命令时会报错,如图所示:
那是因为gulp安装的本地版本和hexo自带的版本不对应导致,第三步gulp压缩可以用下面命令强制使用本地版本:
node ./node_modules/gulp/bin/gulp.js
有时候我们想换一台电脑继续写博客,最简单的方法就是把博客整个目录拷贝过去,就是这么暴力。不过,这种方法有个问题就是要是那天电脑崩了,本地源文件丢失了,比较麻烦,所以这时候就可以将博客目录下的所有源文件都上传到github上面。
首先在github博客仓库下新建一个分支hexo,然后git clone到本地,把.git文件夹拿出来,放在博客根目录下。
然后git branch -b hexo切换到hexo分支,然后git add .,然后git commit -m "xxx",最后git push origin hexo提交就行了。
具体效果可以看我的博客源文件仓库:传送门。
大家也可以先用下文hexo安装方法安装完hexo,然后直接git clone -b hexo
https://github.com/shw2018/shw2018.github.io.git克隆我的所有源文件,这是我目前修改完的基本没bug的定制化的博客,可以直接拿来用。
文:http://zcfy.cc/article/1417.html
在这篇推文中,我收集使到一些使得网页设计师和开发人员更方便网站建设的站点。这些站点都有精心编写的,明确的,内容充实的的文章,内容包含对CMS之如WordPress讨论,Photoshop工具,CSS和HTML教程代码,对用户体验的想法(UX)和用户界面(UI)的提示、技巧、资源和赠品。 在今天的帖子中,我们将一睹55个最好的网页设计师和开发人员博客和网站。请注意站点不以排名先后论英雄。
1. Web Designer Depot
Web Designer Depot是全球设计师之间的聚集地,在这里有设计师们分享为来帮助发展设计社区功能而分享的文章和教程。 站点主题包括HTML 5,CSS3,响应式设计,排版,可用性,jQuery,移动应用程序,资源,业务,自由职业者,灵感等。
2. InstantShift
InstandShift是一个流行于网页设计师和开发人员的社区。有很多关于WordPress,网页设计,CSS,工具,教程,字体,摄影等很多优秀的帖子。
3. CSS-Tricks
这是由Chris Coyier1人创立最初只涵盖CSS,到现在有11人的团队,涵盖网页设计和开发的各个方面网站。 他们的内容包括文章,视频,代码片段、教程,新闻,基本资料等。
4. Hongkiat
这个网站自2007建立年以来,已经为设计师,开发人员,工程师和博主提供了一系列的文章,教程,推荐的工具,提示和技巧。 他们喜欢写关于插件,工具,桌面和移动应用程序,小工具,天才般的想法等任何令人感兴趣的任何东西。
5. Six Revisions
该网站由Jacob Gube于2008年推出,涵盖了设计和构建网站及应用程序的网站设计和开发的整个流程。 他们发表文章,新闻,教程,指南等等。 该网站主题涵盖的范围从Photoshop到自由职业者和之间的一切。
6. Smashing Magazine
这个网站由Vitaly Friedman和Sven Lennartz创立,为设计师和开发人员提供了一系列的文章,教程。站点主题包括设计,用户体验设计,代码,WordPress,移动应用程序和设计,图形等。内容涵盖软件,概念,新闻等,也包括CSS,Photoshop,电子商务,插件,网站主题等等。
7. Vandelay Design
这个网站的重点是提供创意,为小企业主和企业家配备开发他们的经营理念的工具。 他们站点有很多关于网页设计,写作,网络开发等等的文章。 他们也有链接到免费资源,一个包含高级资源的商店,他们通过提供免费的WordPress主题回馈社区。
8. TheNextWeb (Design & Dev)
该网站自2006年成立以来一直致力于国际技术新闻,设计,商业,文化等领域的文章发布。其内容包括入门指南,代码,UX设计,关于交易和课程的链接和新闻,设计活动视频,硬件,软件,评论,即将到来的活动,平面设计等。
9. SpeckyBoy
Paul Andrew在2007年10月建立了自己的自由职业者站点。现已发展为为一个网页设计杂志站点。 它拥有大量的教程,资源,节省利用的技术,甚至鼓舞人心的艺术。 主题包括网页设计和开发,平面设计,移动开发,广告,设计风格和趋势,技术新闻等。
10. A List Apart
这个网站是由Jeffrey Zeldman于1998年建立的。 该站点文章专注于网页设计灵域,面向设计师,开发人员,建筑师,专家,策略家,项目经理和作家开放。 站点主题包括代码,内容,设计,商业和工业,工具,技术,UX等。
11. FastCo Design
这是一本专注于商业和设计之间结合的技术杂志站点。它涵盖了广泛的主题,包括电子,UX,平面设计,建筑,时尚,消费产品等等。 在这里的设计师提供见解,意见,提示,新闻等等更多信息。
12. DesignShack
这个设计网站发布了启发灵感的网页设计文章、布资源和教程。他们专注于设计和收录了网上最伟大的项目。 他们定期发布教读者创造自己设计的新技术的文章,并分享行业的每日新闻。该站点主题包括网站,排版,商业品牌,快捷方式等等。
13. Spoon Graphics
这是由Chris Spooner建立的设计博客。 他分享一些贴士,资源和灵感,以帮助各阶段教育水平和技能水平的设计师。内容包括教程,文章,视频,新闻和免费资源的链接。主题专注于平面设计,图形软件,排版,模板,标志等。还有一个只供会员的下载的区域。
14. CoDrops
这个设计博客是由是由网页设计师兼开发人员Manoela Ilic和Pedro Botelho共同搭建完成的。 它开建立之初是想作为实验博客,后面成为一个热衷于分享对网页设计和网站开发的社区。团队成员及其他贡献者一起发布有关最新网络趋势,技术等的文章和教程。站点主题包括教程,赠品,CSS参考目录,在线实验区域,讨论网页设计概念的蓝图,以及包含来自社区的设计和新闻资源的集合。他们还主持有奖问答节目。
15. TutorialZine
本网站是由来自保加利亚瓦尔纳的网站开发人员和设计师团队建立的。该站点文章包括小贴士,教程,赠品,编辑,UI,UX,新闻和在线实验。文章内容涵盖很多代码开发,包括HTML5,CSS3,jQuery,JavaScript和PHP。他们甚至有一个免费的jQuery电子书。
16. HackingUI
这是一个由Sagi Shrieber和David Tintner创立的在线杂志,主要是针对互动设计和前端开发。 它涵盖设计,代码,赠品,灵感,生产力,素描等各个领域。他们有许多教程和文章,包括Photoshop,CSS,JavaScript,商业,个人生活,免费图标链接,模板,赠品,有趣的网站,评论等等。
17. Web Design Weekly
这是由由Jake Bresnehan创建和维护一个周刊杂志和博客网站。杂志包括标题,文章,工具,资源,灵感,工作等。杂志和博客都包括关于编程代码(CSS,HTML等)等文章教程。大多数内容在收录在电子杂志中,并通过电子邮件推送给用户这里非常注重代码。
18. David Walsh
这是JavaScript和HTML5专家David Walsh的博客。 它包含大量的文章和教程,主要侧重于前端技术。站点主题包括代码(CSS,HTML,AJAX,JavaScript等),开发软件,资源链接,网站主题,设计概念,演示,移动端,浏览器等。
19. Naldz Graphics
这是由Ronald Bien于2008年创建的设计博客。它展示了设计社区里的教程,赠品,灵感,资源等。站点内容包括文章,教程,赠品和WordPress主题。 它有很多的链接到良好的设计示例,免费图标,PSD模板,宣传册设计,标志设计等等。
20. Design Beep
这个博客包含了许多关于设计和开发的主题。主要包括文章,教程,工具,资源,赠品和灵感等几大块。 涵盖了图形,标志,排版,网页设计,Photoshop,WordPress主题和插件,CSS,Illustrator,jQuery等等。 它有很多贴士,下载链接,评论,收藏等。还有一些提示最佳实践的贴士和广泛适用的主题。
21. PixelHint
这里是一个专门发布Web UI设计教程网页设计博客。他们还分享免费的供网页设计师和开发人员下载的网站模板和网络资源。 他们讨论网页设计最新趋势和技术方法,以及创建网站UI的最好的方法和技巧。 该博客包含大量的教程和免费资源链接,发展概念和代码教程。 免费资源包括图标和PSD模板。
22. PixelBuddha
这个网站是尼克弗罗斯特和格雷格拉宾。站点内容包含用于Web开发人员的免费且专业的资源。 大多数资源是图形。 资源包括动画,照片,字体,效果,HTML,图标,模板等。站点文章还会讨论如何获取资源。部分高级资源还会有一个免费版本。
23. GraphicBurger
这个网站的从Raul Taciu的Cluj-Napoca,罗马尼亚和专注于高质量的设计资源是免费的。资源包括独有的PSD文件,还有来自世界各地的免费素材。资源包括模型,UI工具包,图标,文字效果,背景等。文章详细讨论了产品,并提供了下载链接。
24. Queness
这是一个专门用于网页设计和开发的博客,其中包含大量教程和代码片段。该站点类别包括技术,教程,网页设计,网站开发,WordPress,JavaScript,移动开发,排版等等。 文章包括新闻,免费资源,资源链接,主题合集等等。
25. Inspirationfeed
该站点由Igor Ovsyannykov管理,提供有关设计,商业,创办企业的精神,WordPress,图形,交易和职场自我成长的信息。文章包括教程,灵感,博客,免费资源,新闻,主题,纹理,壁纸,SEO,社交媒体,标志,字体等等。 还有视频教程和免费资源的链接。
26. DesignWoop
这个博客提供了许多文章给设计师和开发人员。站点主题包括工具,赠品,设计理念,灵感,面试,WordPress,主题,插件,方法小贴士,教程等。文章广泛的包含了教程、集合和链接等领域。链接包括CSS动画片段,WordPress主题,图标,排版,优秀的网站设计案例,线框图工具等等。站点的教程包括Photoshop,CSS,Sketch等等。
27. CSSReflex
这个网站由来自巴林的Naeem Noor创建并维护,专门面向于网络开发人员、设计师和编程人员。站点提供了很多工具,资源,代码片段和提示。内容包括博客,CSS生成器,CSS滤镜效果,CSS演示,响应式计算器和视频。它讨论许多方面如博客,服务器,UI设计,WYSIWYG生成器,图标,架构,模板,开发人员的浏览器扩展,资源链接等等。
28. Viget Inspire
这个博客来的诞生是来自一个更大的项目,是由布莱恩·威廉姆斯,安迪·兰金和Wynne“流行”威廉姆斯于1999年成立。博客涵盖了设计和各种动效。站点主题包括UX,颜色,可访问性,新闻,事件,实验,实验,品牌管理,APP,游戏,插图,教程等等。
29. WinningWP
这是一个曾获奖的博客,由来自伦敦的布林威尔逊建立并运营,专注于WordPress相关的技术和资源,给任何对WordPress感兴趣的人提供有用的提示。站点的内容由来自世界各地的网页设计师,程序员和专业创意者提供。站点主题包括网站主题,插件,代码托管,SEO,安全性,性能,教程,提示,博客,系统组件,设计,营销,社交媒体,新闻,周边趣事等等。 尽管建立网站的初衷是专注于WordPress但也包含其他CMS。
30. Designrfix
这个网站致力于提供一个平台给所有志同道合的设计师一起交流技术和分享灵感。它包括灵感,教程,赠品,资源,平面设计,网页设计和商业活动。 主题包括移动平台,内容管理系统,CSS,jQuery,WordPress主题,工具,资源,图标,培训视频链接,插图,UI,UX,编码,Photoshop等等。
31. Creative Overflow
这是Jacques van Heerden建立的在线设计杂志。该网站是通过发布文章,建议,教程,资源和灵感以达到激发艺术家变得更好的目的。站点内容包括许多热门主题和目录,如收藏,免费资源,新闻,访谈,WordPress,新闻,赠品等。文章包括有关品牌,WordPress主题,商业发展,电子商务,徽标,营销的信息,甚至为您提供创意商业提供建议如何选择打印机。
32. One Xtra Pixel
这是一个为新加坡设计师和网站开发人员而设立的在线杂志。站点提供了许多资源,文章,教程和链接。主题包括设计,图形,WordPress,CSS,社交媒体,开发,免费资源,工具包,事件等。提供了一步一步的教程包括有关编写代码,在Photoshop中修改图像。甚至有一个连环图专们针对设计和Web开发的,偶尔也有其他主题的漫画。
33. Noupe
这是由来自德国的Commindo Media GmbH&Co. KG建立的博客。站点的内容专门为Web开发人员和设计师而编写的。站点主题包括网页设计,排版,图形,CSS,JavaScript,Ajax,广告,市场营销,WordPress,电子商务,自由职业者,灵感等等。 文章包括设计教程,编写代码,使用图形程序,SEO,免费资源,卡通,主题,插件,提示,技巧等等。
34. InstantShift
这是一个为网页设计师和开发人员设计和提供灵感的博客。它每天都有资源推荐,内容包括灵感,文章,教程,赠品,网页设计,WordPress,字体,CSS,图标,摄影,Photoshop,JavaScript,Illustrator,平面设计,信息图表,案例,logo,新闻和更多。
35. WPKUBE
这个网站是由Devesh Sharma创立的。它主要集中在WordPress,包括学习指南、教程方法、插件、新闻、评论、提示和技巧、插件、主题,评论、安全、SEO、初学者指南和代码等。 它包括许多资源的链接,例如工具,代码托管和优惠券。站点文章是由WordPress专业人员写的,内容广泛,面向各个级别的从业人士。
36. Fresh Web Dev
这个网站涵盖网页设计和开发,重点是WordPress,Javascript,CSS,PHP,设计,HTML5和其他各个方面。站点它包括WordPress,Photoshop,编写代码,Linux服务器开发和配置,字体,图形等产品的文章和教程。他们还提供交易和免费资源的链接。内容由专业的设计师和开发人员为其群体所写。
37. DesignM.ag
这是一个基于社区的网站,包括博客,设计图库,用户提交的新闻和招聘专区。博客包括工具,图标,主题,代码片段,字体,图形等资源。教程包括Photoshop,网页设计等。站点主题还包括采访,灵感,WordPress,设计师案例,免费资源,排版,UI等。该站点涵盖了所有的网页设计的方方面面。
38. Creative Market Blog
这个博客有很多关于网页设计和前端开发的教程。它包括许多文章和贴士,如字体设计和优化排版,使用Photoshop的小贴士,推荐书籍的列表,解决常见的设计问题的方法论,使用负空间,WordPress,PHP,HTML,CSS,灵感等。目标受众是从初级到高级的网站开发人员和设计师。
39. SitePoint
这个博客由Mark Harbottle和Matt Mickiewicz创立。站点提供新颖的想法,概念和新技术等内容,还包括文章、课程、教程、书籍或任何与设计和构建网站相关的内容。网站用户讨论代码(HTML,CSS,PHP,JavaScript和Ruby),移动开发,WordPress,设计,UX,商业运营,以及任何与网络技术相关的内容。
40. Web Design Ledger
这是一个涵盖网页设计和开发且同时提供了大量的资源的博客。站点主题包括网页设计、灵感、UI、图形、访谈、网络开发、评论和内容管理系统。文章包含免费资源链接,时事新闻,APP教程,工具,字体,图标,矢量图形,WordPress,Drupel,Ghost,编码,电子商务,移动开发,可穿戴设备,排版设计等信息的链接。
41. envato tuts+
这是一个有很多文章的钱打U呢和设计的教程网站。站点类别包括Photoshop,Illustrator,矢量,插图,工具和提示,灵感,新闻,设计,文本效果,CSS,HTML,UX,UI,工作流,设计理论等等。文章针对的是初级阶段,内容十分广泛。还有一些可供订阅的课程。
42. HappyCog’s Cognition Blog
这个博客来自Happy Cog的创始人Jeffrey Zeldman建立的,主要关注设计,经验体会和代码。站点主题包括流程,设计,前端开发,团队,项目管理,社区,职业,战略,公司和客户关系。文章包括案例研究,教程,方法提示,商业运营和客户关系处理,排版,编码,Photoshop等等。大多数文章是是精心编写和详细的理论研究成果。
43. WebAppers
这是一个专门为Web开发人员和设计人员分享开源资源的博客。对于设计师,站点有免费的图标,字体,表,股票照片,画笔和设计灵感。对于开发人员,有很多JavaScript和Ajax组件,如插件,菜单,工具提示,图表,轮转图,日历,模态窗等。它还涵盖代码托管,电子商务,社交媒体,工具,安全,统计等等更多。该站点的文章详细和前沿。
44. Web Field Manual
此博客提供了一个用于UX和UI设计的资源列表。该站点是由网页设计师策划和维护,包含了大量的网页设计文章和资源。主题设计包括人们趋势,灵感,规范的和不规范的风格指南,工作进程,工作流,工具箱,优秀的和拙劣的网格和排版,动画制作的最佳与最坏方式,设计准则的最佳与最坏遵守,和可访问性的最佳与最坏标准。每个类别都有详细的资源列表。站点主题包括编码入门,最佳实践,灵感,参考,流行趋势,性能,CSS/SASS,SVG,JavaScript,工作流,工具箱和各种库。
45. UXPin Blog
UXPin是供网页设计师使用的产品设计平台。他们的博客侧重于各方面的各种平台的用户体验。它包含大量关于用户体验设计,移动端,设计趋势,最佳实践,设计小贴士,交互设计,UI设计,网页设计,元素和模式,过程,UXPin,线框,平面设计,团队协作,可用性,原型,草图,样机,Photoshop等等。该站点的文章都非常实用和详细。
46. Good UI
这是一个致力于制作最好的网站布局,以改善用户界面的网站和博客。网站介绍最佳实践,布局,如何合并功能以达到更简洁的设计。大力推荐使用社交途径,来无论何处可以何处响应行动呼吁,来如何使可点击和可选择的不同样式表,来如何推荐一个选择来帮助用户决策,也提供了允许用户取消错误行为的决策,来具体证明明最佳的受众是谁,来显示更强的对比,使用更少的字段,合理显示所有选项等等。站点的信息都很简短,简单,易于理解。
47. Spyre Studios
这是一个包含很多文章和教程的网页设计和开发电子杂志。站点目录包括设计,展示,非同寻常的灵感,教程,CSS,资源,工具,UX,移动端,免费资源,可用性,商业,排版,Illustrator,Photoshop,极简主义,工具等。还有很多免费下载的元素,图标,字体,PSD模板等。文章的大小合适阅读,包含和很多的分步细节。
48. Skyje
这个博客成立于2008年,是一个面向网页设计师和网页开发人员的网站。主题包括社交网络,新闻和与Web 2.0相关的一切。站点主题包括设计,WordPress,社交媒体,SEO,标志,灵感,教程,免费资源,字体,图标,Photoshop,模板等。教程主要覆盖图形以及重点关注Photoshop。还包括插件、代码(JavaScript和CSS)和Illustrator。
49. MonsterPost
这是世界优秀网页模板站点Template Monster的设计博客。站点主题包括新闻,文章,工具,赠品,灵感,信息图表,WordPress和Joomla。 教程包括文章和视频,并重点关注WordPress,排版,CSS,HTML,jQuery,Photoshop,Illustrator,网络技术,Web开发方法论,以及设计网站和UI元素。
50. UX Matters
这本网络杂志由Pabini Gabriel-Petit于2005年创立,为UX开发人员提供视野和灵感。它提供了许多有价值的建议,最佳实践,主题观点,以及探索UX设计的战略方面的深层思考的文章。主题包括网页设计,移动端,用户研究,视觉设计,web应用程序设计,设计流程,访谈,评论,内容创建,通信设计,架构,商业,战略等等。
51. Usability Geek
这个博客开始由Justin Mifsud在2011年建立的,出发点是作为一个提升网站可用性的重要性的兴趣交流网站。Justin想提高网页设计师和开发人员在商业和政治网站可用性设计的意识。站点主题包括可用性,指南,测试,用户体验(UX),商业运营,转换,人机交互(HCI),术语,评论,资源和信息架构(IA)。
52. Boxes and Arrows
这是一本2001年开始的同行写的杂志,讨论所有关于设计的东西。站点主题包括交互设计,信息架构,平面设计,甚至商业服务设计。 站点目录包括设计原则,发现,研究和测试,过程和方法,界面,可交付成果和文档,书评,会议和活动,软件和工具,以及工作场所和职业。
53. Web Design Dev
这个网站专注于网页设计包含所有东西。站点主题包括赠品,网站模板,WordPress主题,Photoshop,Dreamweaver教程,Illustrator,评论,灵感,网站开发,CSS,HTML,合集,编程,网上兼职,访谈和SEO。该站点涵盖了从移动界面设计到开发电子商务网站开发之间的方方面面。
54. Impressive Webs
这是Louis Lazaris的个人博客,作者是一个自由的网络开发人员,杂志站点SitePoint的HTML/CSS内容的管理编辑,和两本关于HTML/CSS的书的作者。博客内容大多是关于HTML、CSS和JavaScript的文章。Louis在他的博客讨论相关的概念,原则和bug。博客也它包括许多文章、教程,CSS基础,屏幕录像,新闻,评论等等。这个博客站点强调的代码和设计的结合。
55. Design Bombs
最初作为一个网页设计展示画廊,现已成为分享网页设计的想法,文章,教程和资源,以帮助网页设计师提升他们技艺的平台。站点内容包括WordPress主题和插件,网站设计的综述,赠品,独家优惠等等。网页设计师可以这里找到很多高品质的资源。
言尽于此,学习之路不止。 Have a nice day!
*请认真填写需求信息,我们会在24小时内与您取得联系。