node.js基础入门-3

来源:互联网 发布:仓库用的软件 编辑:程序博客网 时间:2024/06/05 19:48
# 1.mvc
### 1.1 什么样的代码才能称之为优雅?


- 问题
  + 怎么去写一个函数
    var add=function(v1,v2){
       var date=new Date();
      return v1+v2;
    }
    这样写不优雅,写代码和写作文一样,需要点题。
  + 什么样的代码能放在一个js里
    点题
  + 如何去设计两个函数直接的调用
   var add=function(v1,v2,date){
       
      return ''+v1+v2+date;
    }
    var add =function(v1,v2){
      return v1+v2;
    }
    add()+date;
- 完成功能!=代码优雅----->一个基本的衡量标准低耦合高内聚


### 1.2 什么是高内聚低耦合?


- 内聚从功能角度来衡量模块内代码的联系,
  一个好的内聚模块应当恰好做一件事--->被我们称之为高内聚。
  例如,计算器模块
- 高内聚优势:1.可读性;2.复用性;3.方便维护和修改
- 耦合是各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
- 低耦合:1. 独立完成任务 2.复用性 3.方便维护和修改 
- 理解高内聚低耦合能使我们更好的理解mvc


###1.3什么是mvc?


MVC是一种设计思想,它是所有面向对象程序设计语言都应该遵守的规范。
MVC思想讲一个应用分成三个基本部分:Model(模型),View(视图)
,Controller(控制器),这三个部分以最少的耦合协同工作,
从而提高应用的可扩展性及可维护性。
大部分web技术的框架基本都属于mvc结构的,包括java、.net、node等。


# 2.express
###


npm install express --save
npm i -S express


npm install express --save-dev
npm i -D express
脚手架工具的安装
npm install -g  express-generator
###2.1为什么使用框架?
app.use(express.static(path.join(__dirname, 'public')));
- 原生Node开发,会发现很多问题。比如:
  + 呈递静态页面很不方便,需要处理每个HTTP请求
  + 路由处理不直观清晰,需要写很多字符串判断和正则表达式
  + 不能集中精力写业务,要考虑很多其它的东西
- Express框架致力于解决上述问题。
- 例如,jQuery,简化了dom操作,让我们的关注点从如何去操作dom转变成具体我们要操作dom去干什么。
###2.2 express介绍
- express 中文官网http://www.expressjs.com.cn/
- Express是目前最流行的基于Node.js的Web开发框架,提供各种模块,可以快速地搭建一个具有完整功能的网站。
- Express有着惊艳的路由能力
  Express中静态资源服务,就是一句话的事儿
  Express与模板引擎配合,直观清晰。
###2.3 路由
路由器,是告知请求者,所请求的ip在哪里,并且把信息发送过去。
web框架的路由,是告知框架,所请求的http参数应该调用的模块、类、方法在哪里,把请求发送过去。
``` javascript
// GET method route
app.get('/', function (req, res) {
  res.end('GET request to the homepage');
});
// POST method route
app.post('/', function (req, res) {
  res.end('POST request to the homepage');
});
```
通过模糊匹配路由
``` javascript
// 匹配 acd 和 abcd
app.get('/ab?cd', function(req, res) {
  res.send('ab?cd');
});
// 匹配 abcd、abbcd、abbbcd等 匹配n个加号前的字母
app.get('/ab+cd', function(req, res) {
  res.send('ab+cd');
});
// 匹配 abcd、abxcd、abRABDOMcd、ab123cd等 *代表任意
app.get('/ab*cd', function(req, res) {
  res.send('ab*cd');
});
// 匹配 /abe 和 /abcde
app.get('/ab(cd)?e', function(req, res) {
 res.send('ab(cd)?e');
});
```
通过正则表达匹配路由
``` javascript
// 匹配任何路径中含有 a 的路径:
app.get(/a/, function(req, res) {
  res.send('/a/');
});
// 匹配 butterfly、dragonfly,不匹配 butterflyman、dragonfly man等
app.get(/.*fly$/, function(req, res) {
  res.send('/.*fly$/');
});
```
### 2.4 中间件
### 2.4.1 什么是中间件?




- Express 是一个自身功能极简,完全是由路由和中间件构成一个的 web 开发框架:从本质上来说,一个 Express 应用就是在调用各种中间件。
  中间件(Middleware)是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为 next 的变量。


- 往往一个http请求发送到服务器,都需要通过很多的判断和处理。
  一个请求发送过来---->用户是否已经登录---->用户请求的是什么资源(静态资源、动态页面、json数据)---->统计一下用户的请求--->(如果请求的内容不存在)返回404


- 中间件的功能包括:
  执行任何代码。
  修改请求和响应对象。
  终结请求-响应循环。
  调用堆栈中的下一个中间件。
  如果当前中间件没有终结请求-响应循环,则必须调用 next() 方法将控制权交给下一个中间件,否则请求就会挂起。
通过 app.use(中间件的代码)使用中间件
### 2.4.2 中间件种类
Express 应用可使用如下几种中间件:
  + 内置中间件
  + 第三方中间件


  
  + 错误处理中间件
  + 应用级中间件
  + 路由级中间件


### 2.4.3 内置中间件
- 介绍
从 4.x 版本开始,express取消了大部分的内置中间件,除了 express.static, Express 以前内置的中间件现在已经全部单独作为模块安装使用了
- 为什么只留一个中间件
让express只留一个框,轻量、灵活、便于修改。


### 2.4.4 使用中间件
- 挂载中间件
  app.use([path],function)
- 回调函数中的参数
  req, res, next
  next是一个方法,被调用后,继续走下一个中间件。
0 0
原创粉丝点击