2016-09-07 12 views
1

Позвольте мне объяснить мою фактическую проблему. У меня есть шаблон строки, которая может выглядеть следующим образом:Загрузка строки шаблона ES6 из файла

/${name} 
    get 
    post 
    /{id} 
    get 
    /file-content 
     get 
     post 

Отступ должен оставаться нетронутым.

Теперь, если я использовать такую ​​строку шаблона он может выглядеть следующим образом:

function test(arr) { 
    let ret = [] 
    arr.forEach(
     function(name) { 
      return `/${name} 
    get 
    post 
    /{id} 
    get 
    /file-content 
     get 
     post` 
      return ret 
     } 
    ) 
} 

Выглядит довольно смешно, правда? Я мог бы, конечно, добавить дополнительные пробелы в свой шаблон, чтобы соответствовать отступу моего кода, но потом мне пришлось бы выполнять ненужные операции над строкой, чтобы снова нормализовать ее.

Итак, моя идея состояла в том, чтобы переместить строку шаблона во внешний файл и require этот файл всякий раз, когда мне нужна строка шаблона.
Но require не может быть использован для этой проблемы, потому что это не что иное, как текстовый файл, и я, конечно, не хочу читать этот файл с диска каждый раз, когда он мне нужен, и выполнять на нем eval.

Я мог бы придумать несколько обходных путей для этой проблемы, но я просто не могу найти подходящее решение.

+0

Просто из любопытства: Зачем вам это нужно, чтобы быть в таком формате, в первую очередь? – nils

+0

Вы имели в виду '$ {id}'? – Bergi

+0

Вы можете использовать тегированные шаблоны для нормализации дополнительных пробелов от правильного отступа. – Bergi

ответ

0

Как об этом:

// template.js 
module.exports = name => ` 
/${name} 
    get 
    post 
    /{id} 
    get 
    /file-content 
     get 
     post 
`.trim() 

// app.js 
const template = require('./template')('name'); 
+0

Это только один из способов обхода. Я просто не хочу называть шаблон или что-то еще на моем шаблоне. Я чувствую, что вокруг этого должен быть путь. Это также добавит много работ по техническому обслуживанию при добавлении большего количества переменных в строку шаблона. – Forivin

+1

Если вы добавляете разрывы строк в начале и в конце, вам лучше маскировать их, чем обрезку. добавьте обратную косую черту в конце первой строки, а после сообщения – Thomas

+0

@ Томас да, это было мое первоначальное решение, но я отклонил его, потому что он уродливый – robertklep