Node.js之express生成器express-generator
来源:互联网 发布:四川房卡麻将源码 编辑:程序博客网 时间:2024/05/01 05:51
安装 Express 并将其保存到依赖列表中:
$ npm install express --save
如果只是临时安装 Express,不想将它添加到依赖列表中,只需略去 –save 参数即可:
$ npm install express
安装 Node 模块时,如果指定了 –save 参数,那么此模块将被添加到 package.json 文件中 dependencies 依赖列表中。 然后通过 npm install 命令即可自动安装依赖列表中所列出的所有模块。
Hello world 实例
继续之前请务必按照 安装 章节执行了所有的前期准备工作。
接下来,我们一起创建一个基本的 Express 应用。
注意:这里所创建是一个最最简单的 Express 应用,并且仅仅只有一个文件 — 和通过 Express 应用生成器 所创建的应用完全不一样,Express 应用生成器所创建的应用框架包含多个 JavaScript 文件、Jade 模板和针对不同用途的子目录。
进入 myapp 目录,创建一个名为 app.js 的文件,然后将下列代码复制进去:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
上面的代码启动一个服务并监听从 3000 端口进入的所有连接请求。他将对所有 (/) URL 或 路由 返回 “Hello World!” 字符串。对于其他所有路径全部返回 404 Not Found。
- 1
- 1
通过如下命令启动此应用:
$ node app.js
然后在浏览器中打开 http://localhost:3000/ 并查看输出结果。
Express 应用生成器
通过应用生成器工具 express 可以快速创建一个应用的骨架。
通过如下命令安装:
- 1
- 2
- 1
- 2
-h 选项可以列出所有可用的命令行选项:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
例如,下面的示例就是在当前工作目录下创建一个命名为 myapp 的应用。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
然后安装所有依赖包:
- 1
- 2
- 1
- 2
启动这个应用(MacOS 或 Linux 平台):
$ DEBUG=myapp npm start
Windows 平台使用如下命令:
- 1
- 1
然后在浏览器中打开 http://localhost:3000/ 网址就可以看到这个应用了。i
通过 Express 应用生成器创建的应用一般都有如下目录结构:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
通过 Express 应用生长期创建应用只是众多方法中的一种。你可以不使用它,也可以修改它让它符合你的需求,都是开源的嘛!
一个简单的 Express 路由
这篇教程只是对 Express 路由做一个简单的介绍。路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。
每一个路由都可以有一个或者多个处理器函数,当匹配到路由时,这个/些函数将被执行。
路由的定义由如下结构组成:app.METHOD(PATH, HANDLER)。其中,app 是一个 express 实例;METHOD 是某个 HTTP 请求方式中的一个;PATH 是服务器端的路径;HANDLER 是当路由匹配到时需要执行的函数。
本教程假定已经存在一个命名为 app 的 express 实例了,并且应用程序是运行状态。如果你还不熟悉如何创建一个应用并使其运行,请参考 Hello world 实例。
下面的代码展示了几个路由实例:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
关于路由的详细资料,请参考 路由指南 章节。http://www.expressjs.com.cn/guide/routing.html
利用 Express 托管静态文件
通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片、CSS、JavaScript 文件等。
将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。例如,假设在 public 目录放置了图片、CSS 和 JavaScript 文件,你就可以:
app.use(express.static('public'));
现在,public 目录下面的文件就可以访问了。
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
所有文件的路径都是相对于存放目录的,因此,存放静态文件的目录名不会出现在 URL 中。
如果你的静态资源存放在多个目录下面,你可以多次调用 express.static 中间件:
app.use(express.static('public'));app.use(express.static('files'));
访问静态资源文件时,express.static 中间件会根据目录添加的顺序查找所需的文件。
如果你希望所有通过 express.static 访问的文件都存放在一个“虚拟(virtual)”目录(即目录根本不存在)下面,可以通过为静态资源目录指定一个挂载路径的方式来实现,如下所示:
挂载路径的方式参考:http://www.expressjs.com.cn/4x/api.html#app.use
app.use('/static', express.static('public'));
现在,你就爱可以通过带有 “/static” 前缀的地址来访问 public 目录下面的文件了。
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
Express 常见问题
我的应用该如何组织?
对于这个问题其实没有一个确定的答案。这要根据你的应用的规模和参与开发的团队来确定。为了尽可能灵活,Express 自身是并没有硬性要求应用结构是哪一种的。
根据你的需求,可以把路由和其他应用相关的业务逻辑存放在任意多个文件和任意目录中。下面推荐的实例或许对你能有一些启发:
- Route listings
https://github.com/strongloop/express/blob/4.13.1/examples/route-separation/index.js#L32-47
- Route map
https://github.com/strongloop/express/blob/4.13.1/examples/route-map/index.js#L52-L66
- MVC style controllers
https://github.com/strongloop/express/tree/master/examples/mvc
另外,这里还有一些第三方 Express 扩展简化了这种组织方式:
- Resourceful routing
https://github.com/expressjs/express-resource
如何定义模型(model)?
Express自身并不感知数据库是否存在。数据库功能依赖于第三方 Node 模块提供的接口。
如何验证用户?
这是另一个 Express 不涉及的领域。你可以使用任何验证方式。对于简单的用户名/密码验证方式,可以参考这个实例。
Express 支持哪些模板引擎?
Express 支持任何符合 (path, locals, callback) 接口规范的模板引擎。 为了统一模板引擎的接口和缓存功能,请参考 consolidate.js 项目。其他未提及的模板引擎也可能支持 Express 接口规范。
如何处理 404 ?
在 Express 中,404 并不是一个错误(error)。因此,错误处理器中间件并不捕获 404。这是因为 404 只是意味着某些功能没有实现。也就是说,Express 执行了所有中间件、路由之后还是没有获取到任何输出。你所需要做的就是在其所有他中间件的后面添加一个处理 404 的中间件。如下:
- 1
- 2
- 3
- 1
- 2
- 3
请参考错误处理章节以了解更多信息。
错误处理章节:http://www.expressjs.com.cn/guide/error-handling.html
如何渲染纯 HTML 文件?
不需要!无需通过 res.render() 渲染 HTML。你可以通过 res.sendFile() 直接对外输出 HTML 文件。如果你需要对外提供的资源文件很多,可以使用 express.static() 中间件。
如何设置一个错误处理器?
错误处理器中间件的定义和其他中间件一样,唯一的区别是 4 个而不是 3 个参数,即 (err, req, res, next):
- Node.js之express生成器express-generator
- Express 应用生成器express-generator
- Express 应用程序生成器express-generator
- Node.js框架之express
- node.js之express编程
- node.js 任务5 使用express generator快速创建应用
- Node.js Web框架之Express
- node.js 之express入门学习
- Node.js express路由
- Node.js Express
- node.js+eclipse+express
- Node.js Express框架
- node.js+express+mysql
- Node.js Express框架
- Node.js 初探Express
- node.js express
- node.js express(二)
- Node.js Express 框架
- RabbitMQ (三) 发布/订阅
- 在Hive中如何实现数据分区
- 腾讯云(CentOS)搭建Hexo静态博客
- Spring的AOP
- 系统服务的控制
- Node.js之express生成器express-generator
- Libevent源码分析-----bufferevent工作流程探究
- 自定义RPM打包+本地yum仓库 - 学习笔记
- console常用的前景与背景色
- app发送cmd命令
- RabbitMQ (四) 路由选择 (Routing)
- Integer与int的区别
- JSP中错误页面设置
- linux 平台中 android中system.img的打包过程