最好的办法当然是自学html+css+少量的js知识,然后就可以在电脑里开开心心的制作网页啦,需要耗费时间和精力认真学习哦,这种方法适和时间精力比较充裕的学生朋友,且有一定的兴趣。
不过这个只是制作过程,很多朋友忘记了还有一点,你还得会一些设计知识才可以制作,因为你得保证页面有一定的颜值,这就是设计范畴的事,虽说不可以貌取人,但我们可以以貌取页。
当然,简单的页面搭建和设计也可以使用线上小白工具:超级单页, 都是设计好的模块,这个适和那种没有过多时间自学代码和设计的小白朋友哈。

社交网络的时代,个人页面在每个平台上都有,但是又似乎并不属于个人。于是还是想建立独立性更高的网页,经常能把平常的想法梳理总结一番。听过了很多道理,看过了很多道理,但没有内化于心外化于行,又怎么过好这一生。
尝试过流行的博客软件如Wordpress,一般都有点复杂,用到LAMP数据库系列管理内容,部署在AWS上,做这个主要为了练习技术,做个人网页就有点大材小用了。而且每个月差不多要¥40多,感觉没啥必要。
长久之计还是选择免费的平台,利用GitHub Pages,选用静态网页生成器Hexo(其他Jekyll之类也都大同小异,对于我来说都是功能远大于需求)。工作过程就是在自己的电脑上用Markdown写字,Hexo把Markdown文档转变成html格式,然后GitHub pages作为服务器托管网页文件。
当然首先挑选一个好看的主题Next,模版选了Mist,具有一个很大的使用和维护的Community很重要。具体使用操作如下。
注意
Hexo的配置修改的在_config.yml文件中。
主题Theme的修改在其目录下面的_config.yml文件中。

在本地渲染成网页内容。
(base) Zz:HexoBlogzz zhouzhang$ hexo generate INFO Start processing INFO Files loaded in 691 ms
INFO Generated: 2018/02/14/hello-world/index.html
.....
推送到Github上,GitHub的账号和密钥在_config.yml中
(base) Zz:hexo zhouzhang$ hexo deploy INFO Deploying: git INFO Clearing .deploy_git folder... INFO Copying files from public folder... INFO Copying files from extend dirs... 位于分支 master 无文件要提交,干净的工作区 ...... INFO Deploy done: git
更新Hexo
(base) Zz:HexoBlogzz zhouzhang$ npm update ......
查询当前version
(base) Zz:HexoBlogzz zhouzhang$ hexo -v hexo: 3.9.0 hexo-cli: 1.0.4 ......
http://Hexo.io
GitHub Pages
Markdown Cheatsheet
使用个人域名
photo gallery plugins
RSS
今天写这篇文章主要为了我这个计算机小白梳理完整整个搭建网站的过程和思路,同时也分享给大家。这个搭建过程花费了8个小时,从中午11点整到晚上7点,结果是嗯...还行吧,总算整明白了。先说说思路吧!
我想搭一个自己的官网,用于设计作品的分享,一个实时更新的作品集,后续可以链接上我的个人导航栏和素材库,当然这些都是后话了,主要还是要一个展现自己作品的官网。
2.事前准备
2.1预算
200块一年
购买域名/年+154(云服务器ECS+云数据20g/1m)/年
2.2渠道和方法
2.2.1找其他大网站
我找了一些做网站的大公司,比如凡科、中企动力等,前期都是开始免费注册免费搭建。可是有一个弊端,域名都是二级,还不可以挂自己的域名,要挂自己的就要买那种年费要上千块钱的服务费才可以。很多人可能以为我就要一个简单的网页临时上一下有一个百度能搜到的官网就可以,别天真了!二级域名前头挂靠的就是这个网络公司,想要百度搜索到你还要多买他家的百度广告位的服务你才能在百度的前几页刷到你。不过像这种大公司可商用的网页模版比较丰富这是事实,但是也是看会员等级开放使用的。这是我都是一个个的问客服问出来的。
2.2.1自己从零开始
通过知乎、抖音、小红书、百度各种渠道查出来的所谓的免费搭建网站的坑之后。我决定自己搭,从零开始一点点的完成。于是乎我开始了和弟弟长达8小时的跨洋连线,远程一点点的教我。首先我们要了解一些基本知识,就拿搭房子来比喻吧。
a.地皮=服务器/虚拟机
b.门牌=域名
c.上户口=ICP备案
d.毛坯房=workpress
e.精装房=workpress+页面设计
3. 开始搭建
关于这一点知乎上热心的网友已经解释的很清楚了,
如何自己搭建一个个人网站?
3.1 先去购买域名。我是去的阿里云,现在618有活动。我买了一个后缀是.com的,以前不懂网址后缀。com\.cn\.net都是什么意思。现在知道了,官网都有详细的说明。根据个人需要和喜好就可以了。下面是我放的关于后缀的解释和相关网址。这次的活动我顺便也买了服务器和数据库。(后面搭建的时候知道这个数据库不在服务器里,整个人都不好了......浪费了我50多块钱,还不如我另外一个免费的)

3.2 注册完记得要要解析一般是24小时内就可以通过了,弄完之后要备案。点击左上上角的备案,根据步骤一步一步的填写信息,在申报理由的那栏里要写20字以上的理由,并且要记住!是的没听错要记住,因为2-3天以后会有小姐姐或者小哥哥打电话给你,会随机提问你填写的内容,如果回答迟疑的话就不能通过备案,那你就要重新来啰。这里你填完信息后提交会提示你两天后在提交,那没关系的,因为备案要过工商,所以会比较久,咱们把该填的还是要填的。过两天后再提交一次。


阿里云域名注册和备案说明
什么是阿里云域名服务_产品简介_域名-阿里云
3.3现在域名是你的了,但是你还有在地皮上挂上你的大名,你需要将服务器这个地皮与域名这个门牌联系在一起。所以你要找到服务器对号入座。这是最难的地方。因为我是苹果系统,so.....
这是哔哩哔哩找的教学视频,我一两句话也说不清楚,此处省略N个字。
2小时教会你搭建一个博客网站,使用阿里云服务器部署一个wordpress网站_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
我这里解释一下里面使用的Xshell就是一个能在服务器里解析Wordpress的插件。苹果电脑不用下载,在“云服务ecs”-概览-实例ID(点击页面跳转)-远程连接-workbench-输入用户名和密码-进入代码编辑页面,把workpress写进去。



3.4找可以写代码框架的软件
登录workpress的编辑页面开始的网页框架搭建和页面设置之旅了。


就这样,用我笨拙的语言记录下了这次自己搭网站的过程。这只是开端后面的事情代码的校对和装修还要头疼一阵子呢。虽然有现成的模块可以以随便套。
建个网站一年多少钱?
如何自己搭建一个个人网站?
如何逐步构建一个优秀的外贸网站?
如果你有这些问题,那你看完我写的这次实际建站的过程,你就应该全明白了。
首先看一下实际的费用。我在阿里云申请的域名
http://www.tianjiju.com
和主机,费用总共是261元每年。
因为我用的是wordpress免费模板,所以没有后续的其他费用。
如果新手需要用一个付费模板,那么可能还要再加几十美金的模板费用。
不管如何,一年费用最多就几百块人民币。

实际建站需要付出多少时间呢?
这次建设,从头到尾,估计实际工作时间一二十个小时(只包含主体框架建设时间,不包含后续博客上传时间)。
那么建设一个个人网站的工作量有多大,工作步骤有哪些呢?
下面我罗列一下我这次建站的详细过程。
1.域名和主机空间
为了省事,我直接在阿里云上一站式搞定。
2.备案
做国内网站,备案不可缺少。
这个申请备案过程,才是整个建设网站中最花费时间的。
3.域名绑定
备案下来后,在阿里云后台绑定域名。
注意,阿里云的域名绑定容易出问题。
有www前缀的域名(天玑情报 - 解读股票投资和外贸电商创业的财富创造密码)和没有www前缀的域名(天玑情报 - 解读股票投资和外贸电商创业的财富创造密码)都需要绑定。
绑定完需要测试,看着两个网址能否都有效。
经常有这种情况,一个域名有效,另外一个域名无效。
这个排查过程有时还很麻烦,阿里云后台都有详细的教程。
4.上传网站建站框架
我选择wordpress。所以从wordpress网站下了一个新版本。
用ftp程序连上网站后台。
把wordpress压缩包通过ftp上传。
实际上,因为wordpress下载时的压缩包自带一个上级路径。
我是先把压缩包解压缩,重新再压缩,去掉这个上级路径。
这样上传到网站后台的根目录下,直接解压缩就可以了。
5.直接上传robots.txt文件
因为网站前期不让搜索引擎搜录,所以可以制作一个禁止抓住的robots.txt文件,用ftp上传到后台根目录。
6.设置网站后台的php版本和mysql数据库账号密码
wordpress版本对于匹配的php版本和mysql数据库版本有要求。
所以,要根据相关的说明在网站后台设置。
7.初始化wordpress
用网站后台的数据库账号密码等初始化wordpress。
8.设置网站模板
我这个是博客网站,所以选择了一个免费的主题模板generatepress,效果非常好,不管是中英文博客,都强烈推荐可以用这个模板。
9.建设网站的目录结构
这个过程是除了网站备案之外第二个比较花时间的步骤。
这个目录结构对于来访者的浏览体验,对于搜索引擎SEO都是至关重要的。
所以值得花上时间去好好梳理。

10.设置网页的永久链接
新手可能容易忽略这点。
需要在网站后台设置。

11.修改底部的版本声明,增加备案信息
因为我用的是免费模板,不提供这个修改的功能。需要手工修改代码,但是很简单。
如果新手,可以升级成付费的模板,就可以在后台修改了,无需要修改代码。
12.添加百度统计代码
在百度统计网站注册账号,关联我们自己的网站,然后把百度提供的统计代码添加到后台的代码中。

百度统计网站有一个bug,就是我的网站后台已经添加好统计代码,但是点击上图中的”开始检查“,结果始终不对。
这时,需要把检查范围切换为“其他网页”,然后输入网址,再重新检查,就可以了。
13.修改robots.txt文件,允许搜索引擎抓取合适的页面
14.接下来就可以发布文章了
注意GeneratePress主题可以允许一篇blog文章同时关联两个目录。
譬如我一篇文章,是读书笔记,但也是投资的案例,那么就可以同时关联这两个目录分类。
总而言之,个人建设网站,是非常简单的,也非常省钱,省时间。
我本人有丰富的建站经验,不管是wordpress企业网站,woocommerce电商网站,还是shopify独立站。
如果你有需要咨询建设网站细节问题的,可以关注我微信公众号,和我交流互动。
前段时间因为写一个个人的小程序,买了一个腾讯的服务器,还有一个域名,但是小程序只是用了域名来做CDN加速,(因为域名备案要有服务器,!!)
小程序已上架(先推一波: [gitHub代码地址])
服务器不用也是浪费了,所以又开始折腾写一个人人博客网站
对于一个前端而言,写前端页面不是一件难事,只要花点时间就可以了。而如何在服务器上发布只自己的网站却不是所有前端的同学都玩的溜。
本文就选用我觉得比较简便的法教一下大家如何写,以及用持续集成
发布自己的个个博客网站。
用到的东西:vuePress
、服务器和域名、gitHub仓库
先看网站效果
影音笔
惯例先发一张搬砖地点的图片:

ok,开始
作者blog源码
Node.js写个简单的后台
很多前端都会node.js,所以用node来写后台比较方便。
代码在这里vuePress-server
基础薄弱的可以拿来看看,直接用也可以(求赞)
其实就只有几行代码
const Koa = require('koa') const app = new Koa const static = require('koa-static') const path = require('path') app.use(static( path.join(__dirname, 'https://www.zhihu.com/topic/blog') )) app.listen(80, () => { console.log('success') })
上面代码的意思就是开启了一个80端口,访问时静态文件目录为blog(会默认访问blog下的index.html)
简单说一下如何在服务器上运行这个程序
- 服务器全局安装node
- 服务器全局安装git
- 新建一个目录用来存放vuePress-server代码(这里假设目录名为
www
) - 上传vuePress-server代码到gitHub仓库,像我们平时clone代码一样,将代码clone到
www
目录下 - 服务器全局安装pm2(有了node后可以用npm安装)(传送门pm2)
用pm2运行vuePress-server里面的app.js就可以启动80端口的服务了,但是现在我们写的博客网页还没有发布到blog目录下
下面介绍如何将博客网页上传到blog目录下:
gitHub Actions是gitHub的持续集成服务。可以看看阮一峰老师的文章:GitHub Actions 入门教程
简单来说就是可以在我们提交代码到远程仓库后,gitHub Actions可以自动触发,并执行我们事先设定的动作(action)。
这些动作指的是一系列的运行流程,而且gitHub Actions有一个actions的市场,github用户可以在那里发布自己写的action,也可以使用其他用户发布的action。
当你在gitHub创建了自己博客的仓库并上传了代码,在仓库的界面就可以看到这个Actions的入口:

点第二个红框就可以创建

上图第一个框是设定名称,第二个框就是要写的workflows了。
下面是我的:
# 名称 name: CI # 当master分支有push或pull_request的时候会触发 on: push: branches: [ master ] pull_request: branches: [ master ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # build是一个job的名称, build: # The type of runner that the job will run on runs-on: ubuntu-latest # 下面是一个个step steps: # 切换到master分支 - uses: actions/checkout@master # Runs a single command using the runners shell # 这一步是安装node.js - name: Setup Node.js environment uses: actions/setup-node@v2.1.0 with: node-version: '12.x' # 这一步是安装依赖,然后打包 - name: Run install and build run: yarn && yarn build # 上传服务器(下面的意思其实是用了社区别人封装的actions) # 通过设定自己服务器的用户名和密码,将打包后的文件夹public里所有东西上传到服务器的/www/vuePress/blog下 - name: Deploy to Server uses: hengkx/ssh-deploy@v1.0.1 with: # 以下为参数 USERNAME: ${{ secrets.DEPLOY_USER }} # 为了用户信息安全对敏感数据可以在secrets中配置请看下图 PASSWORD: ${{ secrets.DEPLOY_PASSWORD }} HOST: ${{ secrets.DEPLOY_HOST }} POTY: 22 // 默认就是22,但是之前没有写,不能成功。 SOURCE: 'public' TARGET: '/www/vuePress/blog'
因为服务器的帐号密码等信息不可公开,而本gitHub仓库是公开的,gitHub在setting里有密匙保护的机制

只要写完博客,提交一下代码到master分支上就可以了。而且vuePress用的是markdown方法写的,对大部分程序员来说都是会用的。markdown虽不是最好看的文本格式,但是其对文字标题内容有层次的方法,可图片可代码,对程序员来说还是非常友好的。
总结一些缺点:
- gitHub有点慢
- actions从运行到发布也不是很快
- 有时候会发生actons运行失败的问题
目前笔者主要的博客平台是思否。
所有的项目:
博客仓库
博客的node服务
博客网站效果
教程:手把手教你Wordpress(一)
初步完成环境安装与个人博客搭建
前言:
本文适用于所有建站新手,三岁刚开始建站的时候查了几天的资料才搭建成功,网上的教程大多不详细,所以我重新整理一份详细的流程,从建站到域名解析到域名备案最后到网站上线运行,当然在实操期间遇到任何问题都可以私信三岁,三岁会提供力所能及的帮助,也可以到我的个人站加入论坛一起讨论学习。本文主要写Windows版本的,linux由于没有图形化界面,安装环境、上传数据等都需要借助其他工具或者命令行,并不是很适合毫无基础的新手小白。Linux版本的会在后续编写上传。
1.域名
建站,首先你需要一个域名,目前国内主流的域名供应商有阿里云、腾讯云、百度云、华为云等,但是要注意的是,购买的域名和云服务器的服务商要是同一家,以免在后续域名ICP备案的时候无法备案,小编我就买了两台云服务器,血泪史啊。选择域名的时候可以选择自己喜欢的后缀和域名,但最好遵循域名选取策略来选取域名。价格从几元到上万不等,根据自己情况购买。
2.服务器
服务器可以是购买云服务器也可以自己购买物理机,但是物理机需要做内网穿透还需要向网络供应商申请固定的公网IP,所以新手推荐购买云服务器,自带公网IP。再次强调:购买的域名和云服务器的服务商要是同一家,不然会影响域名备案。如果你是学生或者第一次购买的话,腾讯云有较大的优惠力度,而且恰逢腾讯周年庆,服务器优惠力度较以往更大。一般选择入门性能的服务器1核2G 1M 就足够新建的个人博客使用了。
3.服务器选购

服务器的配置选择,活动地区选择离你最近的,操作系统选择windows server2016(对标win10,操作基本一致)数据中心版的即可。地区选择离自己最近的。其他的默认付钱即可。
4.查看服务器


下单以后,左上角信箱会显示有你购买的服务器的账号和密码,也会有短信通知。右下角选择云服务器会有服务器的IP地址。
5.远程到服务器


用公网IP地址就可以从本地电脑远程桌面到云服务器,按住键盘上的win键+R,(或者左下角搜索框搜索“运行”)输入mstsc回车进入远程界面,计算机填写云服务器的公网IP地址用户名一般是Administrator 密码查看获取到的密码。
6.安装xmapp集成环境
进入服务器后,安装xampp集成环境工具(可以本地电脑下载好复制进去,也可以在服务器里面直接下载。)下载地址刚打开安装包的时候有一个提示,直接OK跳过即可。后面就一路next,默认即可。安装好以后,这里首先不要启动先,先依次配置一下,若安装完成后如下图所示请继续,若不一致请私信三岁,我会帮你解决。

接着安装Apache与Mysql服务,点击左边的X号即可安装,如图则表示安装成功,然后点击Apache与Mysql右边的start按,启服务,如图则表示开启成功:


启动服务成功后,环境配置 这一部分已解决,就可以开始下一步骤,安装wordpress程序包。
7.配置数据库
将wordpress程序包里面的所有文件粘贴到环境根目录下,这时候一定不要先安wordpress,再去建数据库,小编建议先建好数据库再安装wordpress。程序包下载地址。

点击Mysql旁边的Admin,进入数据库配置页面,插入进入数据库页面(建议在服务器上安装chrome浏览器,可以自动翻译页面)
设置数据库语言为简体中文,然后点击新建数据库,名字根据自己喜好定义。编码格式选择默认


数据库建好后,点击数据库上方导航栏中的“权限”,然后新建一个数据库账户,新账号设置如下




注:数据库账号和密码自己设置,设置完成后点击生成密码,会自动将密码转码成MD5加密密码,记住自己设置的数据库账号以及生成的MD5密码,后续连接wordpress需要用
8.安装Wordpress
在服务器浏览器中输入:http://127.0.0.1:80/wordpress,就开始安装wordpress


安装完成后,会提示连接数据库,这时就需要设置网站名称,连接数据库

连接上数据库后需要设置账号,此账号即为网站管理员账号,一定要切记(如果忘记密码,点我获取解决办法)

设置 完成后会提示登录账号密码,输入刚才设置的账号密码即可进入网站后台;至此,网站搭建成功,你可以在后台安装主题、插件,上传自己的作品,更好的建设自己网站。

网站后台http://127.0.0.1/wordpress/wp-admin/
网站地址http://127.0.0.1/wordpress/
(到目前,网站的首页以及后台还只能在服务器上访问)
后记:
如果你是通过我文中"腾讯云"的链接在腾讯云购买的云服务器,在安装搭建过程中,可私信我,我会帮你解决,不是通过链接购买服务器的也可以联系我帮你解决问题,也可以搜索"三岁同学"到我的站点查看演示效果。此文章为系列文章,持续更新中,关注“三岁同学”不迷路哦。
下一篇:手把手教你Wordpress(二)Wordpress搭建完成后几个必要设置。
下下篇: 手把手教你Wordpress(三)域名备案、域名解析及域名绑定详细过程。
和现在的网站不一样,以前个人首页,是分首页和主页的
这两个有什么区别?我也纠结了一下
个人理解:
- 首页是输入域名,默认打开的第一个页面,用于展现个性
- 主页是网站最主要的页面,也是内容最丰富,链接最多的
首先打开 Dreamweaver UltraDev,新建一个站点,再给站点取一个名字:
互动服务娱乐网

添加首页,文件名叫:index 或 default
给网页取一个标题:欢迎来到互动服务娱乐网 - Welcome
先在页面上放插入一个图片
打开 Flash 4,开始制作简单 Gif


接下来,再添加一些寒暄的文字:
非常感谢大家对"互动服务娱乐网"的大力支持!
本站第4次改版完成!
点击这里发现更多>>>>(引导到主页)
至此,首页就差不多了。在 IE 里打开看看

本站动向的字体有点大,用那时流行的:9pt 缩小一点。
在 Dreamweaver 里新建一个样式表

字体选择:9 points,然后应用到选择的文字上
好了,完成。
让我们在浏览器打开看看:

完美!
接下来,我们准备搭建小站的主页了。
songday:如何做一个2000年风格复古的个人网站(1)开发环境准备songday:如何做一个2000年风格复古的个人网站(3)创建个人小站-主页songday:如何做一个2000年风格复古的个人网站(4)留言板保存留言功能songday:如何做一个2000年风格复古的个人网站(5)留言板查看功能
一个朋友买了一个云主机(就是300元3年的那种)
云主机配置是:
- CPU:vCPU 2
- 内存:2G
- 硬盘:40G
- 带宽:1M
- 公网IP:1个
- 预装的系统是:Windows 2008 R2
这台机器上,跑了一些他自己的东西,虽然机器整体性能不咋的,但是总觉得还可以再“挖掘”一些性能(挤一挤总是会有的),所以还在跑一个自己的博客。
最初他问我的时候,我就让他用 WAMP + WordPress,方便、省事儿,而且WP的插件资源一大推,教程也很多。
好的,这个方案干掉。
要省资源,可以用 Github 的 Pages,托管免费,还可以绑定域名。
试运行了几天以后,朋友反馈,觉得访问速度时快时慢,用户体验不能保证。
(我心想,你博客有啥用户?)
EN,那么再换一个吧。。
那么用静态网站生成器吧,这样,速度和资源,都有保证了。
于是,扔给他了一个链接:Static Site Generators - Top Open Source SSGs | Jamstack
说这里收集了应该是市面上最全的,什么口味儿的都有,包君满意!
链接扔过去了以后,朋友几天没有联系了。
- 朋友:我看了几种,后来看得眼睛都花了,最后反而不知道选啥了。
- 我:那你可以选比较流行的 Hugo,教程也多
- 朋友:嗯,看了。
- 我:如何?
- 朋友:Windows 用习惯了,看到文字性的配置,就头疼
- 我:那我这儿暂时还想不到有啥其它的方案了。
- 朋友:那么
- 我:啥?
- 朋友:我们自己撸一个呢?
- 我:啥?(为什么是我们?)
- 朋友:最近看了些CSS,想自己试试。(朋友做设计的)
- 朋友:之前看的那些框架、静态网站,都好复杂,想自己从 0 开始。慢慢摸索。
- 我:(嗯,你学 CSS 从 0 开始,起点是不错的!但是除了 CSS,还有其它一大坨呢。)
最后的方案就是:
Rust
我是 2017 年的时候了解到 Rust 的,那时已经发布了 2 年了。
看了它的设计理念、语言设计以及官方教程,我的内心就告诉我,这个就是我需要的语言。
然后,经历了从入门到纠结,再到放弃,再入门到放弃,期望借这个机会再准备入门。
Warp
Sqlite
就朋友那点流量,Sqlite 足以应付了
Sled
博客是写少,读多的。用 Sled 来充当一个缓存还是不错的
Yew
在那边还在边学边整HTML CSS 的时候,我这里先开始后端的工作。
博客内容
CREATE TABLE "blog" ( "id" INTEGER NOT NULL, "title" TEXT(64) NOT NULL, "markdown_content" TEXT(20480) NOT NULL, "parsed_content" TEXT(65535) NOT NULL, "tags" TEXT(256) NOT NULL, "created_at" INTEGER NOT NULL, PRIMARY KEY ("id" ASC) );
标签数据
CREATE TABLE "blog_tag" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" TEXT(32) NOT NULL, CONSTRAINT "name" UNIQUE ("name" ASC) );
用户信息(只有朋友一个用户数据,离线初始化进去)
CREATE TABLE "user" ( "id" INTEGER NOT NULL, "username" TEXT(32) NOT NULL, "password" TEXT(256) NOT NULL, PRIMARY KEY ("id") );
先初始化一个 git 目录,然后创建 workspace,包含 3 个目录
- backend 博客后端
- frontend 博客前端
- common 公共类
进入 backend 目录,创建一个 Rust bin 项目
在Cargo.toml
引入依赖项
[package]
name = "blog-backend"
version = "0.1.0"
authors = ["Songday <songday@yeah.net>"]
edition = "2018"
[lib]
name = "blog_backend"
[dependencies]
blog-common = { path = "https://www.zhihu.com/topic/common" }
ahash = "0.4"
base64 = "0.12"
bytes = "0.5"
chrono = { version = "0.4", features = ["serde"] }
comrak = "0.8"
futures = "0.3"
hyper = "0.13"
image = { version = "0.23", features = ["jpeg", "png", "gif"] }
lazy_static = "1.4"
lazy-static-include = "3.0"
parking_lot = "0.11"
once_cell = "1.4"
rand = "0.7"
v_htmlescape = "0.10"
subtle = "2"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sled = "0.34"
sqlx = { version = "0.4.0-beta.1", default-features = false, features = [ "runtime-tokio", "macros", "sqlite"], optional = false }
scrypt = "0.4"
tokio = { version = "0.2", features = ["fs", "io-util", "macros", "rt-core", "rt-threaded", "signal", "time"] }
uuid = { version = "0.8", features = ["v5"] }
urlencoding = "1.1"
warp = "0.2"
然后,定义一下个人博客的路由。
Warp 最自以为豪的就是它的Filter
概念(在定义路由的时候就到的)
Thanks to its Filter system, warp provides these out of the box: Path routing and parameter extraction Header requirements and extraction Query string deserialization JSON and Form bodies Multipart form data Static Files and Directories Websockets Access logging Gzip, Deflate, and Brotli compression
我定义的路由如下:
// 用户登录 let user_login = warp::post() .and(warp::path("user")) .and(warp::path("login")) .and(warp::path::end()) .and(warp::cookie::optional(var::AUTH_HEADER_NAME)) .and(warp::body::json::<LoginParams>()) .and_then(controller::user_login); // 用户登出 let user_logout = warp::get() .and(warp::path("user")) .and(warp::path("logout")) .and(warp::path::end()) .and(warp::cookie::optional(var::AUTH_HEADER_NAME)) .and_then(controller::user_logout); // 博客列表 let blog_list = warp::get() .and(warp::path("blog")) .and(warp::path("list")) .and(warp::path::param::<u8>()) .and(warp::path::end()) .and_then(controller::blog_list); // 博客标签列表 let blog_tags = warp::get() .and(warp::path("blog")) .and(warp::path("tags")) .and(warp::path::end()) .and_then(controller::blog_tags); // 根据博客标签展示博客列表 let blog_list_by_tag = warp::get() .and(warp::path("blog")) .and(warp::path("tag")) .and(warp::path::param::<String>()) .and(warp::path::param::<u8>()) .and(warp::path::end()) .and_then(controller::blog_list_by_tag); // 保存博客数据 let blog_save = warp::post() .and(warp::path("blog")) .and(warp::path("save")) .and(warp::path::end()) .and(auth()) .and(warp::body::json::<NewBlog>()) .and_then(controller::blog_save); // 展示某一篇博客文章 let blog_show = warp::get() .and(warp::path("blog")) .and(warp::path("show")) .and(warp::path::param::<u64>()) .and(warp::path::end()) .and_then(controller::blog_show);
刚刚定义好了路由,朋友发来了登录页面框架。
我打开看了,还有登录验证码。于是就准备查一下如何让Rust读取字体再在画布上画出来。
这时朋友又发了一个zip,说里面是用于显示验证码的图片。
好吧,省得我去查资料了。
于是,先新增一个显示图片的接口
let verify_image = warp::get() .and(warp::path("tool")) .and(warp::path("verify-image")) .and(warp::path::end()) .and(warp::cookie::optional(var::AUTH_HEADER_NAME)) .and_then(controller::verify_image);
画验证图,我用的是image
crate,效果如下:

好了,后端框架搭建得差不多了。
下一篇,我们一起用Yew
来搭建前端。
songday:使用 Rust 构建个人博客(2) - Yew 前端框架
一个基于Warp
和Yew
写的博客系统:
GitHub - songday/blog-rs: Blog frontend and backend ALL written in Rust. Backend powered by Warp and frontend built on Yew (WASM)
国内镜像:blog-rs: 一个用Rust写前端和后端的博客项目 (gitee.com)
具体怎么做个人网站呢?
a、在各搜索引擎搜索爱用建站或者直接输入www.iyong.com;
b、注册一个爱用建站免费网站制作账户;
c、选择一种合适你的网站风格的主题;
d、自助操作更换网站内容,可视化操作的,动动鼠标就可以轻松完成。如:网站的文字、图片、视频、音乐等将其替换成你的内容,此时你的网站基本就做好了。
使用爱用建站在线做个人网站,全过程实现0代码,也就是不用写代码,如果你做个网站还需要写代码,第一会浪费很多的时间去做网站,第二,也许你不会写代码,所以,做个人网站最好用爱用建站在线网站编辑制作平台。爱用建站个人网站的在线建设制作,就像做幻灯片一样简单、就像word文档一快捷方便,在线就能完成,而且有范文网站,也就是网站示例和模板,只用在线选择建站的模板就完成了。
个人网站,很大程度上,通过网站向他人展示了一个人的经历、才华、技能等。在很多的企业或用人单位或行业专属领域,如果你能将你的个人网站推荐给他们,那么,他们将快速的熟悉和了解到你的能力。

以上为爱用建站为你提供的个人网站怎么做、个人网站怎么在线制作编辑建设的详细内容,希望能对个人网站建设者有所帮助!
随着 2020年年底,Tokio
发布了1.0
版本
Announcing Tokio 1.0
依赖Tokio
的相关生态,也都开始着手升级了。
我使用的Warp 0.2
是依赖 Tokio 0.2
的 ,于是,我开始等待Warp
适配Tokio 1
Warp
依赖的Hyper
是最早适配Tokio 1
的,然后就是漫长的等待
看到Reqwest
升级了(都是一个作者的项目)心想该轮到Warp
了吧
其实Warp
依赖链有点长,除了Hyper
还有tokio-rustls
和tokio-tungstenite
而tokio-tungstenite
依赖tungstenite-rs
,tungstenite-rs
又依赖http
等着这些底层的一步一步升级上来,最终迎来了 Warp 0.3 版本
由于没有什么Breaking changes,所以升级还是很平滑的。
先将Tokio
版本号直接修改为 1
(里面的部分模块名变了)
0.2是
tokio = { version = "0.2", features = ["fs", "io-util", "macros", "rt-core", "rt-threaded", "signal", "time"] }
1是
tokio = { version = "1", features = ["fs", "io-util", "macros", "rt", "rt-multi-thread", "signal", "time"] }
如果嫌麻烦,可以启动所有的特性
tokio = { version = "1", features = ["full"] }
在项目里,我使用了Warp
的文件上传接口,所以也需要把Bytes
升级为1.0
,Hyper
升级到0.14
最后编译发布~
一个基于Warp
和Yew
写的博客系统:
GitHub - songday/blog-rs: Blog frontend and backend ALL written in Rust. Backend powered by Warp and frontend built on Yew (WASM)
国内镜像:blog-rs: 一个用Rust写前端和后端的博客项目 (gitee.com)
学生个人网页制作设计模板采用DIV CSS布局制作,共4个页面:个人介绍页面、相册列表页面、作品展示页面、留言表单页面。整体页面宽度1100PX,使用CSS制作了网页背景图,导航部分简单制作了鼠标经过变色效果。
个人网主页可自行修改,所看到的文字都可以编辑修改,图片可直接在文件夹中替换覆盖。可使用Dreamweaver、Notepad++、HBuilder等很多软件修改为个人信息。

<div class="con">
<div class="blog">MY BLOG</div>
<div class="menu">
<ul>
<li><a href=https://www.zhihu.com/topic/20328250/"index.html">ABOUT</a></li>
<li><a href=https://www.zhihu.com/topic/20328250/"photo.html">PHOTO</a></li>
<li><a href=https://www.zhihu.com/topic/20328250/"works.html">WORKS</a></li>
<li><a href=https://www.zhihu.com/topic/20328250/"contact.html">CONTACT</a></li>
</ul>
</div>
<div class="left">
<img src=https://www.zhihu.com/topic/20328250/"images/me.jpg" width="500px">
</div>
<div class="right">
</div>
</div>
出去玩这三天,也没有说不学无术,还是简单的搭建了一个自己的个人网站出来。没有写一行代码,WordPress还是比较香的。突突突就搞完了,就是专属域名买了几年的,花了些费用。
不会写代码,又想自己搭一个网站的,用这个是最简单的了。
前段时间我一直在设计和研究低代码搭建平台,也开源了几款可视化编辑器框架,最近在 github 上发现了一款非常强大的基于自然流布局的页面搭建框架 GrapesJS,接下来我就带大家摸索一下这款框架。
按照我一向的写作风格,我会在下面列出文章的大纲,以便大家有选择且高效率的阅读和学习:
- GrapesJS 框架基本介绍
- 如何使用 GrapesJS 构建 web 编辑器
- 基于 GrapesJS 构建的开源网页编辑器 craft.js
- 更多可视化编辑器推荐

乍眼一看我们可能会认为它只是一个页面/HTML 编辑器,但它能做的不仅仅如此。GrapesJS 是一个多用途的 Web 页面搭建框架,这意味着它允许我们轻松创建一个支持拖放的任何具有类似 HTML 结构的构建器。它所包含的内容远不止网页。我们使用类似 HTML 的结构的场景有:
- 时事通讯(例如 MJML)
- 原生移动应用程序(例如 React Native)
- 本机桌面应用程序(例如 Vuido)
- PDF (例如 React PDF)
并且 GrapesJS 附带的功能和工具使我们能够制作易于使用的编辑器。这使用户无需任何编码知识即可创建复杂的类似 HTML 的模板。
同时 GrapesJS 官网上还给我们提供了3个不同场景的案例, 我们可以参考这些案例快速制作属于我们自己的web编辑器:
- Webpage Builder
- Newsletter Builder
- Newsletter Builder with MJML
那么至于这些搭建框架的实现原理, 我之前的文章中也做了很多剖析和设计, 大家如果感兴趣可以参考研究一下, 接下来我们看看如何安装和使用它.
我们可以用 umd
的方式来导入:
<link rel="stylesheet" href="//unpkg.com/grapesjs/dist/css/grapes.min.css"> <script src="//unpkg.com/grapesjs"></script>
也可以通过 npm
来安装:
npm i grapesjs -S
之后我们可以通过如下方式导入到项目:
import 'grapesjs/dist/css/grapes.min.css'; import grapesjs from 'grapesjs';
在安装完之后, 我们先实现一个基本的页面编辑demo:

相关代码如下:
<html> <head> <link rel="stylesheet" href="//unpkg.com/grapesjs/dist/css/grapes.min.css"> <script src="//unpkg.com/grapesjs"></script> <style> #gjs { border: 3px solid #444; } .gjs-cv-canvas { top: 0; width: 100%; height: 100%; } </style> </head> <body> <div id="gjs"> <h1>Hello World Component!</h1> </div> <script> const editor = grapesjs.init({ container: '#gjs', // 我们也可以使用可选的: `components: '<h1>Hello World Component!</h1>'`, fromElement: true, // 编辑器尺寸 height: '300px', width: 'auto', // 禁用存储管理, 下面的文章我会介绍 storageManager: false, panels: { defaults: [] }, }); </script> </body> </html>
这样就实现了一个简单的编辑器, 是不是很简单呢? 我们接下来继续探索更强大的功能。
我们都知道网页编辑器需要提供非常丰富的组件, 这样能帮助用户更轻松的搭建页面, 同样 grapesjs 支持添加各种自定义组件, 也内置了常用的基础组件, 我们来看一个 demo :

由以上 demo
我们可以看到添加了3个基本组件: 区块, 文本, 图片。基本实现代码如下:
const editor = grapesjs.init({ // ...其他配置 blockManager: { appendTo: '#blocks', blocks: [ { id: 'section', label: '<b>Section</b>', attributes: { class:'gjs-block-section' }, content: `<section> <h1>H5-Dooring</h1> <div>积木式搭建H5页面</div> </section>`, }, { id: 'text', label: 'Text', content: '<div data-gjs-type="text">My Baby</div>', }, { id: 'image', label: 'Image', select: true, content: { type: 'image' }, activate: true, } ] }, });
由代码我们可以发现我们只需要在 blockManager
的 blocks
里添加指定的组件即可。同时我们还可以动态的添加组件:
editor.BlockManager.add('my-block-id', { // ...其他配置如label content: { tagName: 'div', draggable: false, attributes: { 'some-attribute': 'some-value' }, components: [ { tagName: 'span', content: '<b>DooringX</b>', }, { tagName: 'div', components: '<span>无限可能</span>', } ] } })
至于更详细的组件配置文档, 大家可以参考文档: grapesjs组件如何工作

仅仅实现组件添加还不够, 一个有尊严的编辑器还应该有各种功能按钮, 来实现不同用户的需求。
现在我们有了画布和自定义组件,让我们看看如何创建一个功能面板,里面有按钮(使用Panels API)。

我们可以看到顶部有3个功能按钮:
- 是否显示组件边线
- 显示源码
- 显示json
首先我们需要定义用来展示功能面板的元素(样式可以自定义):
<div class="panel__top"> <div class="panel__basic-actions"></div> </div>
其次我们来定义挂载功能面板:
editor.Panels.addPanel({ id: 'panel-top', el: '.panel__top', }); editor.Panels.addPanel({ id: 'basic-actions', el: '.panel__basic-actions', buttons: [ { id: 'visibility', active: true, className: 'btn-toggle-borders', label: '<u>B</u>', command: 'sw-visibility', }, { id: 'export', className: 'btn-open-export', label: 'Exp', command: 'export-template', context: 'export-template', }, { id: 'show-json', className: 'btn-show-json', label: 'JSON', context: 'show-json', command(editor) { editor.Modal.setTitle('Components JSON') .setContent(`<textarea style="width:100%; height: 250px;"> ${JSON.stringify(editor.getComponents())} </textarea>`) .open(); }, } ], });
我们可以定义更多的功能, 大家可以参考文档来学习使用。
在处理 Web
元素时,我们可能会发现另一个常见的工具是图层管理器。它是树状结构的,使我们能够轻松地对页面元素进行管理。要启用它,我们只需指定要渲染它的位置:
const editor = grapesjs.init({ // ... layerManager: { appendTo: '.layers-container' }, // 我们能定义一个默认的面板作为侧边图层管理器 panels: { defaults: [{ id: 'layers', el: '.panel__right', // 定义面板能否拖拽 resizable: { maxDim: 350, minDim: 200, tc: 0, cl: 1, // 左侧可拖拽 cr: 0, bc: 0, keyWidth: 'flex-basis', }, }] } });
效果如下:

我们可以看到右侧的图层面板, 可以轻松管理我们页面上的元素。
样式面板也很简单, 我们先定义对应的容器:
<div class="panel__right"> <div class="layers-container"></div> <div class="styles-container"></div> </div>
然后初始化对应的配置脚本:
const editor = grapesjs.init({ // ... panels: { defaults: [ // ... { id: 'panel-switcher', el: '.panel__switcher', buttons: [{ id: 'show-layers', active: true, label: 'Layers', command: 'show-layers', // Once activated disable the possibility to turn it off togglable: false, }, { id: 'show-style', active: true, label: 'Styles', command: 'show-styles', togglable: false, }], } ] }, selectorManager: { appendTo: '.styles-container' }, styleManager: { appendTo: '.styles-container', sectors: [{ name: 'Dimension', open: false, buildProps: ['width', 'min-height', 'padding'], properties: [ { type: 'integer', name: 'The width', property: 'width', units: ['px', '%'], defaults: 'auto', min: 0, } ] },{ name: 'Extra', open: false, buildProps: ['background-color', 'box-shadow', 'custom-prop'], properties: [ { id: 'custom-prop', name: 'Custom Label', property: 'font-size', type: 'select', defaults: '32px', options: [ { value: '12px', name: 'Tiny' }, { value: '18px', name: 'Medium' }, { value: '32px', name: 'Big' }, ], } ] }] }, }); // 定义指令 editor.Commands.add('show-layers', { getRowEl(editor) { return editor.getContainer().closest('.editor-row'); }, getLayersEl(row) { return row.querySelector('.layers-container') }, run(editor, sender) { const lmEl = this.getLayersEl(this.getRowEl(editor)); lmEl.style.display = ''; }, stop(editor, sender) { const lmEl = this.getLayersEl(this.getRowEl(editor)); lmEl.style.display = 'none'; }, }); editor.Commands.add('show-styles', { getRowEl(editor) { return editor.getContainer().closest('.editor-row'); }, getStyleEl(row) { return row.querySelector('.styles-container') }, run(editor, sender) { const smEl = this.getStyleEl(this.getRowEl(editor)); smEl.style.display = ''; }, stop(editor, sender) { const smEl = this.getStyleEl(this.getRowEl(editor)); smEl.style.display = 'none'; }, });
我们可以看看配置后的效果:

除了以上介绍的功能, 我们还能实现:
- 定义响应模式(pc, 移动, ipad),
- 设置存储和加载数据的模式
- 自定义主题
- 国际化 i18n 支持
这里就不一一介绍了, 我们直接看一下配置后的演示效果:

那么 GrapesJS 还有很多有意思的功能我们可以挖掘, 接下来我和大家分享一款基于GrapesJS 二次封装的一个开源编辑器框架 craft.js。

我们可以使用它插件化的搭建我们自己的编辑器, 如下是一个应用在React中的例子:
import {Editor, Frame, Canvas, Selector} from "@craftjs/core"; // 定义本文组件 import {useNode} from "@craftjs/core"; const TextComponent = ({text}) => { const { connectors: {drag} } = useNode(); return ( <div ref={drag}> <h2>{text}</h2> </div> ) } // 初始化编辑器 const App = () => { return ( <div> <Editor> // 可编辑的区域 <Frame resolver={TextComponent, Container}> <Canvas> <TextComponent text="趣谈前端 - 徐小夕" /> </Canvas> </Frame> </Editor> </div> ) }
- h5-Dooring | H5编辑器, 积木式搭建H5页面
- v6.dooring | 可视化大屏搭建解决方案
- craft | 基于React的拖拽页面生成器
- dooringx-lib | 快速高效搭建可视化拖拽平台
后期我会在数据可视化和工程化上输出更多实用的开源项目和框架,如果有其他问题或需求,可以和笔者交流学习。如果这篇文章对你有帮助,希望能给笔者 点赞+收藏 以此鼓励作者继续创作前端硬核文章。
为了文章的连贯性,还是有必要写一下如何开始hhhh。
让我们假设一下所有人都知道怎么在一个网站上创建账号,那么我们就不用从创建GitHub账号开始了。
官网:GitHub
接下来内容的官方教程链接:Creating a GitHub Pages site - GitHub Docs
GitHub中任何页面的右上角都有一个加号,点击“New repository”

在repository一栏下,输入 http://username.github.io,这里的username就是你的GitHub账号名。
下图以用户名为“octocat”为例。官方说如果你的username中有大写字母,在创建库的时候必须小写,不过实际上没什么影响。

(不知道为什么网页也要readme...)

点击“Create repository”,就能看到自己库的页面了。
新建的库里目前只有“README.md”文件,现在就已经成功创建了一个空的库。
这是老生常谈了,比如可以直接点击“Add file”来写一个新的 index.html,或者上传一个已有的 index.html 文件。又或者,通过我在上篇文章里提到的 GitHub Desktop 也可以很方便的直接从本地上传文件。
一旦完成了html文件的上传,那么你立刻就可以通过 http://username.github.io 来访问你自己的网址啦!
警告:默认情况下,GitHub Pages 站点在互联网上是公开可用的,即使站点的存储库是私有的或内部的。如果您的项目网站是从使用 GitHub 企业云的组织拥有的私有或内部存储库发布的,则可以管理该网站的访问控制。在具有托管用户的企业中,所有 GitHub Pages 网站都是私下发布的。否则,如果站点的存储库中有敏感数据,则可能需要在发布之前删除这些数据。
下一篇文章会介绍如何修改域名。
作品描述:个人信息展示网站响应式模板HTML+CSS+JavaScript。主要包括的页面有HOME,ABOUT,MOVIE,SPORTS,TRAVEL,SINGLE,CONTACT
等总共7个页面。
视频链接:分享两个前端网页,能用我的就别自己做了(含源码)
实现技术:CSS+HTML+JS+H5+CSS3+jqury+bootstrap;




<header class="header">
<div data-velocity="-.4" id="particles" class="header-bg"></div>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="social-links">
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-facebook"></i>
<div class="ripple-wrapper"></div>
</a>
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-twitter"></i>
<div class="ripple-wrapper"></div>
</a>
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-google-plus"></i>
<div class="ripple-wrapper"></div>
</a>
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-youtube"></i>
<div class="ripple-wrapper"></div>
</a>
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-linkedin"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</div>
</div>
</div>
<div class="site-title-table">
<div class="site-title-tablecell">
<div class="slide-text">
<h2><a href=https://www.zhihu.com/topic/20328250/"index.html"><span>S</span>uper<span>H</span>eros</a></h2>
<p>Another exciting blog template from awesome team</p>
</div>
</div>
</div>
</header>
<section class="maincontent-wrap">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="maincotnent shadow-z-1">
<div class="mainmenu">
<div class="navbar navbar-nobg">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href=https://www.zhihu.com/topic/20328250/"index.html">Home <div class="ripple-wrapper"></div>
</a></li>
<li><a href=https://www.zhihu.com/topic/20328250/"about.html">About</a></li>
<li><a href=https://www.zhihu.com/topic/20328250/"archive.html">Movie</a></li>
<li><a href=https://www.zhihu.com/topic/20328250/"archive.html">Sports</a></li>
<li><a href=https://www.zhihu.com/topic/20328250/"archive.html">Travel</a></li>
<li><a href=https://www.zhihu.com/topic/20328250/"single.html">Single</a></li>
<li><a href=https://www.zhihu.com/topic/20328250/"contact.html">Contact</a></li>
</ul>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10 col-md-offset-1">
<div class="article-list">
<article class="post">
<header class="article-title text-center">
<p><a href=https://www.zhihu.com/topic/20328250/"archive.html">Nature</a></p>
<h2><a href=https://www.zhihu.com/topic/20328250/"single.html">Green Lantern for Green World!</a></h2>
<p class="post-meta">by Farhan Rizvi @ 11th May</p>
</header>
<div class="article-featured-content shadow-z-2">
<a href=https://www.zhihu.com/topic/20328250/"single.html"><img class="img-responsive" src=https://www.zhihu.com/topic/20328250/"img/post-2.jpg" alt=""></a>
</div>
<div class="post-summary">
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
delenit augue duis dolore te feugait nulla facilisi.</p>
</div>
<div class="post-detail-link text-center">
<a href=https://www.zhihu.com/topic/20328250/"single.html" class="btn btn-fab btn-raised btn-material-red">
<i class="fa fa-plus"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</article>
<article class="post">
<header class="article-title text-center">
<p><a href=https://www.zhihu.com/topic/20328250/"archive.html">Movie</a></p>
<h2><a href=https://www.zhihu.com/topic/20328250/"single.html">My Favorite Spiderman Movie</a></h2>
<p class="post-meta">by Ratul Ahmed @ 09th May</p>
</header>
<div class="article-featured-content shadow-z-2">
<a href=https://www.zhihu.com/topic/20328250/"single.html"><img class="img-responsive" src=https://www.zhihu.com/topic/20328250/"img/post-1.jpg" alt=""></a>
</div>
<div class="post-summary">
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
delenit augue duis dolore te feugait nulla facilisi.</p>
</div>
<div class="post-detail-link text-center">
<a href=https://www.zhihu.com/topic/20328250/"single.html" class="btn btn-fab btn-raised btn-material-red">
<i class="fa fa-plus"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</article>
<article class="post">
<header class="article-title text-center">
<p><a href=https://www.zhihu.com/topic/20328250/"archive.html">Movie</a></p>
<h2><a href=https://www.zhihu.com/topic/20328250/"single.html">Marvel Phase to SuperCut</a></h2>
<p class="post-meta">by Rasel Ahmed @ 07th May</p>
</header>
<div class="article-featured-content shadow-z-2">
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src=https://www.zhihu.com/topic/20328250/"" width="500" height="281"></iframe>
</div>
</div>
<div class="post-summary">
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
delenit augue duis dolore te feugait nulla facilisi.</p>
</div>
<div class="post-detail-link text-center">
<a href=https://www.zhihu.com/topic/20328250/"single.html" class="btn btn-fab btn-raised btn-material-red">
<i class="fa fa-plus"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</article>
<article class="post">
<header class="article-title text-center">
<p><a href=https://www.zhihu.com/topic/20328250/"archive.html">Fun</a></p>
<h2><a href=https://www.zhihu.com/topic/20328250/"single.html">The Return of Hulk!</a></h2>
<p class="post-meta">by Tamanna Ferdous @ 07th May</p>
</header>
<div class="article-featured-content shadow-z-2">
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src=https://www.zhihu.com/topic/20328250/"" width="500" height="281"></iframe>
</div>
</div>
<div class="post-summary">
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
delenit augue duis dolore te feugait nulla facilisi.</p>
</div>
<div class="post-detail-link text-center">
<a href=https://www.zhihu.com/topic/20328250/"single.html" class="btn btn-fab btn-raised btn-material-red">
<i class="fa fa-plus"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</article>
<article class="post">
<header class="article-title text-center">
<p><a href=https://www.zhihu.com/topic/20328250/"archive.html">Character</a></p>
<h2><a href=https://www.zhihu.com/topic/20328250/"single.html">Thor - The Hero of Power!</a></h2>
<p class="post-meta">by Farhan Rizvi @ 06th May</p>
</header>
<div class="article-featured-content shadow-z-2">
<img class="img-responsive" src=https://www.zhihu.com/topic/20328250/"img/article-2.jpg" alt="">
</div>
<div class="post-summary">
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
delenit augue duis dolore te feugait nulla facilisi.</p>
</div>
<div class="post-detail-link text-center">
<a href=https://www.zhihu.com/topic/20328250/"single.html" class="btn btn-fab btn-raised btn-material-red">
<i class="fa fa-plus"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</article>
<article class="post">
<header class="article-title text-center">
<p><a href=https://www.zhihu.com/topic/20328250/"archive.html">Analysis</a></p>
<h2><a href=https://www.zhihu.com/topic/20328250/"single.html">Beauty Queen of Avengers</a></h2>
<p class="post-meta">by Rasel Ahmed @ 05th May</p>
</header>
<div class="article-featured-content shadow-z-2">
<a href=https://www.zhihu.com/topic/20328250/"single.html"><img class="img-responsive" src=https://www.zhihu.com/topic/20328250/"img/article-3.jpg" alt=""></a>
</div>
<div class="post-summary">
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
delenit augue duis dolore te feugait nulla facilisi.</p>
</div>
<div class="post-detail-link text-center">
<a href=https://www.zhihu.com/topic/20328250/"single.html" class="btn btn-fab btn-raised btn-material-red">
<i class="fa fa-plus"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</article>
<article class="post">
<header class="article-title text-center">
<p>Movie</p>
<h2><a href=https://www.zhihu.com/topic/20328250/"single.html">The Target Man!</a></h2>
<p class="post-meta">by Ratul Ahmed @ 05th May</p>
</header>
<div class="article-featured-content shadow-z-2">
<a href=https://www.zhihu.com/topic/20328250/"single.html"><img class="img-responsive" src=https://www.zhihu.com/topic/20328250/"img/article-4.jpg" alt=""></a>
</div>
<div class="post-summary">
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
delenit augue duis dolore te feugait nulla facilisi.</p>
</div>
<div class="post-detail-link text-center">
<a href=https://www.zhihu.com/topic/20328250/"single.html" class="btn btn-fab btn-raised btn-material-red">
<i class="fa fa-plus"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</article>
<article class="post">
<header class="article-title text-center">
<p><a href=https://www.zhihu.com/topic/20328250/"archive.html">Secret</a></p>
<h2><a href=https://www.zhihu.com/topic/20328250/"single.html">Mind can be controled like mine!</a></h2>
<p class="post-meta">by Unknown @ 02nd May</p>
</header>
<div class="article-featured-content shadow-z-2">
<a href=https://www.zhihu.com/topic/20328250/"single.html"><img class="img-responsive" src=https://www.zhihu.com/topic/20328250/"img/article-5.jpg" alt=""></a>
</div>
<div class="post-summary">
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
delenit augue duis dolore te feugait nulla facilisi.</p>
</div>
<div class="post-detail-link text-center">
<a href=https://www.zhihu.com/topic/20328250/"single.html" class="btn btn-fab btn-raised btn-material-red">
<i class="fa fa-plus"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</article>
<nav role="navigation" class="navigation posts-navigation">
<div class="nav-links">
<div class="nav-previous">
<a href=https://www.zhihu.com/topic/20328250/"#">Older posts</a>
</div>
<div class="nav-next">
<a href=https://www.zhihu.com/topic/20328250/"#">Newer posts</a>
</div>
</div>
</nav>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<footer class="footer">
<div class="container">
<div class="row">
<div class="col-lg-5 col-md-6 col-lg-offset-1">
<div class="footer-wid">
<h2 class="wid-title">A<span>vengers</span></h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis
nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel
illum dolore eu feugiat nulla facilisis at vero eros et accumsan,</p>
</div>
</div>
<div class="col-lg-5 col-md-6">
<div class="footer-wid">
<h2 class="wid-title">Newsletter</h2>
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl
ut aliquip ex ea commodo consequat.</p>
<div class="newsletter-form">
<form action="index.html">
<input class="shadow-z-1" type="email" placeholder="Your Email address">
<button type="submit" class="btn btn-material-red">Subscribe Now!</button>
</form>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="footer-bottom">
<div class="row">
<div class="col-md-8">
<div class="copyright-text">
<p>Copyright © 2019.Company name All rights reserved.<a target="_blank"
href=https://www.zhihu.com/topic/20328250/"#">网页模板</a></p>
</div>
</div>
<div class="col-md-4">
<div class="social-links footer-social-links">
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-facebook"></i>
<div class="ripple-wrapper"></div>
</a>
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-twitter"></i>
<div class="ripple-wrapper"></div>
</a>
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-google-plus"></i>
<div class="ripple-wrapper"></div>
</a>
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-youtube"></i>
<div class="ripple-wrapper"></div>
</a>
<a class="btn social-link" href=https://www.zhihu.com/topic/20328250/"javascript:void(0)"><i class="fa fa-linkedin"></i>
<div class="ripple-wrapper"></div>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
1.1解决部署上线~> 部署上线工具(永久免费使用)
1.不需要买服务器就能部署线上,全世界都能访问你的连接啦, 这里给大家推荐一个程序员必备神器~
简单易懂, 简直神器 ~ 需要可在我公_号:前端老实人,自取
2.就是把你的代码效果做好了以后, 部署到线上, 把链接发给别人, 就可以让对方通过你的连接点击进去, 就能看到你的网页效果啦, 电脑端和手机端都可以噢! (不然别人看你的网页都要发文件过去,体验感不太好~)
博主为人老实,无偿解答问题,也会录制一些学习视频教同学们知识❤
如果对您有帮助,希望能给个 /评论/收藏
您的三连~是对我创作最大的动力支持
笔者在折腾网站的时候,发现许多教程都太老了(大多是2017
、18
年更新的),于是只能几篇博客对比着看,属实难受。
因此从本文开始(2022.04
),将更新一个静态博客专题,专门来分享一下如何快速搭建个人主页,这里贴上我的个人主页:东曜说 ,同学们看一下效果。路过的同学可以关注收藏走一波,相见即是缘,后续将持续输出优质内容~~
hexo + github 托管 VS wordpress
- 成本
wordpress
必须得搞云服务器或者虚拟主机,动辄一年200
块起步的租钱,一般来说学生党肯定是顶不住的。github
托管静态网站是免费的 - 维护
wordpress
建主页属于动态站点,当用户的访问量增多时服务器负载也会增大,访问速度明显下降,用来优化的维护成本高,搞得人脑壳痛。hexo
建主页属于静态站点,通过敲几行git
命令即可实现文章的发布,维护成本和操作难度低。 - 颜值
hexo
有丰富的主题可以选择,完全开源,而且颜值很高。博客嘛,得自己看的舒服才行,这也属于一个加分项。
综上所述,本文将围绕hexo + github
展开系列分享,不懂的同学可以多看几遍。世界上最远的距离就是知道和做到,动手才能发现乐趣。
这一小节的标题是 git
和github
,那为什么第一步要准备git
和github
呢?
因为我们可以通过git
向github
传输文件,这时,github
是托管你的网站的服务器,git
是你连接服务器的工具。不懂github
和git
的同学移步:超详细的 github 账号申请与 git 安装教程。
好了,现在我们有git
和github
账号了,那git
和github
是如何连接的呢?
答案是:借助SSH
协议。SSH
全称Secure Shell
,即安全外壳协议。它通过数据加密和认证机制实现了设备互联的安全保障,相较于FTP、SFTP
等明文传输的协议有更高的安全性能。
SSH
的加密机制是非对称加密,这也就是说它会在本地生成两把钥匙:一把是公钥,我们把它传到github
上。一把是私钥,留在我们自己的电脑上。git
安装后会默认附带安装SSH
,所以我们可以省去安装SSH
的环节。
如上所述,ssh
已经就绪。我们随便找个文件夹,右键打开git bash here
,键入命令:
ssh-keygen -t rsa
该命令的作用就是用来生成这两把钥匙,加密算法采用rsa
,之后一路敲空格默认即可。
这时,我们可以在本地找到这两把密钥:私钥id_rsa
和公钥id_rsa.pub
。
OK
,接下来就是把公钥部署在github
上,然后用SSH
密钥登录的方法进行连接(免密码登录)。因为篇幅有限,不懂如何部署公钥以及想要了解SSH
如何连接github
的同学移步:SSH 登录及其原理详解。
到了现在这一步,我们已经成功绑定自己电脑的git
和你的github
账号了。
github
仓库就是托管你的个人主页的容器,所以,我们首先要把这个容器搭好。
打开你的 github
主页,点击头像,点击Your repositories
进入仓库界面。

点击New
,我们新建一个仓库,输入仓库名即可点击 Create repository
(忽略我的提示,因为我已经有同名库了)

就是这么简单,装你个人网站的容器就搭好了。
本节需要用到npm
,它是node
的包管理工具,因此我们首先得准备好node
环境,不知道如何安装node
的同学移步:安装和更新 node 的正确姿势。
我们首先在本地建一个文件夹,命名为 blog
。值得注意的是,这个文件夹就是你的个人网站的项目文件夹,所以一定要自定义好路径。
进入该文件夹,右键Git hash here
,键入命令安装Hexo
脚手架:
已经安装过VSCode
的同学,可以用它打开这个文件夹,在终端中键入命令即可(安装cnpm
的同学可以用cnpm
替换npm
):
npm i -g hexo-cli
安装完成后,键入命令初始化一个hexo
项目
hexo init

然后输键入命令生成静态网页,在项目根目录中会生成一个public
文件夹,这个public
就是你要托管的个人网站。
hexo g / hexo generate
hexo g
是 hexo generate
的缩写,两个命令都有效。

最后,我们在本地测试一下网站,键入以下命令开启本地node
服务器
hexo s / hexo server

如下图所示,可以看到我们的初始站点已经run
起来了,使用的是默认主题,有点丑,不过万事开头难,恭喜你有了自己的网站,后续我会再更新如何更改主题,看完就可以在终端中ctrl c
关了它。

HTML+CSS网页设计与制作,我的家乡网页代码, 本实例适合于初学HTML+CSS的同学。该案例里面有div+css的样式布局设置,这个实例比较全面,有助于同学的学习。本文将介绍如何通过从零开始设计个人网站,并将其转换为代码的过程来实现设计与制作。
视频演示:

截图演示:






文件目录:

HTML代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>家乡介绍</title>
<link rel="stylesheet" type="text/css" href=https://www.zhihu.com/topic/20328250/"css/reset.css">
<link rel="stylesheet" type="text/css" href=https://www.zhihu.com/topic/20328250/"css/index.css">
</head>
<body>
<!-- 头部 -->
<div class="header">
<!-- logo -->
<img src=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/images/logo.png" class="logo" alt="" />
<!-- 导航栏 -->
<div class="nav">
<ul>
<li>
<a class="active" href=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/index.html" target="_self">
<span title="家乡介绍">家乡介绍</span>
</a>
</li>
<li>
<a href=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/attractions.html" target="_self">
<span title="家乡景点">家乡景点</span>
</a>
</li>
<li>
<a href=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/delicacy.html" target="_self">
<span title="家乡美食">家乡美食</span>
</a>
</li>
<li>
<a href=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/about.html" target="_self">
<span title="家乡发展">家乡发展</span>
</a>
</li>
<li>
<a href=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/humanity.html" target="_self">
<span title="家乡人文">家乡人文</span>
</a>
</li>
<li>
<a href=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/contact.html" target="_self">
<span title="联系我们">联系我们</span>
</a>
</li>
</ul>
</div>
</div>
<!-- 主内容 -->
<div class="main-content">
<div class="banner">
<img src=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/images/R-C.jpg" alt="" />
</div>
<div class="project-content">
<p class="content-title">家乡介绍</p>
<div class="detail-content">
<div class="detail-pic">
<img src=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/images/aca69c05cdaa4c40943507fcebd5f884.jpeg" alt="" />
</div>
<div class="detail-desc">
<p>云浮市,广东省辖地级市,位于广东省中西部,西江中游以南。土地面积7786.64平方千米(其中市区面积1967.28平方千米),下辖2个区、2个县、代管1个县级市。截至2022年末,云浮市常住人口239.65万人。</p>
<p>春秋战国至秦汉时期先秦时期,今云浮市境为百越之地。南北朝时期市境曾先后设立州、郡、县三级建置。民国初,4县隶属粤海道。1951年3月起隶属西江专区,12月起隶属粤中行政区。1961年4月,隶属肇庆地区。1994年4月,设立地级云浮市。 云浮是广府民系的发祥地,历史文化有西江文化、南江文化、六祖文化、石艺文化等。云浮市东连粤港澳大湾区,西接北部湾城市群,是珠江—西江经济带重要节点城市。西江黄金水道贯穿全境,云浮新港是广东内河第一大港。</p>
<p>从宏观视角系统介绍了云浮的综合概况、历史沿革、人文特色、发展变化和中华人民共和国成立以来特别是进入新时代以来各个方面所取得的辉煌成就,展示云浮数千年历史沧桑和新时代风貌。</p>
</div>
</div>
<div class="detail-content">
<p>云浮是一块宝地,可谓物华天宝、人杰地灵。悠久的历史和优良的文化,积累了丰富的文物。古建名木是历史发展的见证、人类文明进步的反映。在云浮这块美丽的土地上,我们的祖先繁衍生息,一代一代地开拓自己的家园。创造者留下的深刻轨迹,为我们提供了富有价值的文物,并且沉积了深厚的文化。</p>
<p>两广之交的西江一带地区,在漫长的历史时期,是沟通中原与海外的重要交通枢纽,在这里,西江文化与中原文化、海外文化相互交绥碰撞,激发出文化创新的活力;在这里,产生了多次民族大融合,不断加入异质文化的新鲜血液;在这里,文化创新活动十分活跃。正是在这样一种历史背景和文化环境下,年轻的惠能横空出世,不仅自学自悟佛法真谛,而且融合多种文化基因,将“不二法门”的思想方法贯彻到底,主张“佛法在世间,不离世间觉”,反对出世的“专修”,将修禅融入合日常的生产生活之中,农禅并作,自食其力,自修自悟,自成佛道,创立了与印度佛教大异其趣的中国禅。</p>
</div>
<div class="content-list">
<ul>
<li>
<div class="cover-pic">
<img src=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/images/1567417984855.jpg" alt="" />
</div>
<p class="title">大力发展绿色农业与畜牧业</p>
<p class="sub-title">粮食产量比上年增长0.2%,肉产量增长3.3%</p>
</li>
<li>
<div class="cover-pic">
<img src=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/images/1567417572331.jpg" alt="" />
</div>
<p class="title">第二产业齐头并进</p>
<p class="sub-title">全部工业增加值比上年增长3.6%</p>
</li>
<li>
<div class="cover-pic">
<img src=https://www.zhihu.com/topic/20328250/"https://www.zhihu.com/topic/20328250/images/1567417829709.jpg" alt="" />
</div>
<p class="title">开展节能产业</p>
<p class="sub-title">开展节能产业,为都市生活提供快捷</p>
</li>
</ul>
</div>
</div>
</div>
<!-- 底部 -->
<div class="footer">
<div class="contact-container">
<div class="contact-title">
<p>联系</p>
<p>Contact</p>
</div>
<div class="contact-content">
<p class="c-name">木番薯科技</p>
<div class="c-addr">
<p>地 点:广州市天河区花城大道666号</p>
<p>邮编:510000</p>
</div>
<div class="c-addr">
<p>公众号名称:木番薯科技</p>
<p>公众号号码:mengchatchat91</p>
</div>
</div>
</div>
</div>
<script type="text/javascript" src=https://www.zhihu.com/topic/20328250/"js/index.js"></script>
</body>
</html>
大学生网页作业制作 (HTML+CSS)、大学生HTML期末大作业
css样式:

版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/78686.html