333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
'use strict';
 
var lib = require('./src/lib');
 
var _require = require('./src/environment'),
    Environment = _require.Environment,
    Template = _require.Template;
 
var Loader = require('./src/loader');
 
var loaders = require('./src/loaders');
 
var precompile = require('./src/precompile');
 
var compiler = require('./src/compiler');
 
var parser = require('./src/parser');
 
var lexer = require('./src/lexer');
 
var runtime = require('./src/runtime');
 
var nodes = require('./src/nodes');
 
var installJinjaCompat = require('./src/jinja-compat'); // A single instance of an environment, since this is so commonly used
 
 
var e;
 
function configure(templatesPath, opts) {
  opts = opts || {};
 
  if (lib.isObject(templatesPath)) {
    opts = templatesPath;
    templatesPath = null;
  }
 
  var TemplateLoader;
 
  if (loaders.FileSystemLoader) {
    TemplateLoader = new loaders.FileSystemLoader(templatesPath, {
      watch: opts.watch,
      noCache: opts.noCache
    });
  } else if (loaders.WebLoader) {
    TemplateLoader = new loaders.WebLoader(templatesPath, {
      useCache: opts.web && opts.web.useCache,
      async: opts.web && opts.web.async
    });
  }
 
  e = new Environment(TemplateLoader, opts);
 
  if (opts && opts.express) {
    e.express(opts.express);
  }
 
  return e;
}
 
module.exports = {
  Environment: Environment,
  Template: Template,
  Loader: Loader,
  FileSystemLoader: loaders.FileSystemLoader,
  NodeResolveLoader: loaders.NodeResolveLoader,
  PrecompiledLoader: loaders.PrecompiledLoader,
  WebLoader: loaders.WebLoader,
  compiler: compiler,
  parser: parser,
  lexer: lexer,
  runtime: runtime,
  lib: lib,
  nodes: nodes,
  installJinjaCompat: installJinjaCompat,
  configure: configure,
  reset: function reset() {
    e = undefined;
  },
  compile: function compile(src, env, path, eagerCompile) {
    if (!e) {
      configure();
    }
 
    return new Template(src, env, path, eagerCompile);
  },
  render: function render(name, ctx, cb) {
    if (!e) {
      configure();
    }
 
    return e.render(name, ctx, cb);
  },
  renderString: function renderString(src, ctx, cb) {
    if (!e) {
      configure();
    }
 
    return e.renderString(src, ctx, cb);
  },
  precompile: precompile ? precompile.precompile : undefined,
  precompileString: precompile ? precompile.precompileString : undefined
};