先说明一下缘由,因为自己前段时间在实习,实习期间为了参与项目开发,粗略学习了下Vue、Vuex、Vue-Router,大致会一些基础的。这里也快要做毕业设计了,趁着放假回来的这两天,学习下Node的相关知识,最主要的是学习了Express这个基于Node的web框架,我自己本身选的毕设题目也是有关Node的,自然而然地想去用Vue和Express来做一个前后端分离的项目,也算是为毕业设计做准备了。下面进入正题。

一、 Vue和Express怎么实现前后端分离呢

在接触Express的时候,更多的是使用html、ejs、jade这样的模板来实现的View层页面开发。首先我没有萌生直接在views目录里面,使用.vue后缀文件来代替类似.ejs模板文件的想法。

我首先想到的是,先把后端工程搭建起来,然后再用vue-cli生成前端vue工程,但是两个工程基础架构都建好了,但是怎么将其两者有机地结合在一起呢?

解决思路

之前自己在用Vue做项目的过程中,也是前后端分离的,只不过前端是在一个工程,后端是Java的一个工程,那么想要前后端交互,一般是将前端代码打包好之后,放到后端工程的某个目录下。

前端打包:vue-cli用的是webpack打包,运行npm run build打包命令会在根目录下生成一个dist文件夹,这个文件夹中包含前端的img,css,js文件。

在express中提供静态资源:在使用express生成器生成的项目工程中,一般会将ejs模板文件放在views文件夹下,然后express有一个内置中间件,可以解决访问静态资源的问题。

app.use(express.static('public')) //public是指的放置前端静态资源的文件夹名称,如果有不清楚的地方,可以去express官网看看

同样是访问静态资源,那么在express.static()中间件中,写入vue-cli打包好之后的dist文件夹名称就行了,这下就可以访问前端工程下的静态资源了。

二、前后端分离之后,怎么渲染模板或者页面

Express+ejs(jade)模式下,呈现视图模板的话主要是通过ejs(jade)模板渲染的方式,但是Express+Vue模式下,因为Vue是单页应用,所以Express针对任何路由的处理,都会只返回一个页面(html方式)。

  • Express+ejs(jade)模式

    因为接触Node也比较浅,实际操作的项目很少,所以对于express的原理有些生疏。前两天我对Express框架做了一个小的复习,大致了解了理论,今天在做Vue+Express的时候,怎么渲染页面的原理我竟然忘了???为Express开发模板引擎,我看了这篇之后,才恍然大悟,后端对路由做处理的时候,会使用res.render('about')来渲染并返回模板。about指的就是views文件夹下的about.ejs模板文件。
  • Express+Vue模式

    使用Vue开发前端页面,实际上后端express在对路由做处理的时候,只会返回一个页面,即前端打包生成后的index.html文件。
// 因为是单页应用 所有请求都走/dist/index.html
app.get('*', function(req, res) {
const html = fs.readFileSync(path.resolve(__dirname, '../dist/index.html'), 'utf-8')
res.send(html)
})

这样前后端分离也做好了,页面访问也ok,然后就可以继续开发前端页面逻辑及后端路由处理及数据库操作。

Vue+Express实现前后端分离的更多相关文章

  1. List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac

    List多个字段标识过滤 class Program{  public static void Main(string[] args) { List<T> list = new List& ...

  2. Vue+Spring Boot 前后端分离的商城项目开源啦!

    新蜂商城 Vue 移动端版本开源啦! 去年开源新蜂商城项目后,就一直在计划这个项目 Vue 版本的改造,2020 年开始开发并且自己私下一直在测试,之前也有文章介绍过测试过程和存在的问题,修改完成后, ...

  3. vue+node+mongodb前后端分离博客系统

    感悟 历时两个多月,终于利用工作之余完成了这个项目的1.0版本,为什么要写这个项目?其实基于vuejs+nodejs构建的开源博客系统有很多,但是大多数不支持服务端渲染,也不支持动态标题,只是做到了前 ...

  4. ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目

    一.前言 这几年前端的发展速度就像坐上了火箭,各种的框架一个接一个的出现,需要学习的东西越来越多,分工也越来越细,作为一个 .NET Web 程序猿,多了解了解行业的发展,让自己扩展出新的技能树,对自 ...

  5. vue项目实践-前后端分离关于权限的思路

    前后端分离后权限的思路 最近看到许多关于权限的思路,但好像都是使用动态加载路由的方式,现在也分享下我在项目中使用的解决方案. 前后端分离关于权限的处理每个人都不一样,根据项目选择制定合适的方案就好 我 ...

  6. Springboot + Vue + shiro 实现前后端分离、权限控制

    本文总结自实习中对项目对重构.原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelA ...

  7. vue+Ueditor集成 [前后端分离项目][图片、文件上传][富文本编辑]

    后端DEMO:https://github.com/coderliguoqing/UeditorSpringboot 前端DEMO:https://github.com/coderliguoqing/ ...

  8. 悟空CRM(基于jfinal+vue+ElementUI的前后端分离的开源CRM系统)

    https://www.jfinal.com/share/1591 官网:http://www.5kcrm.com 官网:http://www.72crm.com 论坛:http://bbs.72cr ...

  9. Spring Boot + Vue + Shiro 实现前后端分离、权限控制

    本文总结自实习中对项目的重构.原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelA ...

随机推荐

  1. 64位linux安装32位校园网客户端

    下面的是ubuntu下和arch下的安装方法,ubuntu的转自网络, ubuntu: 下载客户端并解压 安装开发包 1 sudo -i 2 dpkg --add-architecture i386 ...

  2. 莫烦课程Batch Normalization 批标准化

    for i in range(N_HIDDEN): # build hidden layers and BN layers input_size = 1 if i == 0 else 10 fc = ...

  3. 【CTF MISC】pyc文件反编译到Python源码-2017世安杯CTF writeup详解

    1.题目 Create-By-SimpleLab 适合作为桌面的图片 首先是一张图片,然后用StegSolve进行分析,发现二维码 扫码得到一串字符 03F30D0A79CB0558630000000 ...

  4. Pytorch数据读取框架

    训练一个模型需要有一个数据库,一个网络,一个优化函数.数据读取是训练的第一步,以下是pytorch数据输入框架. 1)实例化一个数据库 假设我们已经定义了一个FaceLandmarksDataset数 ...

  5. log4j与commons-logging slf4j的关系

    1. slf4j     他只提供一个核心slf4j api(就是slf4j-api.jar包),这个包只有日志的接口并没有实现     所以如果要使用就得再给它提供一个实现了些接口的日志包,     ...

  6. dragstart drag dragend dragenter dragover dragleave drop

    dragstart drag dragend dragenter dragover dragleave drop   前端框架层出不穷,网页上的效果越来越绚丽,制作绚丽的效果的成本越来越低,其中有种拖 ...

  7. hihocoder1636 Pangu and Stones(区间DP(石子合并变形))

    题目链接:http://hihocoder.com/problemset/problem/1636 题目大意:有n堆石头,每次只能合并l~r堆,每次合并的花费是要合并的石子的重量,问你合并n堆石子的最 ...

  8. 20155225 实验二《Java面向对象程序设计》实验报告

    20155225 实验二<Java面向对象程序设计>实验报告 一.单元测试 三种代码 知道了伪代码.产品代码.测试代码的关系和用途,并根据老师的例子,按测试代码调试了产品代码. 值得注意的 ...

  9. css实现360导航首页超链接变色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Tensorflow入门(安装)

    TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统.主要用于深度学习(神经网络)方面的研究与应用.Tensorflow适用与Python.C++.Java,本博客中主 ...