2015-04-21 11 views
15

Vì vậy, tôi có điều này string:Tôi làm cách nào để có thể xây dựng một Chuỗi Mẫu từ một chuỗi thông thường?

var name = "Chaim"; 
var templateStr = "Hello, my name is ${name}"; 

Làm thế nào tôi có thể chuyển đổi nó thành một mẫu dây để kết quả sẽ được tính bằng:

var template = `Hello, my name is ${name}`; 

Có cách nào để lập trình xây dựng một Template theo nghĩa đen?

+1

Bạn không thể không 'eval', và tôi không nghĩ rằng bạn muốn điều đó. Tại sao không chỉ sử dụng chuỗi mẫu ở địa điểm đầu tiên? – Bergi

+0

Vì tôi muốn chuyển một chuỗi động được sử dụng làm mẫu. – haim770

+0

@ haim770 Tại sao chuỗi động không thể là một bản mẫu? – thefourtheye

Trả lời

26

Có cách nào để lập trình xây dựng một văn bản mẫu không?

Không. "Lập trình" và "chữ" là phản đối (ngoại trừ bạn đang ở trong cõi trình biên dịch).

Chuỗi mẫu tốt hơn nên được đặt tên là nội dung chuỗi được nội suy hoặc hơn. Vui lòng do not confuse them with templates. Nếu bạn muốn sử dụng chuỗi được tạo động cho mẫu, hãy sử dụng công cụ tạo mẫu mà bạn chọn.

Tất nhiên mẫu chữ có thể giúp đỡ với việc thực hiện như vậy, và bạn có thể nhận được ngay với một cái gì đó đơn giản như

function assemble(literal, params) { 
    return new Function(params, "return `"+literal+"`;"); // TODO: Proper escaping 
//    ^^^^^^^^ working in real ES6 environments only, of course 
} 
var template = assemble("Hello, my name is ${name}", "name"); 
template("Chaim"); // Hello, my name is Chaim 
+2

'Chuỗi mẫu nên tốt hơn đã được đặt tên là nội dung chuỗi nội suy' - Không phải chúng được gọi là Quasi literals? – thefourtheye

+0

Các chương trình ≠ litteral là chìa khóa ở đây. –

Các vấn đề liên quan