/** * 未知类型的mapKey */ type UnknownMapKey = string | number | symbol; /** * 模板选项 */ interface IOptions { delimiters?: string[]; mixins?: Record; globals?: Record; stripWhite?: boolean; } /** * 模板函数 * * @packageDocumentation */ /** * 使用MTL(Myfx Template Language)编译字符串模板,并返回编译后的render函数 * * ### 一个MTL模板由如下部分组成: * - **文本** 原样内容输出 * - **注释** `[%-- 注释 --%]` 仅在模板中显示,编译后不存在也不会输出 * - **插值** `[%= 插值内容 %]` 输出表达式的结果,支持js语法 * - **混入** `[%@名称 {参数} %]` 可以混入模板片段。被混入的片段具有独立作用域,可以通过JSON格式的对象传递参数给片段 * - **语句** `[% _.each(xxxx... %]` 原生js语句 * * @example * let render = _.template("1 [%= a %] 3"); * //1 4 3 * console.log(render({a:4})) * * render = _.template("1 [% print(_.range(2,5)) %] 5"); * //1 2,3,4 5 * console.log(render()) * * render = _.template("[%-- 注释1 --%] [%@mix {x:5}%] [%-- 注释2 --%]",{ * mixins:{ * mix:'
[%= x %]
' * } * }); * //
5
* console.log(render()) * * @param string 模板字符串 * @param options MTL参数 * @param options.delimiters 分隔符,默认 ['[%' , '%]'] * @param options.mixins 混入对象。\{名称:模板字符串\} * @param options.globals 全局变量对象,可以在任意位置引用。模板内置的全局对象有两个:`print(content)`函数、`_` 对象,Myfx的命名空间 * @param options.stripWhite 是否剔除空白,默认false。剔除发生在编译期间,渲染时不会受到影响。剔除规则:如果一行只有一个MTL注释或语句,则该行所占空白会被移除。 * @returns 编译后的执行函数。该函数需要传递一个对象类型的参数作为运行时参数 * @since 1.0.0 */ declare function template(string: string, options?: IOptions): Function; declare namespace template { var settings: { /** * @defaultValue ['[%', '%]'] */ delimiters: string[]; interpolate: string; comment: string; mixin: string; evaluate: string; }; } export { template };