whole_func_string: function(dir, htm, callback) {
      
      var recur = function(str) {
          return s = str.replace(/\{\{include[\s]{1,}[\'\"]([\w\.\/]{1,})[\'\"]\}\}/gi, function(p1,path) {
              if(fs.existsSync(dir + path)) {
                  return recur(fs.readFileSync(dir + path, 'utf8'));
              }
              return "";
          })
      }
      
      
      callback(recur(htm))
  }
func_code_string: function(dir, htm, callback) {
      
      var recur = function(str) {
          return s = str.replace(/\{\{include[\s]{1,}[\'\"]([\w\.\/]{1,})[\'\"]\}\}/gi, function(p1,path) {
              if(fs.existsSync(dir + path)) {
                  return recur(fs.readFileSync(dir + path, 'utf8'));
              }
              return "";
          })
      }
      
      
      callback(recur(htm))
  }
func_documentation_string: Вывод данных в шаблон
  шаблон собирается из инклудов один раз
  собранные шаблоны остаются в памяти
  
  (синхронные файловые функции тут не влияют на общую производительность)