浅谈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学习笔记之MongoDB模块
Jan 13 NodeJs
Nodejs如何搭建Web服务器
Mar 28 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
nodejs中方法和模块用法示例
Dec 24 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 NodeJs
详解nodejs内置模块
May 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
php5新改动之短标记启用方法
2008/09/11 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
详解PHP归并排序的实现
2016/10/18 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
nodejs基础知识
2017/02/03 NodeJs
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
Django自定义分页效果
2017/06/27 Python
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
Python绘制七段数码管实例代码
2017/12/20 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
python支付宝支付示例详解
2019/08/22 Python
python实现代码审查自动回复消息
2021/02/01 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
旷课检讨书大全
2014/01/21 职场文书
党员评议思想汇报
2014/10/08 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
护士业务学习心得体会
2016/01/25 职场文书