浅谈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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
使用nodejs开发cli项目实例
Jun 03 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 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转换IP地址到真实地址的方法详解
2013/06/09 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
flask框架中勾子函数的使用详解
2018/08/01 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
python构造IP报文实例
2020/05/05 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
中学老师的自我评价
2013/11/07 职场文书
实习生的自我评价
2014/01/08 职场文书
办护照工作证明范本
2014/01/14 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
乌镇导游词
2015/02/02 职场文书
小学英语课教学反思
2016/02/15 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis