From fbec8cfdd0ff80a5fdac13e41de5ddf9d92a35dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=E5=A4=A9?= Date: Mon, 6 Apr 2020 23:56:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 10 +++++----- index.js | 15 ++++++++++----- lib/tool.js | 21 ++++----------------- package.json | 2 +- 4 files changed, 20 insertions(+), 28 deletions(-) diff --git a/Readme.md b/Readme.md index 33dc918..7ca2719 100644 --- a/Readme.md +++ b/Readme.md @@ -6,7 +6,7 @@ > **注:** > -> 1. `只支持.tpl后缀的模板文件, 在引用模板文件时该后缀可以省略不写。` +> 1. `默认使用.tpl后缀的模板文件, 在引用模板文件时该后缀可以省略不写。` > 2. `模板的路径/文件名, 可以不写引号(推荐)` ## API @@ -27,7 +27,7 @@ const smarty = new Smartyx() smarty.config('cache', false) smarty.config('path', '{path_of_views}') -smarty.config('cache', false) +smarty.config('ext', '.htm') //修改模板后缀名 // 或者实例化时传入 const smarty = new Smartyx({cache: true, path: '{path_of_views}', ...}) @@ -60,14 +60,14 @@ smarty.assign('page', 20) smarty.assign('phoneReg', /^1[34578]\d{9}$/) ``` -### 3.render(tpl[, uuid]) +### 3.render(tpl[, noParse]) * tpl `` -* uuid `` 可选 +* noParse `` 可选 > 该方法用于渲染一个模板,返回值为一个 Promise 对象; > `tpl` 即为要渲染的模板的绝对路径,默认是`.tpl`后缀, 该后缀可以省略。 -> `uuid` 是一个唯一标识,用于开启模板缓存,但又想页面渲染的时候,可以根据不同的情况渲染不同的内容。 +> `noParse` 对于一些页面, 本身不需要走渲染动态数据的, 可加上这个参数, 直接原样输出模板 ```javascript smarty.assign('foo', 'bar') diff --git a/index.js b/index.js index ffeec52..9f70db9 100644 --- a/index.js +++ b/index.js @@ -8,6 +8,7 @@ require('es.shim') const Tool = require('./lib/tool') +const path = require('path') function hash(str) { return Buffer.from(str).toString('hex') @@ -21,13 +22,17 @@ class Smarty { } this.__REG__ = new RegExp(this.opt.ext + '$') - this.tool = new Tool(this.opt) + this.tool = new Tool() this.__DATA__ = Object.create(null) // 预定义的变量储存 this.__CACHE__ = Object.create(null) // 模块缓存 } config(key, val) { - this.tool.config(key, val) + key += '' + if (!key || !val) { + return + } + this.opt[key] = val } /** @@ -48,11 +53,10 @@ class Smarty { /** * [render 模板渲染] * @param {String} tpl 模板路径 - * @param {String} uuid 唯一标识 * @param {Boolean} noParse 不解析直接读取 * @return {Promise} 返回一个Promise对象 */ - render(tpl = '', uuid = '', noParse = false) { + render(tpl = '', noParse = false) { var key = null if (!this.tool.opt.path) { throw new Error('Smarty engine must define path option') @@ -64,8 +68,9 @@ class Smarty { if (!this.__REG__.test(tpl)) { tpl += this.opt.ext } + tpl = path.resolve(this.opt.path, tpl) - key = hash(tpl + uuid) + key = hash(tpl) if (this.opt.cache && this.__CACHE__[key]) { return Promise.resolve(this.__CACHE__[key]) diff --git a/lib/tool.js b/lib/tool.js index ec31529..c62a97b 100644 --- a/lib/tool.js +++ b/lib/tool.js @@ -1,5 +1,5 @@ /** - * 模板引擎预处理,对dojs框架有依赖 + * 模板引擎预处理 * @authors yutent (yutent@doui.cc) * @date 2016-01-02 21:26:49 * @@ -7,11 +7,10 @@ 'use strict' -let fs = require('iofs') -let path = require('path') +const fs = require('iofs') class Tool { - constructor(opt) { + constructor() { this.opt = { delimiter: [''], //模板界定符 labels: { @@ -32,8 +31,6 @@ class Tool { } } - this.opt = this.opt.merge(opt) - //过滤器 this.filters = { html: function(str = '') { @@ -70,8 +67,7 @@ class Tool { } } - __tpl__(name) { - var file = path.resolve(this.opt.path, name) + __tpl__(file) { var buf = null if (!fs.exists(file)) { throw new Error(`Can not find template "${file}"`) @@ -100,15 +96,6 @@ class Tool { return this.__exp__(opt.delimiter[0] + tag + opt.delimiter[1]) } - //设置 配置信息 - config(key, val) { - key += '' - if (!key || !val) { - return - } - this.opt[key] = val - } - //解析普通字段 matchNormal(m) { let begin = this.__exp__('^' + this.opt.delimiter[0] + '[=\\s]?') diff --git a/package.json b/package.json index cc69d0b..4bee1fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "smartyx", - "version": "1.1.0", + "version": "1.2.0", "description": "nodeJS模板引擎,理念源自于PHP的smarty模板引擎", "keywords": ["fivejs", "smarty", "template", "ejs", "jade"], "author": "宇天 ",