express框架--app方法/HTTPS

责编:menVScode 2017-08-30 11:03 阅读(792)

app方法

【set方法】

  set方法用于指定变量的值;

app.set("views", __dirname + "/views");
app.set("view engine", "jade");

  上面代码使用set方法,为系统变量“views”和“view engine”指定值。

【get方法】

        除了作为use()方法的别名用法外,get方法还用于获取变量的值,与set方法相对应。

app.get('title');
// => undefined

app.set('title', 'My Site');
app.get('title');
// => "My Site"

【app.enable(name)】

  将设置项 name 的值设为 true;

app.enable('trust proxy');
app.get('trust proxy');
// => true

【app.disable(name)】

  将设置项 name 的值设为 false;

app.disable('trust proxy');
app.get('trust proxy');
// => false

【app.enabled(name)】

  检查设置项 name 是否已启用;

app.enabled('trust proxy');
// => false

app.enable('trust proxy');
app.enabled('trust proxy');
// => true

【app.disabled(name)】

  检查设置项 name 是否已禁用;

app.disabled('trust proxy');
// => true

app.enable('trust proxy');
app.disabled('trust proxy');
// => false

【app.engine(ext, callback)】

  注册模板引擎的 callback 用来处理 ext 扩展名的文件;

  默认情况下, 根据文件扩展名 require() 加载相应的模板引擎。 比如想渲染一个 “foo.jade” 文件,Express 会在内部执行下面的代码,然后会缓存 require() ,这样就可以提高后面操作的性能。

app.engine('jade', require('jade').__express);

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

app.engine('html', require('ejs').renderFile);

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

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

var engines = require('consolidate');
app.engine('haml', engines.haml);
app.engine('html', engines.hogan);

【app.locals】

  应用程序本地变量会附加给所有的在这个应用程序内渲染的模板。这是一个非常有用的模板函数,就像应用程序级数据一样。

app.locals.title = 'My App';
app.locals.strftime = require('strftime');

        app.locals 对象是一个 JavaScript Function,执行的时候它会把属性合并到它自身,提供了一种简单展示已有对象作为本地变量的方法。

app.locals({
  title: 'My App',
  phone: '1-250-858-9990',
  email: 'me@myapp.com'
});

app.locals.title
// => 'My App'
app.locals.email
// => 'me@myapp.com'

  app.locals 对象最终会是一个 Javascript 函数对象,不可以使用 Functions 和 Objects 内置的属性,比如 name、apply、bind、call、arguments、length、constructor。

app.locals({name: 'My App'});

app.locals.name
// => 返回 'app.locals' 而不是 'My App' (app.locals 是一个函数 !)
// => 如果 name 变量用在一个模板里,则返回一个 ReferenceError 

        默认情况下Express只有一个应用程序级本地变量,它是 settings。

app.set('title', 'My App');
// 在 view 里使用 settings.title

【app.render(view, [options], callback)】

  渲染 view , 回调函数 callback 用来处理返回的渲染后的字符串。这个是 res.render() 的应用程序级版本,它们的行为是一样的。

app.render('email', function(err, html){
    // ...
});

app.render('email', { name: 'Tobi' }, function(err, html){
    // ...
});

【app.listen()】

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

var express = require('express');
var app = express();
app.listen(3000);

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

var express = require('express');
var https = require('https');
var http = require('http');
var app = express();

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

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

app.listen = function(){
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};


HTTPS

  使用Express搭建HTTPS加密服务器很简单。

var fs = require('fs');
var options = {
  key: fs.readFileSync('E:/ssl/myserver.key'),
  cert: fs.readFileSync('E:/ssl/myserver.crt'),
  passphrase: '1234'
};

var https = require('https');
var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('Hello World Expressjs');
});

var server = https.createServer(options, app);
server.listen(8084);
console.log('Server is running on port 8084');
标签: express 框架
前端交流群: MVC前端网(menvscode.com)-qq交流群:551903636

邮箱快速注册

忘记密码