Nếu tôi hiểu chính xác, bạn muốn xây dựng cho bạn xhtml với Opa, nhưng thay vì phục vụ, hãy in nó thành tệp?
Chúng tôi có 2 chức năng cho rằng:
Sự khác biệt giữa những 2 chức năng, là người đầu tiên sẽ không tạo mã OPA liên js.
Sau đó, bạn có thể viết chuỗi kết quả vào tệp HTML trên đĩa.
Lưu ý rằng chúng tôi không cung cấp bất kỳ phương pháp nào để viết tệp trong đĩa trong stdlib của chúng tôi. Bạn phải sử dụng hệ thống phòng thí nghiệm BSL cho rằng:
write = %%BslFile.of_string%%
Một ví dụ nhỏ:
static.opa
write = %%BslFile.of_string%%
xhtml_page(num:int) =
<p>Page {num}</p>
pages = [1, 2, 3, 4, 5]
do List.iter(i ->
xhtml_content = xhtml_page(i)
string_content = Xhtml.serialize_as_standalone_html(xhtml_content)
write("{i}.html", string_content)
, pages)
Biên dịch và chạy: opa static.opa --
này sẽ tạo ra 5 trang html.
Ngọt ngào! Điều gì sẽ xảy ra nếu bạn gọi một số hàm JavaScript trong 'xhtml_page' (như' {Random.int num} ')? Có cách nào để đảm bảo rằng trang được tạo sẽ không chứa một số mã JavaScript sẽ cố gắng liên lạc với máy chủ không? – Thomas
Sẽ không có giao tiếp máy chủ với 'Random.int' (trong ví dụ của tôi) vì nó sẽ được thực thi khi bạn tạo trang của mình. – Fred
Bạn có thể có giao tiếp "máy chủ" nếu bạn đính kèm trình xử lý sự kiện vào một số phần xhtml (ví dụ ''), nhưng nếu bạn sử dụng 'Xhtml.serialize_as_standalone_html', các hành động đó sẽ bị xóa khỏi xhtml , do đó sẽ không có cuộc gọi máy chủ. Nó phụ thuộc vào html bạn muốn tạo ra. Lưu ý rằng bạn không thể tạo thứ gì đó như vì Opa cấm nó. – Fred