express学习笔记记录

来源:互联网 发布:网络暴利赚钱项目 编辑:程序博客网 时间:2024/05/01 17:52

1 创建一个文件

mkdir myapp

cd myapp


2 安装express

$ npm install express --save

3 创建一个你默认的执行的index.js或者是app.js

然后添加代码

var express = require('express');var app = express();app.get('/', function (req, res) {  res.send('Hello World!');});var server = app.listen(3000, function () {  var host = server.address().address;  var port = server.address().port;  console.log('Example app listening at http://%s:%s', host, port);});

4 运行整个js

node index.js


Express 应用生成器


通过应用生成器工具 express 可以快速创建一个应用的骨架。

通过如下命令安装:

$ npm install express-generator -g

例如,下面的示例就是在当前工作目录下创建一个命名为 myapp 的应用。

$ express myapp   create : myapp   create : myapp/package.json   create : myapp/app.js   create : myapp/public   create : myapp/public/javascripts   create : myapp/public/images   create : myapp/routes   create : myapp/routes/index.js   create : myapp/routes/users.js   create : myapp/public/stylesheets   create : myapp/public/stylesheets/style.css   create : myapp/views   create : myapp/views/index.jade   create : myapp/views/layout.jade   create : myapp/views/error.jade   create : myapp/bin   create : myapp/bin/www

然后安装所有依赖包:

$ cd myapp $ npm install


启动这个应用(MacOS 或 Linux 平台):

$ DEBUG=myapp npm start

Windows 平台使用如下命令:

> set DEBUG=myapp & npm start


利用 Express 托管静态文件

通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片、CSS、JavaScript 文件等。

将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。例如,假设在 public 目录放置了图片、CSS 和 JavaScript 文件,你就可以:


app.use(express.static('public'));

现在,public 目录下面的文件就可以访问了。

http://localhost:3000/images/kitten.jpghttp://localhost:3000/css/style.csshttp://localhost:3000/js/app.jshttp://localhost:3000/images/bg.pnghttp://localhost:3000/hello.html

如何处理 404 ?

在 Express 中,404 并不是一个错误(error)。因此,错误处理器中间件并不捕获 404。这是因为 404 只是意味着某些功能没有实现。也就是说,Express 执行了所有中间件、路由之后还是没有获取到任何输出。你所需要做的就是在其所有他中间件的后面添加一个处理 404 的中间件。如下:

app.use(function(req, res, next) {  res.status(404).send('Sorry cant find that!');});

如何设置一个错误处理器?

错误处理器中间件的定义和其他中间件一样,唯一的区别是 4 个而不是 3 个参数,即 (err, req, res, next)

app.use(function(err, req, res, next) {  console.error(err.stack);  res.status(500).send('Something broke!');});

app.route()

可使用 app.route() 创建路由路径的链式路由句柄。由于路径在一个地方指定,这样做有助于创建模块化的路由,而且减少了代码冗余和拼写错误。请参考 Router() 文档 了解更多有关路由的信息。

下面这个示例程序使用 app.route() 定义了链式路由句柄。

app.route('/book')  .get(function(req, res) {    res.send('Get a random book');  })  .post(function(req, res) {    res.send('Add a book');  })  .put(function(req, res) {    res.send('Update the book');  });

express.Router

可使用 express.Router 类创建模块化、可挂载的路由句柄。Router 实例是一个完整的中间件和路由系统,因此常称其为一个 “mini-app”。

下面的实例程序创建了一个路由模块,并加载了一个中间件,定义了一些路由,并且将它们挂载至应用的路径上。

在 app 目录下创建名为 birds.js 的文件,内容如下:

var express = require('express');var router = express.Router();// 该路由使用的中间件router.use(function timeLog(req, res, next) {  console.log('Time: ', Date.now());  next();});// 定义网站主页的路由router.get('/', function(req, res) {  res.send('Birds home page');});// 定义 about 页面的路由router.get('/about', function(req, res) {  res.send('About birds');});module.exports = router;

原创粉丝点击