Memulai
Halo dunia
install
npm install ejs
hello.ejs
<% if (user.email) { %>
<h1><%= user.email %></h1>
<% } %>
CLI
$ ejs hello.ejs -o hello.html
Merender dengan Data
let ejs = require('ejs');
let people = ['geddy', 'neil', 'alex'];
let tpl = '<%= people.join(", "); %>';
let html = ejs.render(tpl, {people: people});
console.log(html);
Berikan EJS sebuah string templat dan beberapa data.
Dukungan Peramban
<script src="ejs.js"></script>
<script>
let people = ['geddy', 'neil', 'alex'];
let html = ejs.render('<%= people.join(", "); %>', {people: people});
</script>
Gunakan ejs dalam tag skrip.
Variabel
| <%- var %>
| Mencetak tanpa melarikan diri dari HTML
CLI
Merender dan menentukan berkas keluaran.
$ ejs hello.ejs -o hello.html
Memberinya berkas templat dan berkas data
$ ejs hello.ejs -f data.json -o hello.html
Komentar
<%# Baris ini akan menunjukkan sebuah komentar %>
<%# Ini adalah komentar EJS multi-baris.
Komentar ini dapat terdiri dari beberapa baris,
tetapi tidak akan ditampilkan
dalam keluaran HTML akhir.
%>
Metode
let ejs = require('ejs');
let template = ejs.compile(str, options);
template(data);
// => String HTML yang dirender
ejs.render(str, data, options);
// => String HTML yang dirender
ejs.renderFile(namafile, data, options, function(err, str){
// str => String HTML yang dirender
});
Menyertakan File
<%- include('partials/navbar.ejs') %>
Menyertakan templat dengan data:
<% include('header', { title: 'Halaman Saya' }) %>
<ul>
<% users.forEach(function(user){ %>
<%- include('item', {user: user}); %>
<% }); %>
</ul>
Untuk menyertakan templat, membutuhkan opsi nama file, jalur bersifat relatif
Dokumen
Kondisional
<% if (userLoggedIn) { %>
<p>Selamat datang, <%= nama pengguna %>!</p>
<% } else { %>
<p>Silakan masuk.</p>
<% } %>
Menggunakan perulangan
<% if (userLoggedIn) { %>
<p>Selamat datang, <%= nama pengguna %>!</p>
<% } else { %>
<p>Silakan masuk.</p>
<% } %>
Pembatas khusus
let ejs = require('ejs'),
users = ['geddy', 'neil', 'alex'];
// Hanya satu template
ejs.render('<?= users.join(" | "); ?>',
{pengguna: pengguna},
{pembatas: '?'});
// => 'geddy | neil | alex'
// Atau secara global
ejs.delimiter = '$';
ejs.render('<$= users.join(" | "); $>',
{pengguna: pengguna});
// => 'geddy | neil | alex'
Caching
let ejs = require('ejs'),
LRU = require('lru-cache');
// Cache LRU dengan batas 100 item
ejs.cache = LRU(100);
Pemuat berkas khusus
let ejs = require('ejs');
let myFileLoader = function (filePath) {
return 'myFileLoader: '+ fs.readFileSync(filePath);
};
ejs.fileLoader = myFileLoader;
Tata Letak
<%- include('header'); -%>
<h1>
Judul
</h1>
<p>
Halaman saya
</p>
<%- include('footer'); -%>
Dukungan sisi klien
Contoh
<div id="output"></div>
<script src="ejs.min.js"></script>
<script>
let people = ['geddy', 'neil', 'alex'],
html = ejs.render('<%= people.join(", "); %>', {people: people});
// Dengan jQuery:
$('#output').html(html);
// Vanilla JS:
document.getElementById('output').innerHTML = html;
</script>
Peringatan
let str = "Halo <%= include('file', {person: 'John'}); %>",
fn = ejs.compile(str, {klien: true});
fn(data, null, function(path, d){ // menyertakan callback
// path -> 'file'
// d -> {person: 'John'}
// Letakkan kode Anda di sini
// Kembalikan isi file sebagai string
}); // mengembalikan string yang dirender
Pilihan
Daftar opsi
| Opsi | Deskripsi | Keterangan
|——————-|——————————————————————————————————————————————————————————————————————————|
| cache | Fungsi yang dikompilasi ditembolok, membutuhkan nama file |
| nama file | Digunakan oleh cache untuk cache kunci, dan untuk menyertakan |
| root | Mengatur root proyek untuk menyertakan dengan jalur absolut (misal, /file.ejs). Dapat berupa larik untuk mencoba menyelesaikan include dari beberapa direktori. |
| views | Larik jalur untuk digunakan saat menyelesaikan include dengan jalur relatif. |
| context | Konteks eksekusi fungsi
| compileDebug | Bila salah, tidak ada instrumentasi debug yang dikompilasi
| client | Mengembalikan fungsi yang dikompilasi secara mandiri
| delimiter | Karakter yang digunakan untuk pembatas bagian dalam, secara default ‘%’ |
| openDelimiter | Karakter yang digunakan untuk pembatas pembuka, secara default ‘<’ |
| closeDelimiter | Karakter yang digunakan untuk pembatas penutup, secara default ‘>’ |
| debug | Keluaran yang dihasilkan badan fungsi | | debug
| strict | Ketika diset ke true
, fungsi yang dihasilkan dalam mode ketat
| _with | Apakah akan menggunakan konstruksi with() {} atau tidak. Jika salah, maka lokal akan disimpan dalam objek lokal. (Mengimplikasikan --strict
) | | _with
| localsName | Nama yang akan digunakan untuk objek yang menyimpan variabel lokal ketika tidak menggunakan Default untuk locals |
| rmWhitespace | Menghapus semua spasi yang aman untuk dihilangkan, termasuk spasi di depan dan di belakang. Ini juga memungkinkan versi yang lebih aman dari -%> pemenggalan baris untuk semua tag skriplet (tidak menghilangkan baris baru dari tag di tengah-tengah baris). |
| escape | Fungsi pelarian yang digunakan dengan <%= construct. Fungsi ini digunakan dalam rendering dan di-.toString() dalam pembuatan fungsi klien. (Secara default meloloskan XML). |
| outputFunctionName | Ditetapkan ke sebuah string (misalnya, ’echo’ atau ‘print’) untuk sebuah fungsi yang akan mencetak output di dalam tag scriptlet. |
| async | Jika benar, EJS akan menggunakan fungsi asinkronisasi untuk merender. (Tergantung pada dukungan asinkronisasi/tunggu dalam runtime JS. |
Tag
Daftar tag
Tag | Deskripsi |
---|---|
<% | Tag ‘Scriptlet’, untuk aliran kontrol, tanpa keluaran |
<%_ | Tag Scriptlet ‘Penghilangan Spasi’, menghilangkan semua spasi di depannya |
<%= | Mengeluarkan nilai ke dalam templat (HTML dilewatkan) |
<%- | Mengeluarkan nilai yang tidak di-escape ke dalam templat |
<%# | Tag komentar, tidak ada eksekusi, tidak ada keluaran |
<%% | Mengeluarkan ‘<%’ secara harfiah |
%> | Tag akhiran biasa |
-%> | Tag trim-mode (’newline slurp’), memangkas setelah baris baru |
_%> | Tag akhiran ‘Spasi Seruput’, menghapus semua spasi setelahnya |
Cli
Daftar Cli
| Pilihan | Deskripsi | Keterangan
|—————-|————————————————————————————————————————-|
| cache | Fungsi yang dikompilasi di-cache, membutuhkan nama berkas |
| -o / –output-file FILE | Menuliskan output yang dirender ke FILE, bukan ke stdout. |
| -f / –data-file FILE | Harus berformat JSON. Gunakan masukan yang diuraikan dari FILE sebagai data untuk dirender. |
| -i / –data-input STRING | Harus berformat JSON dan dikodekan dengan URI. Gunakan masukan yang diuraikan dari STRING sebagai data untuk dirender. |
| -m / –pembatas CHARACTER | Gunakan CHARACTER dengan tanda kurung siku untuk buka/tutup (standarnya adalah %). |
| -p / –pembatas buka-tutup CHARACTER | Gunakan CHARACTER sebagai pengganti kurung sudut kiri untuk membuka. |
| -c / –tutup-pembatas CHARACTER | Gunakan CHARACTER sebagai pengganti tanda kurung siku kanan untuk menutup. |
| -s / –ketat | Ketika diatur ke true
, fungsi yang dihasilkan dalam mode ketat | | -s / –ketat | Ketika diatur ke true
, fungsi yang dihasilkan dalam mode ketat
| -n / –no-with | Gunakan objek ’locals’ untuk variabel daripada menggunakan with
(mengimplikasikan –strict). |
| -l / –locals-name | Nama yang digunakan untuk objek yang menyimpan variabel lokal ketika tidak menggunakan with
. |
| -w / –rm-whitespace | Menghapus semua spasi yang aman untuk dihilangkan, termasuk spasi di depan dan di belakang. |
| -d / –debug | Keluaran yang dihasilkan badan fungsi |
| -h / –help | Menampilkan pesan bantuan. |
| -V/v / –version | Menampilkan versi EJS. |
Contoh penggunaan :
$ ejs -p [ -c ] ./template_file.ejs -o ./output.html
$ ejs ./test/fixtures/user.ejs name=Lerxst
$ ejs -n -l _ ./some_template.ejs -f ./data_file.json