《从零开始做一个MEAN全栈项目》(4)
欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。

在上一篇中,我们讲了如何去构建第一个Express项目,总结起来就是使用两个核心工具,express和npm。npm作为Node的包管理器,在接下来的项目开发中,我们会经常用到。在上一篇的最后,我们已经得到了一个可以运行起来的最简单的项目,loc8r目录下也已经有了很多文件。这一节我们的目标就是对这些文件进行重组和改写,使其符合MVC开发架构。
首先,我们需要了解一下MVC开发架构。MVC代表着模型-视图-控制器,它的目标是将数据、页面、应用逻辑相分离。我们本节通过对项目组件进行重新调整可以使得项目更加强大和可再利用。同时进行MVC模式的划分能够帮助我们更加专注于项目的某一个具体模块,正如我们在第二节中规划的开发计划那样。
MVC框架概览
大多数的网站或者应用都是用来处理用户请求的,然后进行一系列的活动,并且给出响应。在一个典型的MVC架构中,这个流程可以这样概括:
(1)用户发出一个请求
(2)请求被导向到控制器
(3)控制器向模型发起请求
(4)模型对控制器做出响应
(5)控制器将响应回馈给视图
(6)视图向请求发起者进行响应
更改文件夹结构
在上一篇的最末,你已经得到了一个包含很多文件的文件夹loc8r,打开这个文件夹,你会发现里面有一个views文件夹,甚至还有一个routes文件夹,但是并没有models和controllers文件夹。我们将对这些文件夹以及里面的内容进行简单得组装,得到我们想要的MVC架构。我们先完成以下几步
(1)在项目文件夹下新建一个文件夹app_server,代表这是位于服务端的代码
(2)在app_server文件夹里面新建两个文件夹controllers和models,分别放置本项目的服务器端的控制器和数据模型
(3)将原有的views文件夹和routes文件夹直接移往app_server文件夹下面
这样我们就得到了一个非常明显的MVC架构的应用,并且我们很清楚每一个文件夹是负责哪方面的内容,在实际开发过程中,我们也可以很轻易地知道我们该专注于哪一块的内容。整个移动的过程大致如下
左边是Express自动生成的文件目录,右边是我们更改过后的MVC框架目录。
由于我们已经更改了一些文件的位置,Express在自动生成项目的时候,引用的原来的默认目录,因此此时我们会发现新的响应运行不了了,这时候我们就需要对一些默认路径配置项进行修改,使我们整个项目重新活过来。
修改默认路径
我们已经移动了views和routes这两个文件夹,现在我们需要在引用这两个文件夹的地方修改路径。我们需要告诉Express在运行项目的时候,去哪里找到这些对应的文件。app.js文件是整个应用的入口文件,Express启动的时候就是通过这个入口一步步寻找到后面的文件,我们现在打开这个文件。
首先,Express在寻找视图进行渲染的时候,会去根目录下面寻找views文件夹。这里我们需要对路径进行修改。
到了这里,Express终于可以正确找到views文件夹的位置,下面我们需要修改routes文件夹的位置,现在app.js中找到下面这几行:
对路径进行修改:
这样Express就可以正确找到routes的位置啦。到了这个地方,重新npm start一下我们的项目,你会发现应用又活过来。这就说明Express能够正确找到对应文件的位置。
下一节我们将讲述如何将控制器的内容从routes里面分离出来发哦controllers文件夹里面,并且我们将开始着手使用boostrap框架来增强页面展示效果~
《从零开始做一个MEAN全栈项目》(4)的更多相关文章
- 《从零开始做一个MEAN全栈项目》(1)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在本系列的开篇,我打算讲一下全栈项目开发的优势,以及MEAN项目各个模块的概览. 为什么选择全栈开发? ...
- 《从零开始做一个MEAN全栈项目》(2)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 上一节简单介绍了什么是MEAN全栈项目,这一节将简要介绍三个内容:(1)一个通用的MEAN项目的技 ...
- 《从零开始做一个MEAN全栈项目》(3)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 上一篇文章给大家讲了一下本项目的开发计划,这一章将会开始着手搭建一个MEAN项目.千里之行,始于足下, ...
- 一个关于vue+mysql+express的全栈项目(一)
最近学了mysql数据库,寻思着能不能构思一个小的全栈项目,思来想去,于是就有了下面的项目: 先上几张效果图吧 目前暂时前端只有这几个页面,后端开发方面,有登录,注册,完善用户信息,获取用 ...
- Vue、Nuxt服务端渲染,NodeJS全栈项目,面试小白的博客系统~~
Holle,大家好,我是李白!! 一时兴起的开源项目,到这儿就告一段落了. 这是一个入门全栈之路的小项目,从设计.前端.后端.服务端,一路狂飙的学习,发量正在欣喜若狂~~ 接触过WordPress,H ...
- Vue、Node全栈项目~面向小白的博客系统~
个人博客系统 前言 ❝ 代码质量问题轻点喷(去年才学的前端),有啥建议欢迎联系我,联系方式见最下方,感谢! 页面有啥bug也可以反馈给我,感谢! 这是一套包含前后端代码的个人博客系统,欢迎各位提出建议 ...
- SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践
一. 前言 日志对于一个程序的重要程度不用过多的言语修饰,本篇将以实战的方式讲述开源微服务全栈项目 有来商城 是如何整合当下主流日志解决方案 ELK +Filebeat . 话不多说,先看实现的效果图 ...
- 全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口
通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 首页书籍信息 先来回顾一下首页书籍都有哪些信息: 从下面的图片可以看 ...
- 全栈项目|小书架|服务器开发-NodeJS 使用 JWT 实现登录认证
通过这篇 全栈项目|小书架|服务器开发-JWT 详解 文章我们对JWT有了深入的了解,那么接下来介绍JWT如何在项目中使用. 安装 $ npm install jsonwebtoken 生成 Toke ...
随机推荐
- 【转载】Ansys中的阻尼
原文地址:http://www.cnblogs.com/ylhome/archive/2009/08/26/1554195.html ANSYS动力学分析中提供了各种的阻尼形式,这些阻尼在分析中是如何 ...
- 差分:IncDec Sequence 差分数组
突然就提到了这个东西,为了不再出现和去年联赛看见二分没学二分痛拿二等第一的情况,就去学了一下,基础还是比较简单的-- 先看一个经典例题: 给定一个长度为n的数列{a1,a2...an},每次可以选择一 ...
- 论文笔记--Fast RCNN
很久之前试着写一篇深度学习的基础知识,无奈下笔之后发现这个话题确实太大,今天发一篇最近看的论文Fast RCNN.这篇文章是微软研究院的Ross Girshick大神的一篇作品,主要是对RCNN的一些 ...
- FreeBSD 无线配置
无线配置在 handbook 中早已有了,但 handbook 中采用写入配置文件的办法,缺乏灵活性,补充下 on the fly 的方法 假设网卡接口为 ath0 ifconfig wlan0 cr ...
- soanar,jenkins
http://www.sonarqube.org/ https://blogs.msdn.microsoft.com/visualstudioalm/2016/02/18/sonarqube-scan ...
- 数据注解和验证 – ASP.NET MVC 4 系列
不仅在客户端浏览器中需要执行验证逻辑,在服务器端也需要执行.客户端验证能即时给出一个错误反馈(阻止请求发送至服务器),是时下 Web 应用程序所期望的特性.服务器端验证,主要是因为来自网 ...
- Android学习八:获取网络图片
看到QQ群里有个朋友说加载图片内存溢出的问题,所以就按照自己的想法试试的.但是按照他的方法,不知道为何没有发生内存溢出,不知道什么情况. 写这篇文章主要有三个目的: 1.多线程的学习 2.图片加载的学 ...
- 怎么用BarTender的格式刷
BarTender的新格式刷使您能够轻松地在模板上的多个对象之间共享格式.您可以在单个模板中以及在多个BarTender模板和文档之间复制对象样式.下面小编给大家来讲讲BarTender格式刷这一可用 ...
- 5G扫盲
打开手机,连接wifi,如果想要下载一部自己喜欢的高清电影,一般需要半小时左右的时间.5G时代,你可能花费不到1分钟就能完成这些操作.更快的网速.更多的应用意味着更广阔的市场空间,也意味着更激烈的市场 ...
- oracle 科普
Schem定义 A schema is a collection of database objects (used by a user.). Schema objects are the logic ...