在之前的随笔中,我写过一个用原生node来搭建web静态服务的一个例子,那个例子中还是静态文件比较少,外链的资源也相对较少,我们采用的是用路由和mime类型来展示静态服务,代码写起来虽然没有难度,但是看起来显得比较繁琐,如果静态文件资源很多,那么这种方式肯定不是明智之举,而且路由会写很多,后期路由也不好管理和维护,所以有没有一个什么东西来帮我们来做这些事情列,答案肯定是有的。
那就是express框架,我之前说过,express和node的关系就相当于jquery和原生js的关系,但是不能完全等同,因为express是对node更多做的是一种补充,而不是像jq那样,吧js中有的东西做了包装。node极简不可能像IIS那样,IIS中直接就可以提供静态服务,所以express中专门扩展了node的静态服务,使用express能够迅速在node上搭建静态服务。关于express的更多的东西,大家可以到官网去看。我这里就不赘述了。
好,那么我们如何在自己的项目中用express框架列,首先用npm安装express(npm是一个node的包管理工具,强烈建议大家用下,你想找的东西,在npm中都有),之后再自己的项目启动文件(app.js)中引入express模块
var express = require(‘express‘); var controller = require(‘./controllers/index.js‘); var ejs = require(‘ejs‘); var app = express(); //设置模板引擎 app.set(‘view engine‘,‘ejs‘); //静态这连个文件夹 app.use(express.static(‘./public‘)); app.use(express.static(‘./upload‘)); //首页的请求,获取当前的所有相册 app.get(‘/getAllAlbum‘,controller.getAllAlbum); //增加相册 app.get(‘/addAlbum‘,controller.addAlbum); //获取对应相册下面的所有图片 app.get(‘/:albumName‘,controller.getphotos); //上传相片到对应的相册 app.post(‘/upphoto‘,controller.up); //设置在3000端口监听http请求和响应客户端 app.listen(3000);
上面是基于express做的一个小案例(类似于QQ群里面的群相册,我之后的随笔中会写到)
就通过上面的代码,一个node的基本服务就可以跑起来了,看上去是不是很简洁,而且我们看到实现静态服务就一行代码(app.use(express.static(‘./public‘));),这样就把当前目录下的public文件夹静态出去了,在浏览器上就可以访问public里面的文件了,是不是很简单,再看看我们之前用原生node写的时候,不知道要写多少代码,而且自己写的静态服务不能处理缓存问题,express中的静态服务对缓存处理的很好,所以我们基本不用花很多时间在静态服务上,而是更加关心路由和业务,而且通过express框架,我们可以将路由写的很漂亮,代码也变得易懂,而且更好维护。