Handlebars.js: NPM Handlebars tidak dapat membaca data yang telah dikompilasi sendiri

Dibuat pada 30 Mei 2015  ·  4Komentar  ·  Sumber: handlebars-lang/handlebars.js

Per dokumentasi Handlebars , templateSpec yang dihasilkan oleh Handlebars.precompile() harus langsung dikonsumsi oleh Handlebars.template() , namun jelas dari tumpukan kesalahan saya mendapatkan bahwa yang pertama menghasilkan string dan yang terakhir mengharapkan suatu objek.

Berikut adalah contoh yang dibuat-buat yang menciptakan kembali masalah.

var Handlebars = require('handlebars');

console.log(Handlebars.VERSION);

var pre = Handlebars.precompile('{{foo}}');
var template = Handlebars.template(pre);

Dan output terkait

$ node contrived.js 
3.0.1

/private/tmp/hbs-bug/node_modules/handlebars/dist/cjs/handlebars/runtime.js:48
    throw new _Exception2['default']('Unknown template object: ' + typeof temp
          ^
Error: Unknown template object: string
    at Object.template (/private/tmp/hbs-bug/node_modules/handlebars/dist/cjs/handlebars/runtime.js:48:11)
    at HandlebarsEnvironment.hb.template (/private/tmp/hbs-bug/node_modules/handlebars/dist/cjs/handlebars.runtime.js:46:20)
    at Object.<anonymous> (/private/tmp/hbs-bug/contrived.js:7:27)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

Komentar yang paling membantu

Itu yang saya takutkan. Alih-alih menggunakan eval, saya memilih untuk menggunakan konstruktor fungsi yang kemudian segera saya panggil untuk memberi saya objek yang sebenarnya. Inilah yang terlihat jika orang lain merasa berguna.

var preStr = Handlebars.precompile('{{foo}}');
var pre = (new Function('return ' + preStr)());
var template = Handlebars.template(pre);

Sepertinya sesuatu yang dapat dengan mudah diintegrasikan ke dalam Handlebars.

Semua 4 komentar

Prakompilasi mengembalikan string dengan sumber JavaScript. Itu tidak dimaksudkan untuk dijalankan di lingkungan yang sama seperti Anda baru saja menggunakan metode kompilasi. Jika Anda perlu melakukan ini karena alasan tertentu, Anda harus mengevaluasi sengatan ini sebelum meneruskan ke template.

Itu yang saya takutkan. Alih-alih menggunakan eval, saya memilih untuk menggunakan konstruktor fungsi yang kemudian segera saya panggil untuk memberi saya objek yang sebenarnya. Inilah yang terlihat jika orang lain merasa berguna.

var preStr = Handlebars.precompile('{{foo}}');
var pre = (new Function('return ' + preStr)());
var template = Handlebars.template(pre);

Sepertinya sesuatu yang dapat dengan mudah diintegrasikan ke dalam Handlebars.

Anda secara efektif mengimplementasikan Handlebars.compile tanpa malas
kompilasi. Mengapa Anda menggunakan prakompilasi untuk templat yang Anda rencanakan untuk digunakan?
contoh yang sama?
Pada hari Minggu, 31 Mei 2015 pukul 16.42 Nathan Witt [email protected]
menulis:

Itu yang saya takutkan. Alih-alih menggunakan eval, saya memilih untuk menggunakan
konstruktor fungsi yang kemudian segera saya panggil untuk memberi saya yang sebenarnya
obyek. Inilah yang terlihat jika orang lain merasa berguna.

var preStr = Handlebars.precompile('{{foo}}');
var pre = (Fungsi baru('kembali' + preStr)());
var template = Handlebars.template(pra);

Sepertinya sesuatu yang dapat dengan mudah diintegrasikan ke dalam Handlebars.


Balas email ini secara langsung atau lihat di GitHub
https://github.com/wycats/handbars.js/issues/1033#issuecomment -107249447
.

Script adalah alat pengembangan untuk template email. Sumber yang telah dikompilasi diunggah untuk digunakan dalam produksi tetapi saya juga menghasilkan pratinjau lokal lengkap. Saya memilih untuk tidak menggunakan kompilasi karena dengan cara ini saya bisa mendapatkan keduanya dari sumber yang sama.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

ricardograca picture ricardograca  ·  4Komentar

DylanPiercey picture DylanPiercey  ·  7Komentar

asgraf picture asgraf  ·  5Komentar

rizen picture rizen  ·  6Komentar

stevenvachon picture stevenvachon  ·  7Komentar