简介

Mean是JavaScript的全栈开发框架。更多介绍

用Express实现MVC模式开发是Mean Web全栈开发中的一部分。

Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。Express官网

两种文件夹结构

水平文件夹结构:

按照文件的功能来分类。整个应用的分类都放在一个按照MVC文件夹结构组合的目录之中。例如:

app文件夹用于保存Express应用的逻辑部分相关代码,包含:

controllers文件夹:存放Express应用的控制器文件

  • models文件夹:存放应用模型
  • routes文件夹:存放路由中间件文件
  • views文件夹:存放应用视图文件

config文件夹用于存放Express配置文件。例如:

env文件夹:存放Express应用环境配置文件(测试、开发环境的切换等等)

config.js文件:用于Express应用配置

express.js文件:用于Express应用初始化

public文件夹用户保存浏览器端的静态文件,再次按照MVC模式分为:

  • config文件夹:用于存储AngularJS应用的配置文件
  • controllers文件夹,用户存储AngularJS应用的控制文件
  • css文件夹:存放CSS样式
  • directives文件夹:存放AngularJS应用的指令文件
  • filters文件夹:存放AngularJS应用的过滤器文件
  • img文件夹:存放图片
  • views文件夹:存放AngularJS应用的视图文件
  • application.js文件:用于AngularJS的初始化

package.json文件:存有用于管理应用依赖的元数据

server.js文件:是Node程序的主文件,以模块的方式加载express.js引导Express应用的启动

垂直文件夹结构:

按照文件所实现的功能进行文件和文件夹管理,每个功能都有各自的MVC模式组织目录结构,比较适合大型项目。比如:

server文件夹用于存放服务器逻辑,其内部按照MVC可分为:

controllers、models、routes、views、config(evn、feature.server.config.js)文件夹

client文件夹用于存放客户端文件,按照MVC模式可分为:

config、controllers、css、directives、filters、img、views、feature.client.module.js文件和文件夹等

以水平文件夹结构为例

1.首先创建如下目录:

2.package.json代码内容如下,暂时不用的dependencies可以不用写上去。

{
"name": "websiteframe03",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node server.js"
},
"dependencies": {
"body-parser": "~1.16.0",
"cookie-parser": "~1.4.3",
"debug": "~2.6.0",
"ejs": "~2.5.5",
"express": "~4.14.1",
   "serve-favicon": "~2.3.2"
}
}

3.在app/controllers文件夹里面创建一个名为index_server_control.js的文件,注意命名方式,因为项目中前端AngularJS也会涉及到MVC模式,所以尽量将前端和后端的MVC文件命名方式区分开来。

控制器:index_server_control.js文件里面代码如下:

/**
* Created by Goss on 2017/6/6.
* 控制器:拼数据给视图,渲染应用视图
*/
exports.render=function(req,res){
console.log('start index_server_control_render'); //res.send('Hello world');
res.render('index',{title:'Hello world title'});
}

4.两种路由方式:

1.app.route(path).VERB(callback)

2.app.VERB(path,callback)

(VERB要替换成小写的http方法名,比如get、post)

创建路由文件index_server_routes.js,然后加入如下代码:

/**
* Created by Goss on 2017/6/6.
* 中间件:业务逻辑
*/
var index=require('../controllers/index_server_control.js'); function index_server_routes(app){
console.log('start index_server_routes');
app.get('/',index.render);
return app;
} module.exports=index_server_routes;

5.接下来创建express_config.js文件来创建Express应用对象,分成两步:

  • a.创建Express应用实例
  • b.调用前面创建的路由文件,以函数调用的方式传入应用实例

路由文件中的函数会为应用实例调用控制器的render()方法来创建新的路由配置,最后返回处理好的应用实例,代码如下:

/**
* Created by Goss on 2017/6/6.
* 配置Express应用,所有与Express应用相关的配置也需要添加到这个文件中
*/
var express=require('express');
var index_server_routes=require('../app/routes/index_server_routes.js'); function express_config(){
console.log('start express_config');
var app=express(); app.set('views','./app/views'); //设置视图文件存储目录
app.set('view engine','ejs'); //设置EJS作为Express应用的模板引擎 new index_server_routes(app); app.use(express.static('./public')); //指定静态文件所在路径,要放在路由中间件之下,即先执行路由逻辑
return app;
} module.exports=express_config;

6.最后在根目录的server.js文件中写入主程序代码,通过包含Express配置模块,获取Express应用对象实例,并监听8080端口,代码如下:

var express_config=require('./config/express_config.js');
var app=new express_config(); app.listen(8080); console.log('server running at http://localhost:8080'); module.exports = app;

7.在views文件夹中加入EJS视图渲染文件,并在express_config.js文件中加入app.set对引擎进行设置,index.ejs代码如下:

<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<img src="/images/timg.jpg" alt="img">
</body>
</html>

8.静态文件路径的配置,即在express_config.js里面加入静态文件路径:

app.use(express.static('./public'));    //指定静态文件所在路径,要放在路由中间件之下,即先执行路由逻辑

最后运行:node server运行服务端,浏览器中打开:http://localhost:8080

下篇加入:MongoDB

【Web开发】Mean web开发 01-Express实现MVC模式开发的更多相关文章

  1. JavaFX桌面应用-MVC模式开发,“真香”

    使用mvc模块开发JavaFX桌面应用在JavaFX系列文章第一篇 JavaFX桌面应用开发-HelloWorld 已经提到过,这里单独整理使用mvc模式开发开发的流程. ~ JavaFX桌面应用开发 ...

  2. .net使用mvc模式开发web应用 模型与视图间的数据处理

    http://www.cnblogs.com/JeffreyZhao/archive/2009/02/27/mvc-use-strong-type-everywhere.html#3427764 本文 ...

  3. Extjs MVC模式开发,循序渐进(一)

    本文讲述extjs mvc的Helloworld,tabPanel,event,页面布局layout等内容. 本页包含:MVC模式案例(一)~MVC模式案例(六),从搭建extjs mvc到点击按钮生 ...

  4. 【转】利用MVC模式开发Java应用程序[组图]

    Java是一种面向对象的语言,是实现面向对象编程的强大工具.我们在实际编程中,应该运用并发挥其最大效能.但是,要利用面向对象编程思想,自己独立开 发出好的Java应用程序,非凡是大.中型程序,并不是一 ...

  5. java web简易网上书店项目系列,使用MVC模式(servlet+jstl+dbutils),开篇

    一. 针对很多java web初学者入门困难的问题,笔者利用一个小型web项目,一步一步的展示java web开发方法,每一个章节引入一些java web开发的重点知识,让同学们可以将java web ...

  6. 使用MVC模式开发一简单的销售额查询系统

    与上一篇比较,只改变了index.jsp文件中form的提交路径 <form action="ShowServlet" method="post"> ...

  7. 基于MVC模式开发的后台框架

    1.ThinkCMF 2.NFine快速开发平台 3.力软快速开发框架 如有好的开发框架希望可以一起交流

  8. Angular——MVC模式开发实战

    创建项目 创建工作目录 使用bower下载需要插件 git init.add.commit之后得到分支master,再创建developer分支,然后再此分支上进行具体功能开发 MVC架构 之前小项目 ...

  9. mvc模式开发

随机推荐

  1. uc广告过滤你能更坑点不

    背景: 搞的手机站要上线,电脑测试木有问题,拿手机访问,有个页面始终不正常, 其他的 windows phone 的正常, ios 的也正常 就唯独 ,用的是安卓,uc的浏览器显示有问题 我勒个去,那 ...

  2. java复习(5)---接口、继承、多态

    Java作为完全面向对象语言,接口.继承和多态是三个非常重要的概念. 1.继承. (1)关键字: extends (2)子类用super()调用父类构造函数,用super().方法 调用父类的成员方法 ...

  3. Vim常用操作-快速删除括号中内容。

    如果你和我一样,希望拥有众多工具,发挥工具最大执行效率,让工作事半功倍的话,我推荐你来使用下 Vim. 刚接触Vim 会觉得它的学习曲线非常陡峭,要记住很多命令,操作太复杂.所以这个系列的分享,不会教 ...

  4. Jmeter察看结果树的响应数据中的中文显示乱码问题处理

    1.Jmeter的察看结果树的响应数据有中文时会显示乱码,如图,我访问百度HTTP请求,响应数据中的title处是一串乱码 2.我们需要改一个设置,打开jmeter\bin\jmeter.proper ...

  5. 存储容量和IOPS的关系

    在云计算时代,数据量成几何形式增加,必然会考虑增加存储容量,但是增加存储容量不简单存储性能得到提升,他们之间没有必然的联系: 存储容量,就是指存储设备上能够存储数据的大小,比如,一个磁盘阵列有50T的 ...

  6. 【算法系列学习】状压dp [kuangbin带你飞]专题十二 基础DP1 D - Doing Homework

    https://vjudge.net/contest/68966#problem/D http://blog.csdn.net/u010489389/article/details/19218795 ...

  7. 蓝桥杯-加法变乘法-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  8. 用php(session)实现留言板功能----2017-05-09

    要实现留言功能,发送者和接受者必不可少,其次就是留言时间留言内容. 要实现的功能: 1.登录者只能查看自己和所有人的信息,并能够给好友留言 2.留言板页面,好友采取下拉列表,当留言信息为空时,显示提示 ...

  9. 在ASP.NET Core 中使用Cookie中间件

    在ASP.NET Core 中使用Cookie中间件 ASP.NET Core 提供了Cookie中间件来序列化用户主题到一个加密的Cookie中并且在后来的请求中校验这个Cookie,再现用户并且分 ...

  10. Java学习笔记——设计模式之四.代理模式

    To be, or not to be: that is the question. --<哈姆雷特> 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 上代码: p ...