新手如何通过Vue.js + Node.js打造个人博客

本文主要给大家介绍了新手如何通过Vue.js + Node.js打造个人博客,文中通过示例代码介绍的非常详细,对大家学习具有一定的参考学习价值,希望能帮助到大家。

方案

ui风格:主要参考randy’s blog的风格,并加入自己的一点想法(主要是为了偷懒)。

前端页面:基于Vue2.0的响应式SPA,啊?你问我为什么?就如《关于》中的自我介绍:我自认为擅长Vue的SPA开发。

后台:前端工程师通向全栈的捷径:Node.js。负责写接口及渲染静态页面。

数据库:原计划是用MongoDB,但为了赶进度,索性数据库都不用了,第一版就先这样吧。

文章:参考hexo用markdown语法写好文章再转成html的做法。也是在本地编辑好md格式的文章,上传到服务器,Node.js直接读取md文件并转化为html,返回给前台,这也是为什么暂时不需要数据库的原因。

立即学习“前端免费学习笔记(深入)”;

部署:AWS,一年时间免费使用哦!你问我一年后怎么办?God knows!也许一年时间已经让我经历了从入门到放弃。

扬帆!起航!

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

前端开发:从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

登录后复制

后端开发:创建服务端目录结构并安装express框架及marked用于将md文件转为html

$ mkdir blog-server && cd blog-server$ mkdir public$ npm install --save express$ npm install --save marked

登录后复制

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

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

# server.jsvar 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);

登录后复制

获取文章列表接口。fs.readdir方法读取md文件所在文件夹,返回所有md文件的文件名即文章标题、创建时间、文章路径,并按创建时间排序渲染在【文章】页。

文章内容接口。根据第一个接口返回的文件名及路径,用fs.readFile方法读取md文件的内容并用marked转为html并返回给客户端,渲染在文章内容页。

首页内容接口。类似接口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();});

登录后复制

部署

申请AWS(亚马逊云主机),一年免费试用,需填信用卡信息。实例一台EC2,win或Linux系统,推荐Linux。开放相应端口并安装node.js。

安装PM2,并运行第三步的server.js服务,并让PM2随系统启动。

$ npm install -g PM2$ pm2 start server.js$ pm2 startup

登录后复制

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

购买域名。在腾讯云上购买的xyz域名,第一年8块钱。解析到该EC2的公网IP上,即可通过域名访问。

以上就是新手如何通过Vue.js + Node.js打造个人博客的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2779298.html

(0)
上一篇 2025年3月8日 15:46:03
下一篇 2025年3月7日 16:11:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • a标签如何调用JavaScript

     本文主要给大家介绍了关于a标签如何调用JavaScript的相关资料,文中通过示例代码介绍的非常详细,对大家学习具有一定的参考学习价值,希望能帮助到大家。 我们常用的在a标签中有点击事件:         标签的 href 属性用于指定超…

    编程技术 2025年3月8日
    200
  • JS简易版富文本编辑器实现代码

    直到今天才来,初略的了解了下,当然呢,至于过程也是前一秒痛苦,后三秒轻松加容易的。这个富文本编辑器,主要是用p自带的contenteditable属性document.execCommand()方法实现的,为了方便布局,偷了下小懒,直接拿t…

    2025年3月8日
    200
  • javascript实现上传文件到后台接收

    在wordpress后台管理的插件管理界面,想添加一个ajax无刷新的上传,先说一下思路: 上传文件,必需得取得当前的文件的数据流,然后通过ajax的post方式发送给服务器处理。 (1)如何获取当前文件的数据流呢? 答:通过FormDat…

    编程技术 2025年3月8日
    200
  • 详解JavaScript之闭包

    闭包 : 闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。 当内部函数在定义它的作用域的数据外部被引用时,就创建了该内部函数的闭包,如果内部函数引用了位于外部函数的变量,当外部函数调用完…

    编程技术 2025年3月8日
    200
  • js数组操作实例分析

    本文主要和大家分享js数组操作实例分析,主要以代码的形式和大家分享,希望能帮助到大家。 shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined  var a = [1,2,3,4,5];   var b = …

    编程技术 2025年3月8日
    200
  • vue.js实现绑定class

    本文主要和大家分享vue.js实现绑定class,主要以代码的形式和大家分享,希望能帮助到大家。 nbsp;html>                Document                                  …

    编程技术 2025年3月8日
    200
  • JS跨域处理详解

    本文主要和大家分享JS跨域处理详解,解决js的跨域问题可以使用Jsonp,希望能帮助到大家。 js不可以跨域请求数据。 什么是跨域: 1、域名不同 2、域名相同端口不同。 解决js的跨域问题可以使用Jsonp,使用js的特性绕过跨域请求。J…

    2025年3月8日
    200
  • JS预加载图片的实现

    本文主要和大家分享js预加载图片的实现,希望能帮助到大家。 需求:项目中点击按钮,实现切换背景图功能。 问题:在切换css的background-image属性时,先加载图片后显示,会出现一瞬空白期。 解决方法:提前预加载背景图    首先…

    编程技术 2025年3月8日
    200
  • JS中的闭包详解

    本文主要和大家分享js中的闭包详解,主要以代码的方式和大家讲解,希望能帮助到大家。 var n = 999;function f1() {  console.log(n);}f1() // 999 登录后复制 JavaScript有两种作用…

    编程技术 2025年3月8日
    200
  • js实现拼装html代码

    本文主要和大家分享js实现拼装html代码,主要以一张图片和大家分享,希望能帮助到大家。 以上就是js实现拼装html代码的详细内容,更多请关注【创想鸟】其它相关文章!

    2025年3月8日
    200

发表回复

登录后才能评论