Express4.x
是一个开源的node.js项目框架,初学者使用express可以快速的搭建一个Web项目,express中已经集成了Web的http服务器创建、请求和文件管理以及Session的处理等功能,所以express是非常适合初学者的入门学习。
首先,我们需要安装express库。在Express3.6.x之前的版本,Express需要全局安装的,项目构建器模块是合并在Express项目中的,后来这个构建器被拆分出来,独立成为了一个项目express-generator,现在我们只需要全局安装express-generator项目就行了。
npm安装的时候区分本地模式安装和全局模式安装,“-g”就表示全局模式安装,这种模式会被安装在node安装目录的lib所在目录的node_modules文件夹中,全局使用。
npm安装express , -g 指令让express进入全局安装:
npm install -g express
如果是express 4.0之前版本,那么执行“express -V”就可以得到版本号了,可express 4.0之后还需要再安装express-generator包,如果没有安装还执行“express -V”命令会报错。
npm install -g express-generator
现在执行“express -V”可查看express版本信息了。
安装好express-generator包后,我们在命令行就可以使用express命令了。
接下来,我们使用express的命令,来创建项目了。
cd C:\Users\Administrator # 进入工作目录
C:\Users\Administrator
>express -e nodejs-demo # 创建项目
进入项目目录,下载依赖库,构建项目。
C:\Users\Administrator>cd nodejs-demo && npm install
启动项目。
C:\Users\Administrator
\nodejs-demo>npm start
> [email protected] start D:\workspace\javascript\nodejs-demo
> node ./bin/www
module.js:338
throw err;
^
Error: Cannot find module './routes/users'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:278:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object. (D:\workspace\javascript\nodejs-demo\app.js:9:13)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
第一次启动发生了错误,可能是express-generator和express不匹配造成的,找到问题在app.js文件中,注释第9行和第26行。
..
//var users = require('./routes/users');
..
//app.use('/users', users);
..
再次启动项目。
D:\workspace\javascript\nodejs-demo>npm start
> [email protected] start D:\workspace\javascript\nodejs-demo
> node ./bin/www
项目启动成功,打开浏览器 http://localhost:3000,就可以看到显示的页面了。
启动方式为:1. npm start 2.debug (DEBUG=nodejs-demo ./bin/www)
Express4中引入了著名的debug模块,所以debug模式让我们更方便的玩转Node中的模块,其使用方法介绍起来较长,建议大家看看其官方的介绍:https://www.npmjs.org/package/debug
默认PORT其实3000,俺手动修改后使用的是8898端口, 修改文件在./bin/www中。
第5行,app.set('post',process.env.PORT || 8988);
文件目录解析
- app.js,程序启动文件
- bin,创建项目时已经提到,是真实的执行程序
- node_modules, 存放所有的项目依赖库
- package.json,项目依赖配置及开发者信息
- public,静态文件(css,js,img)
- routes,路由文件
- views,页面文件
在Nodejs项目中,package.json文件用来声明项目基本信息和使用的模块,这样在新的环境部署时,只要在package.json文件所在的目录执行npm install命令即可按照所需要的模块啦。
package.json的解释:
- name
~ 在package.json中最重要的就是name和version字段。他们都是必须的,如果没有就无法install;
~ 想好名字之前先去npm registry查看一下这个名字是否已经被使用了,http://registry.npmjs.org/ - version
~ version必须能被 node-semver解析,它被包在npm的依赖中;
~ name和version一起组成的标识在假设中是唯一的。改变包应该同时改变version - private
~ 如果你设置"private": true,npm就不会发布它;
~ 这是一个防止意外发布私有库的方式。如果你要确定给定的包是只发布在特定registry(如内部registry)的,用publishConfighash的描述来重写registry的publish-time配置参数
- scripts
~ “scripts”是一个由脚本命令组成的hash对象,他们在包不同的生命周期中被执行。key是生命周期事件,value是要运行的命令。 - dependencies
~ 依赖是给一组包名指定版本范围的一个hash。这个版本范围是一个由一个或多个空格分隔的字符串。依赖还可以用tarball或者git URL
以上五项仅仅是Express4 package.json使用的,其他细节可参考文档 https://www.npmjs.org/doc/files/package.json.html