化繁为简,无需后端。巧用Yql+rss,搭建我的个人网站
【本文含有大量的心理描写,没耐心的看官直接跳转到末尾即可】
前言:
最近做好了个人网站。很多人都喜欢用WordPress弄一个自己的博客之类的,但其实我觉得没这个必要,Lofter的功能、界面神马的于我而言足矣,加上CSDN单作为技术博客,GitHub作为开源仓库。自己重写这些内容在我看来没甚意义:独立的个人博客只能带给我孤独,技术文章放到互联网的某个偏僻的角落跟没公开没啥两样,开源Git仓库更不用说了,GitHub已是上上之选。所以我的需求就很简单咯:就是把我常用的几个个人主页整合起来。顺带获取我最新的文章动态,放在网站首页,ok。
正文开始:
首先,拿什么来建站?WordPress被我首先排除了,庞大臃肿+php。Ghost,嗯,别忘了我并不想做博客。想来想去,鉴于我简单的需求,还是从基础写起比较快。初期的预想是Bootstrap写前端界面,Flask负责后端处理,nginx做夹层。
那么先写界面咯。Bootstrap之前只大略看过,但仍然很快的完成了任务。因为,这玩意儿真心简单好用啊。
那么该写后端咯。等等,重点来了,我好像有更好的解决方案了!!!
先回顾需求,我并不想在个人网站上发布博客文章,个人网站就是个人网站,它不该成为个人博客、个人主页!!!我的文章仍然发表在Lofter!那么,个人网站上的文章就并不需要也不应该从服务器来获取,难道说我每发表一篇文章还得自己在服务器放一份?于是,我想到了RSS。多么美妙啊,我在Lofter上,借助现成的文本编辑器写文章,然后通过RSS来取得我的Lofter的文章概览,然后把它们转到网站里,就辣么简单!
好,现在事情很明确了,我并不需要后端,我只是需要从Lofter的RSS源拉取我的文章,把它们呈现给用户。这里就涉及到一个老大难问题了:跨域访问。第一想到的解决方法当然是由服务器访问Lofter,把数据返还给浏览器。等等,好像不太对!不是说好了不从服务器获取文章吗?这样还不如把文章预存到服务器呢。唉,没办法,谁教浏览器不允许跨域获取数据呢,不然直接让浏览器自己从Lofter获取rss源多好。等等,好像错过了什么!我跨域访问并不是想做坏事啊,不是我窃取数据,而是rss本就是为了共享数据而诞生的啊!那么,就一定有好的解决方案可以让我简单的获取到它。于是,想起了早已被墙了N久的jGFeed,于是,想到了是否有替代jGFeed的东东。于是我发现了它——雅虎的Yql。话说感觉雅虎在中国混得挺惨啊,但没关系,这关我毛事呢,毕竟在国外它仍然是一个大公司不是,它的产品为嘛不用呢。关键是,雅虎没有被墙!没有被墙!没有被墙!
事情就这么愉快的解决了。看了这么久的文字的诸君,我知道你们等的重点是这句代码:
$.getJSON('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D"' + 'http://zhengxiaoyao0716.lofter.com/rss' + '"&format=json&diagnostics=true&callback=?', function(data) { [处理你的rss数据吧] });
需要注意的是,这样做好处是服务端完全没压力,坏处是,雅虎虽然没有被墙,但毕竟在国外,访问速度会比较慢。
最后,让最近一直写Python、Java的对坑放松警惕的我吐槽一下js的满地坑:尼玛啊,for in的坑真心烦人啊有木有,别人for in数组拿到的是值,尼玛for in拿到的是角标,劳资查了一晚上的bug就tm因为这个啊啊啊!!!(旁白,在js里,for in与for each in是两个概念。前者只是普通for语句的简化,后者才是我们喜闻乐见的迭代器遍历,然而后者却并不是ECMAScript的一部分)
我的个人网站的链接:http://xiaoyao.zheng0716.com
化繁为简,无需后端。巧用Yql+rss,搭建我的个人网站的更多相关文章
- 搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3
Web GIS系列: 搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3 使用GeoServer+QGIS发布WMTS服务 使用GeoSe ...
- Web 如何搭建自己的个人网站
如何搭建自己的个人技术博客网站 学习目标 1.[了解]搭建网站需要的web构件和网站运行原理 2.[掌握]如何搭建个人博客网站 学习前言 大家都是学习开发的,相信都接触过百度,新浪,淘宝,京东...等 ...
- Flask搭建个人博客网站(1)—项目规划--李渣渣(lizaza.cn)
Flask搭建个人博客网站(1)—项目规划--李渣渣(lizaza.cn) 发布时间:2020-05-2413次浏览 前言 现在市面上又许多比较成熟的博客平台,例如:CSDN,博客园,新浪博客等!对于 ...
- 无需编译、快速生成 Vue 风格的文档网站
无需编译.快速生成 Vue 风格的文档网站 https://docsify.js.org/#/#coverpage https://github.com/QingWei-Li/docsify/
- 阿里云+wordpress搭建个人博客网站【小白专用的图文教程】
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 阿里云+wordpress搭建个人博客网站
[正文] 在阿里云上搭建使用个人博客主要分为以下几个步骤: 1.购买阿里云ECS主机 2.购买域名 3.申请备案 4.环境配置 5.安装wordpress 6.域名解析 声明一下,本人对服务器端的知识 ...
- 如何搭建个人博客网站(Mac)
一直以为自己记忆力很好,毕业之后才发现,之前需要看一遍就能记住的东西,现在看两三遍才能有印象.而搞技术的,如果不及时的记录下当时的情景,过后很容易就忘记.所以,再次萌生了搭博客.写文章的想法(之前用D ...
- Linux_基于Docker快速搭建个人博客网站
时间:2017年04月28日星期五 说明:基于docker技术,使用jpress开源框架搭建个人博客网站.特别感谢jpress开源项目.系统版本:CentOS 7.2-64bit. 步骤一:准备Doc ...
- ubuntu 搭建简易的https网站
ubuntu 搭建简易的https网站 环境:ubuntu 12.04.5 openssl (1)创建一个ssl的保存路径 sudo mkdir /opt/nginx/ssl (2)生存密钥sudo ...
随机推荐
- ajax验证用户名和找回密码参考
// JavaScript Document function chkname(form){ var user = form.user.value; if(user == ''){ alert('请输 ...
- 关于DEDECMS自定义模型当中添加自定义字段后在后台添加内容后不显示解决方案
用DEDECMS的时间也不长,最近在做一个站时,就遇到了这个问题(自定义字段在后台不显示内容)中添加自定义字段后在后台编辑打开后发现我之前添加的内容不显示,如果是只是看看不单击确定的话,那么在前台数据 ...
- Python自动化运维之31、Tornado框架
Tornado 官网:http://www.tornadoweb.org/en/stable/ Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本. ...
- Mysql Explain 详解
Mysql Explain 详解[强烈推荐] Mysql Explain 详解一.语法explain < table_name >例如: explain select * from t3 ...
- JSP技术的优缺点介绍
什么是JSP?JSP可用一种简单易懂的等式表示为:HTML+Java=JSP. JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑. 网页还能通过 ...
- BZOJ 1052 覆盖问题
Description 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用3个L*L的正方形塑料薄膜将小 ...
- 【Java】怎么回答java垃圾回收机制
(1) GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象 ...
- hdu 5074 Hatsune Miku
http://acm.hdu.edu.cn/showproblem.php?pid=5074 题意:给你一个的矩阵score[i][j],然后给你一个数列,数列中有一些是-1,代表这个数可以换成1~m ...
- 6.ListView
Repeater一般只用来展示数据,如果要增删改则用ListView更方便,使用向导(强类型数据)来使用ListView会自动生成很多模板,免去手写模板代码的麻烦,再进行手工调整即可. 首先设定数据源 ...
- ♫【RequireJS】grunt-contrib-requirejs
gruntjs / grunt-contrib-requirejs 使用r.js优化require.js项目 define("b",[],function(){return fun ...