本来开始用简书的时候规定自己一周至少写两篇文章,然而现在距离上一篇的时间已经过去了快一个月了,现在开始慢慢补吧。最近花了大约三个星期,从前端、后端、数据库到部署完成了一个简单的问答网站,目前部署在搬瓦工,还有不少bug没有改,细节也有很多不合适,以后在慢慢改吧。
先放张图
主要用到了semantic ui的css框架、vue.js、django、mysql,通过uwsgi部署在centos6,nginx反向代理。
基本上已经做到了前后端分离,后端提供api接口,把大部分逻辑交给js去做。这里用了Django REST framework来实现api,用reqwest库向api发送get、post请求实现增删改查。
尝试采用了token认证,用js-cookie建立和移除cookies实现认证,基本的权限控制已经实现。
目前主要分为主页、答案详情页、问题详情页、话题页、问题页、登录&注册页、个人资料&资料修改页。
暂时还未实现的功能有:
1、用户之间互相回复
2、搜索
3、选中指定话题时该话题样式变化
4、关注用户
5、富文本
关于首页显示的内容,知乎有自己的算法,我只是按id一股脑显示的,暂时对这方面还没什么头绪。说是仿知乎,其实没法比,就拿来练练手而已。
部署花了很多时间,前后得有一个多星期,主要是没什么头绪,不知道vps、uwsgi、nginx和域名这些之间的联系,看了很多教程也不不明白,多亏了一个小伙伴给我打了电话讲解了,现在感觉很简单了。
vps就是一电脑,django项目运行在vps上。
WSGI是为为Python语言定义的Web服务器和Web应用程序之间的一种通用的接口,uWSGI就是web服务器,用于接受前端发送的请求并处理后发送给web应用程序,uwsgi是uWSGI服务器实现的独有的协议,只用uwsgi也能实现部署。
nginx是一个反向代理服务器,使用nginx后,uwsgi只需要将django项目运行在本地,请求和响应通过nginx进行。nginx可以将静态文件单独处理,速度要比uwsgi快。
域名需要解析到服务器的ip地址上,访问域名时会将域名解析成对应的ip。
关于部署,还要单独写一个总结,把流程写一边,毕竟坑了我很长时间。网站还要继续优化调整细节,数据库的访问也要继续优化。
最后放github。
--------------2017年2月6日----------------
过完年更新了一点。
1、添加搜索功能
2、添加评论分页
3、添加用户互相回复
现在才发现vue.js自己只用了一点皮毛, 组件部分还没用到,本来想把网站组件化+webpack打包,结果比想象中的难的多,琢磨了几天放弃了,修改还不如重新写一个。这个也就这样了,自己的知识还是太少,用到的东西太单一。
下一阶段任务是vue+webpack做一个博客练练手。