浅谈Nodejs应用主文件index.js


Posted in NodeJs onAugust 28, 2016

前言

经过之前的文章 《浅谈Nodejs应用的主文件index.js的组成部分》 ,终于认识了 Node 妹子的容颜,然后好像上呀<( ̄︶ ̄)>。呦西~这次让本?旁谒?靥迳嫌巫咭环??胂胍彩遣淮淼巍`藕撸?Y到此为止。

正文

这篇文章主要以组成部分为单位了解一下 index.js 这个主文件...皮肤有多滑( ̄? ̄)~

既然之前说过了index.js的组成部分,那么这次就一个组一个组的说。没错!本帅的手,怎么能放过你的每一寸肌肤!

一、引入依赖模块

嗯..就像这样:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

其实啊,依赖模块就是字面的意思。

用前端工程师的话来说,就是$("#id").attr("class","active")这句代码没有Jquery就转不起来。

用动物的话来说,没有食物就活不下去了。

用本?诺幕袄此担?挥忻米右不畈幌氯チ恕?/p>

嗯哼~综上所述,依赖就是 为接下来要做的事做好能完成该事的准备 。所以上面那些“拼音”都是扮演这种角色的..

二、设置相关配置

献上该组相关代码:

// 视图引擎设置
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

额..就两行代码,胸比较小(  ̄? ̄),毕竟萝莉嘛,啊哈哈哈。

上面两行代码就是设置试图目录并设置 jade 为试图引擎。设置的多少取决于你要用哪些模块,有的模块也有默认设置,但为了自己编写方便,肯定会设置成自己喜欢的样子。

三、中间件

//中间件
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

中间件,严格来说index.js中每一行都是中间件,我估计好多兄弟虽然知道中间件这个词,但还是不了解到底是什么意思,它主要是干嘛的。

所以,本?徘鬃宰攀只?艘环?钪娼鲇械囊徽磐迹?/p>

浅谈Nodejs应用主文件index.js

我相信聪明的人一下就能看懂了,毕竟本?诺幕?贸鋈ヂ粢材苤蹈?毛钱。

正经话:左边大箭头是指代码执行顺序,谁都知道 Js 是从上往下执行的,这里为了好解释中间件,把大箭头看成水流。

而在水流往下流的过程中,有个类似滤网的东西在中间卡了一层,本?磐蝗幌氲搅舜ε?な遣皇且舱庋?ò∨蓿?枷胗植徽?耍?? ̄)。

黑色的滤网,就是上面那段代码,中间件的作用就是在执行主线代码过程前、过程中、过程后的警察、门卫或者引导者。举个栗子,比如使用 bodyParser 中间件,它的作用就是解析 HTTP 请求的 body 数据解析,方便在路由中使用, cookie-parser 也是一样的道理。

在图中两个滤网中间部分,一般为路由,由它来负责返回客户端想要的页面。

这时候,眼尖的就问了,下面那个中间件为什么是红色的?而且为什么要放在路由后面执行?

问的好!我正要说呢。 熟悉Node开发的小伙伴都知道,大部分中间件一般写在路由之前,但是有时候避免不了一些不确定的错误,比如用户访问的页面不存在怎么办?开发版本错误或者正式版本错误了怎么办? 这个时候就轮到“红色”中间件出场了,没错,它主要负责善后的,一般用来处理可能发生的错误。

四、路由

//路由
app.use('/', routes);
app.use('/users', users);

路由可是个好人啊,客户端只需发送请求,路由就会根据请求 url 尽力的去帮你解决请求,它可以用不同的方式( get 、 post 、 put 、 del ...)去处理数据或者返回你想要的页面。总之是个有问尽力回的好银~ 其实路由也是中间件,只是它应该作为一个独立的组成部分更好。

五、开启服务

//启动服务
http.createServer(app).listen(app.get('port'), function () {
  console.log('服务启动成功,端口为:'+app.get('port'));
});

啊哈哈哈哈,终于到高潮了,Node妹子快不行了<( ̄︶ ̄)>

额。。。好像也没什么好说的,就是开启服务了。。。。。。好吧,开启服务前,要通过 http.createServer() 创建一个服务,然后调用 listen() 方法即可开启。这样整个应用就开启啦~~~ 本?拍欠?裢贾械拇蠹?芬部梢运吵┑耐苯?チ恕!=?チ恕!Hチ恕!A恕?/p>

NodeJs 相关文章推荐
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
Nodejs极简入门教程(三):进程
Oct 27 NodeJs
nodejs教程之入门
Nov 21 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
NodeJS和BootStrap分页效果的实现代码
Nov 07 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
详解nodeJS之二进制buffer对象
Jun 03 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
NodeJS远程代码执行
Aug 28 #NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 #NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 #NodeJs
NodeJs的优势和适合开发的程序
Aug 14 #NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 #NodeJs
Nodejs抓取html页面内容(推荐)
Aug 11 #NodeJs
用nodejs的实现原理和搭建服务器(动态)
Aug 10 #NodeJs
You might like
PHP一些有意思的小区别
2006/12/06 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
PHP 验证登陆类分享
2015/03/13 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
在 Laravel 中动态隐藏 API 字段的方法
2019/10/25 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
vue组件学习教程
2017/09/09 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
python中enumerate函数用法实例分析
2015/05/20 Python
Python实现截屏的函数
2015/07/26 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
党校培训自我鉴定范文
2014/03/20 职场文书
职位说明书范文
2014/05/07 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
高中班主任寄语
2019/06/21 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python