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

在上一篇中,我们讲了如何去构建第一个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. 11.14 T2 小x的旅行(小x的旅行)

    1.小x的旅行   (travel.pas/c/cpp) [问题描述] 小x大学毕业后,进入了某个公司做了高层管理,他每年的任务就是检查这个公司在全国各地N个分公司的各种状况,每个公司都要检查一遍,且 ...

  2. 【转载】ANSYS 动力分析 (9) - 瞬态动力分析 (1)

    原文地址:http://htbbzzg.blog.163.com/blog/static/69725206201081663611208/ 第四章   瞬态动力分析 第一节:瞬态动力分析的定义和目的  ...

  3. Singly Linked List

    Singly Linked List Singly linked list storage structure:typedef struct Node{ ElemType data; struct N ...

  4. js/css在html文档中的引用外部文件方式对比

    包含css样式表和js脚本的最好方式是使用外部文件,因为css/js和html标记文档可以清晰地分离. css的外部引用写在<head></head>中: <head&g ...

  5. BingHack,Bing旁注API查询工具

    现在旁注查询都失效了.通过网上查询发现有人说可以通过微软的API进行旁注查询 https://datamarket.azure.com/dataset/explore/bing/search 注册登录 ...

  6. MATLAB 绘图时的相关心得

    matlab中如何调整legend的位置? legend('sinx',-1); %----位于图形框外面-----------------------legend('sinx',0);------- ...

  7. 【android】Android am命令使用

    一.开启Activity.服务.广播 1.开启Activity.服务.广播基础知识 通过adb shell,可以使用activity manager(arm)工具来执行不同的系统操作,如开启一个act ...

  8. AFNetwork ATS 网络层改造

    最近一直做项目的ATS改造,期间遇到了种种问题,各种坑都记录下来, 比如iOS版本.afnetwork版本.证书(是否为自签证书).域名验证.TLS版本等等,我们项目更复杂,还使用了域名到IP映射的路 ...

  9. Intellij IDEA +MAVEN+Jetty实现SpringMVC简单查询功能

    利用 Intellij IDEA +MAVEN+Jetty实现SpringMVC读取数据库数据并显示在页面上的简单功能 1 新建maven项目,配置pom.xml <project xmlns= ...

  10. MySql开启慢查询报错:Could not open /var/log/slow_query.log for logging (error 13).

    Turning logging off for the whole duration of the MySQL server process. File '/var/log/slow_query.lo ...