欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。

在上一篇中,我们讲了如何去构建第一个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)的更多相关文章

  1. 《从零开始做一个MEAN全栈项目》(1)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在本系列的开篇,我打算讲一下全栈项目开发的优势,以及MEAN项目各个模块的概览. 为什么选择全栈开发? ...

  2. 《从零开始做一个MEAN全栈项目》(2)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习.   上一节简单介绍了什么是MEAN全栈项目,这一节将简要介绍三个内容:(1)一个通用的MEAN项目的技 ...

  3. 《从零开始做一个MEAN全栈项目》(3)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 上一篇文章给大家讲了一下本项目的开发计划,这一章将会开始着手搭建一个MEAN项目.千里之行,始于足下, ...

  4. 一个关于vue+mysql+express的全栈项目(一)

    最近学了mysql数据库,寻思着能不能构思一个小的全栈项目,思来想去,于是就有了下面的项目: 先上几张效果图吧       目前暂时前端只有这几个页面,后端开发方面,有登录,注册,完善用户信息,获取用 ...

  5. Vue、Nuxt服务端渲染,NodeJS全栈项目,面试小白的博客系统~~

    Holle,大家好,我是李白!! 一时兴起的开源项目,到这儿就告一段落了. 这是一个入门全栈之路的小项目,从设计.前端.后端.服务端,一路狂飙的学习,发量正在欣喜若狂~~ 接触过WordPress,H ...

  6. Vue、Node全栈项目~面向小白的博客系统~

    个人博客系统 前言 ❝ 代码质量问题轻点喷(去年才学的前端),有啥建议欢迎联系我,联系方式见最下方,感谢! 页面有啥bug也可以反馈给我,感谢! 这是一套包含前后端代码的个人博客系统,欢迎各位提出建议 ...

  7. SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践

    一. 前言 日志对于一个程序的重要程度不用过多的言语修饰,本篇将以实战的方式讲述开源微服务全栈项目 有来商城 是如何整合当下主流日志解决方案 ELK +Filebeat . 话不多说,先看实现的效果图 ...

  8. 全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口

    通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 首页书籍信息 先来回顾一下首页书籍都有哪些信息: 从下面的图片可以看 ...

  9. 全栈项目|小书架|服务器开发-NodeJS 使用 JWT 实现登录认证

    通过这篇 全栈项目|小书架|服务器开发-JWT 详解 文章我们对JWT有了深入的了解,那么接下来介绍JWT如何在项目中使用. 安装 $ npm install jsonwebtoken 生成 Toke ...

随机推荐

  1. c++中的内存空间不足和自定义处理内存不足

    new操作符动态分配内存时,首先它会调用对象的operator new()函数分配相应大的内存(如果对象类没有重载operator new()函数,则默认调用<new>头文件里的opera ...

  2. wordmate 词典安装

    wordmate,使用 StarDict 的词典,可称为 Android 上的 StarDict 安装 wordmate 后,会在 SD 卡中生成 wordmate 文件夹,词典便放在此目录 下载词典 ...

  3. FreeBSD 无线配置

    无线配置在 handbook 中早已有了,但 handbook 中采用写入配置文件的办法,缺乏灵活性,补充下 on the fly 的方法 假设网卡接口为 ath0 ifconfig wlan0 cr ...

  4. (转) Awesome Deep Learning

    Awesome Deep Learning  Table of Contents Free Online Books Courses Videos and Lectures Papers Tutori ...

  5. edgesForExtendedLayout,automaticallyAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars的影响

    在IOS7以后 ViewController 开始使用全屏布局的,而且是默认的行为通常涉及到布局 就离不开这个属性 edgesForExtendedLayout,它是一个类型为UIExtendedEd ...

  6. 反人类的java

  7. Legacy Notes网络和服务端配置的笔记

    在云服务器上使用LAMP全过程: 第一步:传文件 在windows上下载winscp,连接使用scp协议.注意:centos需要安装scp yum install openssh-clients 即可 ...

  8. [Linux] - CentOS中文乱码解决办法

    CentOS 7 终端中文乱码解决办法: 1.使用vim编辑locale.config文件: vim /etc/locale.conf 2.将LANG="en_US.UTF-8"修 ...

  9. php 图片base64编码生成dataurl和保存为图片

    <?php header('Content-type:text/html;charset=utf-8'); //读取图片文件,转换成base64编码格式 $image_file = 'aaa.j ...

  10. ESXi查询网卡的驱动和固件版本

    ~ # esxcfg-nics -lName PCI Driver Link Speed Duplex MAC Address MTU Description vmnic0 0000:01:00.00 ...