新闻资讯
看你所看,想你所想

expressjs

Express 是一个简洁而灵活的 node.js  Web应用框架, 提供一系列强大特性帮助你创建各种来自Web应用。

  • 外文名称 expressjs
  • 属于 node.js Web应用框架
  • 功能 创建各种Web应用
  • 性质 已有的特性进行二次抽象

性能

  Express不是对node.js 已有视判投待抓总包杂乐的特性进行二次抽象,我们只是在它之上扩展了Web应用所需来自的功能。

编程接口

  express()

  创建一个express应用程序

  app.set(360百科name, value)

  将设置项 name 的值设为 value

  app.get(name)

  获取设置项 居承另直它陆具但导袁号name 的值

  app.enable(name)

  将设置项 name 的值设为 true.

  app.disable(name)

席案很略  将设置项 name 的值设为 false.

  app.enab鲜令前要民副么led(name)

  立混同笑检查设置项 name 是否已启用

  app.disabled(name)

  检查设置项 name 是否已禁用

  app.configure([env], callback)

  当 env 和 app.get('env')(也就是 proc板温级么概浓危景时了ess.env.NODE_ENV) 匹配时, 调用我理械视想板callback。保留这个方法是出于历史原因,后面列出的if语句的代码其实更加高效、直接。使用app.set()配合其它一些配置方法后,没有必要再使用这个方法。

  更高效且直接的代码如下:

  app.use钢鲜([path], function)

  使用中间件 function,可选参数path默认为"/"。

  挂载的路径不会在req里出现,对中间件 function可见,这意味着你在funct底算ion的回调参数req里找不到path。这么设计的为了让间件可以在不需要更改代码就在任意"前缀"路径下执行

  这里有一个实际应用场景,常见的一个应用是使用./public提供静态文件服务,用 express.static() 中间件:

  如果你想把所有的静态文件路径都前缀"/static", 你可以使用"挂载"功能。如果req.url 不包含这个前缀头据演菜请众书己, 挂载过的中间件不会执行。当function被执行的时候,这个参数不会被传递。这个只会影响这个函数,后面的中间件里得到的 req.ur旧雨景虽须l里将会包含"/static"

  使用 app.use() "定义的"中间件的顺序非常重要,它们将会顺序执行,use的先后顺序决定了中间件的优先级。比如说通常 exp许去损曾距ress.logg求年纪主久续钟命副尼er() 是最先使用的一个组件,纪录每一个请求

  如果你想忽略请求静态文件的纪录,但是对于在 logger()之后定义的路由和中间件想继续纪录,只需要简单的把static() 移到前面就行了:

  另一个现实的例子,有可能从多个目录提供静态文件服务,下面的例子中会优先从"./public"目录取文件

  settings

  下面的内建的定室威可以改变Express行为的设置

  • env 运行时环境,默认为 process.env.NODE_ENV 或者 "development"
  • trust proxy 激活反向代理,默认未激活状态
  • jsonp callback name 修改默认?callback=的jsonp回调的名字
  • json replacer JSON replacer 替换时的回调, 默认为null
  • json spaces JSON 响应的空格数量,开发环境下是觉抓叫核几视举朝边地2 , 生产环境是0
  • case sensitive routing 路由的大小写敏感, 默认是关闭状态, "/Foo" 和"/foo" 是一样的
  • strict routing 路由的严格格式, 默认情况下 "/foo" 和 "/foo/" 是被同样对待的
  • view cache 模板缓存,在生产环境中是默认开启的
  • view engine 模板引擎
  • views 模板的目录

  app.engine(ext, callback)

  注册模板引擎的 callback 用来处理ext扩展名的文件默认情况下, 根据文件扩展名require() 对应的模板引擎。比如你想渲染一个 "foo.jade" 文件,Express会在内部执行下面的代码,然后会缓存require(),这样就可以提高后面操作的性能

  那些没有提供 .__express 的或者你想渲染一个文件的扩展名与模板引擎默认的不一致的时候,也可以用这个方法。比如你想用EJS模板引擎来处理 ".html" 后缀的文件:

  这个例子中EJS提供了一个.renderFile() 方法和Express预期的格式: (path, options, callback)一致, 可以在内部给这个方法取一个别名ejs.__express,这样你就可以使用".ejs" 扩展而不需要做任何改动

  有些模板引擎没有遵循这种转换, 这里有一个小项目consolidate.js 专门把所有的node流行的模板引擎进行了包装,这样它们在Express内部看起来就一样了。

  app.param([name], callback)

  路由参数的处理逻辑。比如当 :user 出现在一个路由路径中,你也许会自动载入加载用户的逻辑,并把它放置到 req.user , 或者校验一下输入的参数是否正确。

  下面的代码片段展示了callback很像中间件,但是在参数里多加了一个值,这里名为id.它会尝试加载用户信息,然后赋值给req.user, 否则就传递错误next(err).

  另外你也可以只传一个callback, 这样你就有机会改变 app.param() API.比如express-params定义了下面的回调,这个允许你使用一个给定的正则去限制参数。

  下面的这个例子有一点点高级,检查如果第二个参数是一个正则,返回一个很像上面的"user"参数例子行为的回调函数。

  这个函数现在可以非常有效的用来校验参数,或者提供正则捕获后的分组。

  app.listen()

  在给定的主机和端口上监听请求,这个和node的文档http.Server#listen()是一致的

  express()返回的app实际上是一个JavaScriptFunction,它被设计为传给node的http servers作为处理请求的回调函数。因为app不是从HTTP或者HTTPS继承来的,它只是一个简单的回调函数,你可以以同一份代码同时处理HTTP and HTTPS 版本的服务。

  app.listen() 方法只是一个快捷方法,如果你想使用HTTPS,或者同时提供HTTP和HTTPS,可以使用上面的代码

版本

  Express当前版本:v.4.12.3

转载请注明出处累积网 » expressjs

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com