Maison> interface Web> js tutoriel> le corps du texte

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

零到壹度
Libérer: 2018-03-26 10:34:47
original
2731 Les gens l'ont consulté

本文主要给大家介绍了新手如何通过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!也许一年时间已经让我经历了从入门到放弃。

扬帆!起航!

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

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


  3. # 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpack blog # 安装依赖,走你 $ cd blog $ npm install $ npm run dev
    Copier après la connexion
  4. 然后安装Vue-router用于SPA路由及vue-resource或axios用于Ajax。

    $ npm install --save vue-router $ npm install --save axios # vue官方推荐的ajax库不再是vue-resource,而是axios
    Copier après la connexion

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

    $ npm run build
    Copier après la connexion
  5. 后端开发:创建服务端目录结构并安装express框架及marked用于将md文件转为html

    $ mkdir blog-server && cd blog-server $ mkdir public $ npm install --save express$ npm install --save marked
    Copier après la connexion

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

    渲染静态页面,将第二部编译出来的静态文件及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);
    Copier après la connexion
    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(); });
      Copier après la connexion
  6. 部署

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

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

      $ npm install -g PM2 $ pm2 start server.js $ pm2 startup
      Copier après la connexion

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

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


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!