Construct an EJS template to loop through an array users and display each user’s name in a list. Which snippet is correct?
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "<%
users.forEach(user => {
%> <%= user %> <%
}); %>". EJS phân biệt hai loại thẻ: thẻ <% … %> chỉ chạy mã JavaScript và không in gì, còn thẻ <%= … %> in giá trị của biểu thức sau khi thoát ký tự HTML. Lần theo đoạn mã: dòng đầu mở vòng forEach trên mảng users, dòng giữa in giá trị user ở mỗi lượt lặp, dòng cuối đóng hàm và vòng lặp, nên mỗi tên trong mảng được in một lần (giả sử users chứa tên; nếu là đối tượng thì in user.name). "{
users.map(user => {
user
}) }" là cú pháp JSX của React, EJS không hiểu dấu ngoặc nhọn đơn nên in nguyên văn chuỗi đó ra trang. "<%
users.forEach(user => {
%>{
user
}
<%
}); %>" có vòng lặp đúng nhưng phần giữa nằm ngoài thẻ EJS, nên mỗi lượt chỉ in ra chữ thô { user } thay vì tên. "<%=
users.forEach(user => {
%> <%= user %> <%
}); %>" dùng thẻ in cho dòng mở vòng lặp, EJS sẽ cố biến đoạn chưa đóng đó thành một biểu thức cần in nên khi biên dịch template sẽ báo lỗi cú pháp.