vue.jsVue.js前端实际项目

Vue.js + Node.js打造个人博客(新手向)

2016-12-28  本文已影响7058人  cool_cl

原文地址:lewis1990@amoy

前言

做为一名立志全栈的页面仔,一直想着要独立开发一个项目,从前台到后台到数据库,从设计到开发到上线。一般说到这样的练手项目,通常得到的意见都是写个博客系统呗!刚好对之前用hexo部署在GitHub Page上的博客的傻瓜式及龟速实在忍无可忍,于是乎,就写个博客系统呗!先放上链接。

方案

扬帆!起航!

  1. 页面布局:自己看Cloud's Blog,简单介绍下。第一屏为一张壁纸宽高均为100%铺满整个可视区域,内容有博客名称、小标题及三个关于博主的链接;点击向下箭头滚动进入第二屏正题,分为四个Tab模块:【首页】、【文章】、【作品】、【关于】。默认为【首页】,即最新一篇文章详情,【文章】为文章列表,点击可阅读文章内容,【作品】为作品列表,这部分还没完成,【关于】为关于博主的一些介绍。PS:首屏的壁纸在Google图片里找了一上午才找到这张还算满意的,考虑到手机端壁纸是居中铺满整个可视区域,要找到一张PC端手机端效果都还行且逼格不能太低的图片真的不容易,BTW,博主还是选择困难症患者。

  2. 前端开发:从Vue脚手架开始

# 全局安装 vue-cli
$ npm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack blog
# 安装依赖,走你
$ cd blog
$ npm install
$ npm run dev

然后安装Vue-router用于SPA路由及vue-resource或axios用于Ajax。

$ npm install --save vue-router
$ npm install --save axios
# vue官方推荐的ajax库不再是vue-resource,而是axios

然后就可以开始码静态页面了,根据第一步页面布局的思路写出静态页面应该不是什么难事,其中需要调用第三步中node.js提供的接口,这里就不再多说了。完成静态页面后编译

$ npm run build
  1. 后端开发:创建服务端目录结构并安装express框架及marked用于将md文件转为html
$ mkdir blog-server && cd blog-server
$ mkdir public
$ npm install --save express
$ npm install --save marked

写接口,目前主要有三个接口。

  1. 获取文章列表接口。fs.readdir方法读取md文件所在文件夹,返回所有md文件的文件名即文章标题、创建时间、文章路径,并按创建时间排序渲染在【文章】页。
  2. 文章内容接口。根据第一个接口返回的文件名及路径,用fs.readFile方法读取md文件的内容并用marked转为html并返回给客户端,渲染在文章内容页。
  3. 首页内容接口。类似接口2,读取最新一篇文章并返回。记得处理跨域问题。
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",' 3.2.1')
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});

渲染静态页面,将第二部编译出来的静态文件及md格式的文章文件拷入public文件夹,并用express内置的中间件指定public文件夹为静态资源文件的根目录并缓存。因为是单页应用,所以记得要处理好404错误。

# server.js
var express = require('express');
var app = express();
app.use(express.static('public',{maxAge:60*60*24*30}));
app.get('/',function(req,res){
  res.sendFile('/index.html',{root: __dirname + '/public/'});
});
app.listen(80);
  1. 部署
$ npm install -g PM2
$ pm2 start server.js
$ pm2 startup

此时我们的博客系统已经运行在EC2上了。

未来计划

  1. 完成【作品】Tab页,现在虽然勉强上线了,但缺了这一块逼死强迫症啊。
  2. 后台管理,功能模块暂定为
  1. 启用MongoDB数据库
  2. 界面美化、性能优化
  3. 评论功能
  4. seo

写在最后

仅此记录Cloud's Blog初版上线过程


2017.08.29
好久没更新,这个博客是去年年底刚接触vue.js时拿来练手的,很粗糙,最近心血来潮准备更新2.0,有同学在问的源码在这里github地址,有兴趣的话帮忙点个star,谢谢!

上一篇下一篇

猜你喜欢

热点阅读