浅谈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学习笔记之入门篇
Apr 16 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 NodeJs
NodeJs使用webpack打包项目的方法详解
Feb 28 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网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
JS input 数字验证代码
2009/07/30 Javascript
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
django-csrf使用和禁用方式
2020/03/13 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
父母对孩子的寄语
2014/04/09 职场文书
就职演讲稿范文
2014/05/19 职场文书
大学生求职信
2014/06/17 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
2014年信访工作总结
2014/11/17 职场文书
现实表现证明材料
2015/06/19 职场文书
大学副班长竞选稿
2015/11/21 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android