Hỏi về việc dùng markdown để cho phép người dùng đăng bài
E chào mọi người ạ, nay e có viết 1 chức năng cho phép người dùng đăng bài trên web của e, dạng kiểu như viblo cho phép người dùng dùng cú pháp markdown để đăng bài ấy ạ, nhưng e mới chỉ làm được đến đoạn gửi dữ liệu lưu vào MongoDB, còn render ra client thì e muốn nó hiển thị đẹp đẹp như của viblo mà của e nó vẫn hiển thị hẳn cú pháp markdown ra mọi người giúp e với ạ, em cảm ơn.. e dùng express js và template là pug ạ.
1 CÂU TRẢ LỜI
Lúc lưu contents
vào database bạn lưu cả cú pháp Markdown thì lúc render ra client bạn phải thêm một bước render contents
từ Markdown về thành HTML nữa nhé. Dùng express thì có thể sử dụng markdown-it
để render:
// node.js, "classic" way:
var MarkdownIt = require('markdown-it'),
md = new MarkdownIt();
var result = md.render('# markdown-it rulezz!');
em cảm ơn ạ, nhưng a cho e hỏi là nếu vậy thì nó có hiện luôn code html kiểu <a href="#">jsj</a> không ạ, e tắt lap rồi k test được :3 vì nếu viết như a gợi ý e sẽ truyền biến result từ controller sang view :3
@at3s Bạn dùng markdown-it
lúc khởi tạo nó có option html
để enable/disable HTML khi render nhé. Mặc định là không support HTML tức là khi bạn viết nguyên code HTML thì khi render ra đoạn HTML đấy sẽ bị encode lại và sẽ không lo bị dính XSS.
dạ vâng, e cảm ơn ạ, à nhân tiện cho e hỏi 1 cái nữa là trong thực tế làm web , cái phần cho user up ảnh thì a cho user up thẳng lên 1 cloud nào đó hay up về server mới up lên cloud vậy ạ ?
@at3s Mình chưa hiểu ý bạn về việc upload ảnh. Ý bạn là upload ảnh tích hợp vào Markdown Editor giống Viblo hả? Nếu bạn hỗ trợ upload như Viblo thì user sẽ up ảnh thẳng tới server, sau khi thành công sẽ có link để chèn lại vào content. Tất nhiên user có thể upload ảnh lên một cloud nào đó rồi copy link ảnh rồi chèn vào theo cú pháp markdown nhé.