Cabaran:
Pembangun sering mendapati literal templat ES6 tidak ternilai untuk interpolasi rentetan. Walau bagaimanapun, kekecewaan biasa timbul apabila cuba menggunakan semula atau menilai literal ini semasa masa jalankan. Nampaknya penggantian mesti sentiasa dilakukan pada masa pengisytiharan, mengehadkan kepraktisannya sebagai templat.
Penyelesaian:
Untuk mengatasi had ini dan mencipta literal templat boleh guna semula yang boleh digunakan semula dan dinilai secara dinamik, kita mesti memperkenalkan peringkat perantara.
Menggunakan Pembina Fungsi:
Kunci kepada kebolehgunaan semula terletak pada penggunaan pembina Fungsi untuk membalut templat rentetan. Dengan berbuat demikian, pada asasnya kami menukar templat kepada fungsi JavaScript yang boleh digunakan kemudian dengan nilai pembolehubah tertentu.
<code class="js">const templateString = "Hello ${this.name}!"; const templateVars = { name: "world" }; const fillTemplate = function (templateString, templateVars) { return new Function("return `" + templateString + "`;").call(templateVars); }; console.log(fillTemplate(templateString, templateVars)); // Output: "Hello world!"</code>
Dalam contoh ini, fungsi fillTemplate mengambil kedua-dua rentetan templat dan objek berubah sebagai argumen . Ia membungkus templat dalam fungsi, kemudian mengembalikan hasil panggilan fungsi itu dengan nilai pembolehubah yang diberikan. Ini membolehkan kami menilai templat secara dinamik, memasukkan nilai pembolehubah yang berbeza setiap kali.
Pertimbangan Tambahan:
Walaupun kaedah ini menyediakan penyelesaian untuk isu kebolehgunaan semula, ia juga memperkenalkan pengehadan yang berpotensi.
Pendekatan Alternatif:
Sesetengahnya mungkin lebih suka meneroka perpustakaan enjin templat alternatif yang menyediakan penyelesaian yang lebih komprehensif untuk templat yang boleh diguna semula dan dinilai masa jalan.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Literal Templat ES6 Boleh Digunakan Semula untuk Penilaian Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!