优化配置
parent
f1a5c207d7
commit
fbec8cfdd0
10
Readme.md
10
Readme.md
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
> **注:**
|
> **注:**
|
||||||
>
|
>
|
||||||
> 1. `只支持.tpl后缀的模板文件, 在引用模板文件时该后缀可以省略不写。`
|
> 1. `默认使用.tpl后缀的模板文件, 在引用模板文件时该后缀可以省略不写。`
|
||||||
> 2. `模板的路径/文件名, 可以不写引号(推荐)`
|
> 2. `模板的路径/文件名, 可以不写引号(推荐)`
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
@ -27,7 +27,7 @@ const smarty = new Smartyx()
|
||||||
|
|
||||||
smarty.config('cache', false)
|
smarty.config('cache', false)
|
||||||
smarty.config('path', '{path_of_views}')
|
smarty.config('path', '{path_of_views}')
|
||||||
smarty.config('cache', false)
|
smarty.config('ext', '.htm') //修改模板后缀名
|
||||||
|
|
||||||
// 或者实例化时传入
|
// 或者实例化时传入
|
||||||
const smarty = new Smartyx({cache: true, path: '{path_of_views}', ...})
|
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}$/)
|
smarty.assign('phoneReg', /^1[34578]\d{9}$/)
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3.render(tpl[, uuid])
|
### 3.render(tpl[, noParse])
|
||||||
|
|
||||||
* tpl `<String>`
|
* tpl `<String>`
|
||||||
* uuid `<String>` 可选
|
* noParse `<String>` 可选
|
||||||
|
|
||||||
> 该方法用于渲染一个模板,返回值为一个 Promise 对象;
|
> 该方法用于渲染一个模板,返回值为一个 Promise 对象;
|
||||||
> `tpl` 即为要渲染的模板的绝对路径,默认是`.tpl`后缀, 该后缀可以省略。
|
> `tpl` 即为要渲染的模板的绝对路径,默认是`.tpl`后缀, 该后缀可以省略。
|
||||||
> `uuid` 是一个唯一标识,用于开启模板缓存,但又想页面渲染的时候,可以根据不同的情况渲染不同的内容。
|
> `noParse` 对于一些页面, 本身不需要走渲染动态数据的, 可加上这个参数, 直接原样输出模板
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
smarty.assign('foo', 'bar')
|
smarty.assign('foo', 'bar')
|
||||||
|
|
15
index.js
15
index.js
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
require('es.shim')
|
require('es.shim')
|
||||||
const Tool = require('./lib/tool')
|
const Tool = require('./lib/tool')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
function hash(str) {
|
function hash(str) {
|
||||||
return Buffer.from(str).toString('hex')
|
return Buffer.from(str).toString('hex')
|
||||||
|
@ -21,13 +22,17 @@ class Smarty {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.__REG__ = new RegExp(this.opt.ext + '$')
|
this.__REG__ = new RegExp(this.opt.ext + '$')
|
||||||
this.tool = new Tool(this.opt)
|
this.tool = new Tool()
|
||||||
this.__DATA__ = Object.create(null) // 预定义的变量储存
|
this.__DATA__ = Object.create(null) // 预定义的变量储存
|
||||||
this.__CACHE__ = Object.create(null) // 模块缓存
|
this.__CACHE__ = Object.create(null) // 模块缓存
|
||||||
}
|
}
|
||||||
|
|
||||||
config(key, val) {
|
config(key, val) {
|
||||||
this.tool.config(key, val)
|
key += ''
|
||||||
|
if (!key || !val) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.opt[key] = val
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,11 +53,10 @@ class Smarty {
|
||||||
/**
|
/**
|
||||||
* [render 模板渲染]
|
* [render 模板渲染]
|
||||||
* @param {String} tpl 模板路径
|
* @param {String} tpl 模板路径
|
||||||
* @param {String} uuid 唯一标识
|
|
||||||
* @param {Boolean} noParse 不解析直接读取
|
* @param {Boolean} noParse 不解析直接读取
|
||||||
* @return {Promise} 返回一个Promise对象
|
* @return {Promise} 返回一个Promise对象
|
||||||
*/
|
*/
|
||||||
render(tpl = '', uuid = '', noParse = false) {
|
render(tpl = '', noParse = false) {
|
||||||
var key = null
|
var key = null
|
||||||
if (!this.tool.opt.path) {
|
if (!this.tool.opt.path) {
|
||||||
throw new Error('Smarty engine must define path option')
|
throw new Error('Smarty engine must define path option')
|
||||||
|
@ -64,8 +68,9 @@ class Smarty {
|
||||||
if (!this.__REG__.test(tpl)) {
|
if (!this.__REG__.test(tpl)) {
|
||||||
tpl += this.opt.ext
|
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]) {
|
if (this.opt.cache && this.__CACHE__[key]) {
|
||||||
return Promise.resolve(this.__CACHE__[key])
|
return Promise.resolve(this.__CACHE__[key])
|
||||||
|
|
21
lib/tool.js
21
lib/tool.js
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* 模板引擎预处理,对dojs框架有依赖
|
* 模板引擎预处理
|
||||||
* @authors yutent (yutent@doui.cc)
|
* @authors yutent (yutent@doui.cc)
|
||||||
* @date 2016-01-02 21:26:49
|
* @date 2016-01-02 21:26:49
|
||||||
*
|
*
|
||||||
|
@ -7,11 +7,10 @@
|
||||||
|
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
let fs = require('iofs')
|
const fs = require('iofs')
|
||||||
let path = require('path')
|
|
||||||
|
|
||||||
class Tool {
|
class Tool {
|
||||||
constructor(opt) {
|
constructor() {
|
||||||
this.opt = {
|
this.opt = {
|
||||||
delimiter: ['<!--{', '}-->'], //模板界定符
|
delimiter: ['<!--{', '}-->'], //模板界定符
|
||||||
labels: {
|
labels: {
|
||||||
|
@ -32,8 +31,6 @@ class Tool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.opt = this.opt.merge(opt)
|
|
||||||
|
|
||||||
//过滤器
|
//过滤器
|
||||||
this.filters = {
|
this.filters = {
|
||||||
html: function(str = '') {
|
html: function(str = '') {
|
||||||
|
@ -70,8 +67,7 @@ class Tool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__tpl__(name) {
|
__tpl__(file) {
|
||||||
var file = path.resolve(this.opt.path, name)
|
|
||||||
var buf = null
|
var buf = null
|
||||||
if (!fs.exists(file)) {
|
if (!fs.exists(file)) {
|
||||||
throw new Error(`Can not find template "${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])
|
return this.__exp__(opt.delimiter[0] + tag + opt.delimiter[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
//设置 配置信息
|
|
||||||
config(key, val) {
|
|
||||||
key += ''
|
|
||||||
if (!key || !val) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.opt[key] = val
|
|
||||||
}
|
|
||||||
|
|
||||||
//解析普通字段
|
//解析普通字段
|
||||||
matchNormal(m) {
|
matchNormal(m) {
|
||||||
let begin = this.__exp__('^' + this.opt.delimiter[0] + '[=\\s]?')
|
let begin = this.__exp__('^' + this.opt.delimiter[0] + '[=\\s]?')
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "smartyx",
|
"name": "smartyx",
|
||||||
"version": "1.1.0",
|
"version": "1.2.0",
|
||||||
"description": "nodeJS模板引擎,理念源自于PHP的smarty模板引擎",
|
"description": "nodeJS模板引擎,理念源自于PHP的smarty模板引擎",
|
||||||
"keywords": ["fivejs", "smarty", "template", "ejs", "jade"],
|
"keywords": ["fivejs", "smarty", "template", "ejs", "jade"],
|
||||||
"author": "宇天 <yutent@doui.cc>",
|
"author": "宇天 <yutent@doui.cc>",
|
||||||
|
|
Loading…
Reference in New Issue