Show HN: Nash - Ghi chú độc lập chạy bằng một tệp HTML duy nhất
(keepworking.github.io)- Nash là một ghi chú độc lập dựa trên HTML có thể mở và chỉnh sửa trong trình duyệt web mà không cần dịch vụ riêng
- Có thể chỉnh sửa ghi chú đã lưu ngay cả khi ngoại tuyến, hướng tới cách xử lý như một tệp tài liệu thay cho Notion hay Word
- Có thể dùng để tạo nội dung dạng tài liệu HTML như blog tĩnh, nội dung một trang, hoặc đính kèm ảnh pizza trong thư viện
- Khi gửi qua messenger, có thể xem bằng bản xem trước, nên cũng có thể chia sẻ nội dung dài theo kiểu chia sẻ tệp
- Nash được phát hành dưới dạng mã nguồn mở, và có thể tự do chỉnh sửa, sử dụng trang ghi chú trống
Ghi chú HTML chỉ với trình duyệt
- Nash là một ghi chú độc lập theo định hướng note as HTML
- Không cần phần mềm hay dịch vụ riêng, chỉ cần trình duyệt web vốn thường đã được cài đặt là có thể sử dụng
- Ghi chú đã lưu hỗ trợ chỉnh sửa ngoại tuyến
- Có thể mở ghi chú trống tại nash.html
Nội dung có thể tạo và cách chia sẻ
- Có thể dùng để tạo blog tĩnh hoặc nội dung một trang
- Cũng có thể viết nội dung theo kiểu đính kèm ảnh có trong thư viện
- Khi gửi qua messenger, có thể xem bằng bản xem trước, nên hữu ích để chia sẻ nội dung dài
- Bắt đầu từ trải nghiệm tạo POC cho các ý tưởng đơn giản bằng một tệp HTML duy nhất, đây là nỗ lực đầu tiên nhằm tạo ra một tệp tài liệu hoạt động mà không cần dịch vụ hay phần mềm riêng
- Nash được phát hành dưới dạng mã nguồn mở nên có thể tự do chỉnh sửa và sử dụng
2 bình luận
Nash, ghi chú chạy bằng một tệp HTML duy nhất
Bạn đã đăng nó lên Hacker News sau khi từng đăng ở Show GN, và nhận được rất nhiều phiếu bầu. Xin chúc mừng!
Ý kiến trên Hacker News
Một phần đáng kể các tác vụ nặng được xử lý bằng một thuộc tính HTML đơn giản nhưng mạnh mẽ, nhưng có vẻ bất ngờ là không nhiều lập trình viên biết đến nó
Đây là tính năng đã có từ khá lâu rồi
Writely là startup sau này trở thành Google Docs, và tôi nói điều này với tư cách một trong những nhà sáng lập
90% còn lại là mã backend phải viết để đồng bộ nội dung chỉnh sửa cho đúng, vì mỗi trình duyệt lại có các lỗi triển khai contenteditable kỳ quặc khác nhau :-)
Tuy nhiên (1) việc styling WP quá phiền và tôi không muốn bảo trì, (2) tôi không muốn phụ thuộc vào chức năng plugin và các bản nâng cấp WP, và (3) tôi muốn những người có quyền truy cập khác nhau có thể chỉnh sửa các phần khác nhau trên cùng một trang, điều mà trong hầu hết CMS về cơ bản là không thể
Vì vậy tôi gần như xây CMS từ đầu chỉ dựa trên contenteditable và TinyMCE, rồi gắn thẻ tương ứng vào các vùng có thể chỉnh sửa. Tất nhiên trước khi lưu, backend sẽ kiểm tra ai được phép chỉnh sửa cái gì
Khi khách hàng hoặc nhân viên đăng nhập, họ có thể chỉnh sửa ngay các vùng trang mà họ có quyền; CMS hiển thị viền nét đứt quanh phần có thể chỉnh sửa. Font và màu được lưu trong cấu hình TinyMCE nên không cần lục lọi hay đụng vào HTML. Nếu muốn thì vẫn có thể tự chỉnh trực tiếp
Với khách hàng, chuyện này trông khá như phép thuật. Vì họ không cần vào một trang chỉnh sửa riêng để xem sau khi thay đổi sẽ ra sao; họ chỉnh sửa tại chỗ ngay trên trang, lưu lại là được triển khai ngay
Phần lớn các website đó đến nay sau 5–10 năm vẫn đang chạy, và gần như không cần tôi bảo trì
https://news.ycombinator.com/item?id=43179649
contenteditable="true"vào div cấp cao nhấtTôi nghĩ 20 năm trước mình cũng từng làm việc với thứ này
ContentEditable lần đầu được giới thiệu trong IE 5.5 vào năm 2000, và đến năm 2007 thì đã dùng được trên tất cả trình duyệt chính
Tôi rất thích, và xem mã nguồn thấy đang viết bằng JavaScript thuần nên càng thích hơn
Ngày nay việc có thể tạo các web app tương tác khá nhiều mà không cần thư viện hay framework vẫn bị đánh giá thấp
Ý tưởng làm web app cục bộ đơn giản thành một trang HTML duy nhất cũng thật sự hay. Trước đây tôi đưa con đi bảo tàng khoa học và thử một trình tạo hoạt hình stop-motion đơn giản; sau đó tôi làm một web app tương tự, sao chép thành một file HTML duy nhất vào laptop của con để có thể dùng không cần Internet
Có điều tôi lười viết JavaScript thuần trực tiếp nên đã làm bằng React và bundler, còn thành phẩm được gói thành một file HTML duy nhất. Có lẽ một ngày nào đó tôi sẽ đăng lên Show HN
Với JavaScript thuần thông thường và tay nghề ổn, gần như mọi thứ đều có thể làm gọn gàng hơn và dễ bảo trì hơn
Sau nhiều thập kỷ bảo trì thứ người khác làm, tôi thấy thiết kế đơn giản đến mức ngớ ngẩn do người thông minh tạo ra thắng các tổ hợp khác
Làm tốt lắm
Cũng đáng cân nhắc thay đổi hành vi sao cho khi mở trang bằng trình duyệt từ đĩa cục bộ thì tự động vào chế độ chỉnh sửa, còn khi được đăng lên website của ai đó và truy cập từ web công khai thì trở thành chế độ xem chỉ đọc thông thường. Chỉ cần kiểm tra địa chỉ là http/https hay không
Tất nhiên vẫn nên có cách vượt qua như tham số query string hoặc magic URL fragment để có thể xem ở chế độ chỉnh sửa
Ngoài ra cũng nên cho phép đặt ngoại lệ cho một số domain hoặc tiền tố URL. Nếu mặc định là keepworking.github.io hoặc <https://keepworking.github.io/nash/> để chế độ chỉnh sửa cũng bật trên site đó, thì không cần làm thêm gì cho demo
Sẽ còn tốt hơn nếu người dùng có thể chỉnh sửa ngoại lệ này. Ví dụ người khác cũng có thể có cùng hành vi mà không cần mẹo số 1
Cá nhân tôi nghĩ nó rất tuyệt, nên mong vẫn giữ nguyên cách hiện tại
Dùng https://rpdillon.net/redbean-tiddlywiki-saver.html có thể biến nó thành một ứng dụng di động tự túc có thể lưu “thật sự”
Như vậy sẽ tiến gần hơn nhiều tới chức năng có thể có bookmark cá nhân bất cứ khi nào muốn
Hay. Trước đó đã có một cuộc thảo luận nhắc tới ý tưởng này và TiddlyWiki
https://news.ycombinator.com/item?id=43179649
Tôi mong trình duyệt hỗ trợ web app cục bộ tốt hơn
Nếu file cục bộ có thể dễ dàng truy cập bộ nhớ lưu trữ lâu dài, sẽ mở ra rất nhiều cơ hội cho các ứng dụng GUI nhanh và dễ làm. Về cơ bản là hướng ngược lại với Electron
Tuyệt. Có lẽ vì đã quá quen với việc viết phần JavaScript của website bên ngoài HTML thực sự, nên lần đầu nhìn thấy tôi đã nghĩ “wow, thật lạ là có thể làm việc này chỉ bằng HTML”
Nhưng khi xem mã nguồn thì thấy JavaScript nằm trong một thẻ
scriptbình thường, và tôi lại nhớ ra rằng cũng có thể làm như vậyPhần lớn màn hình chúng ta thấy hằng ngày, thậm chí cả trình soạn thảo mã, đều là trang HTML
Điều đáng ngạc nhiên hơn là mọi người dùng framework rồi đưa vào HTML những thứ thậm chí không phải JavaScript, dùng cấu trúc mà JavaScript bên ngoài sẽ gắn vào sau hoặc phải hydrate. Cảm giác như gom những điểm dở của cả hai phía
Tôi thì gần với phía ngược lại: JavaScript là trung tâm, và ngoài
index.htmlra thì không có file nào có phần mở rộng.html. Tôi cũng không nhúng HTML vào JavaScript. Các template từng phần đều là.htm, và được hydrate trước khi thêm vào DOMSẽ tốt hơn nếu có cảnh báo khi cố đóng trang sau khi chỉnh sửa mà chưa lưu
Có thể cân nhắc thêm trình xử lý
onbeforeunloadTôi thích những công cụ đơn giản như thế này. Gần đây tôi đã làm một “trang chủ”/dashboard tùy chỉnh đơn giản: https://github.com/rcarmo/onepage-by-spec
Rất hay. Thật bực khi ngày càng có quá nhiều phần mềm giấu sau gói thuê bao những tính năng vốn có thể dễ dàng chạy cục bộ và trước đây vẫn làm được, rồi đặt ra các giới hạn nhân tạo
Tôi đang làm một trình soạn thảo Markdown miễn phí chỉ chạy trong trình duyệt, có thể chỉnh sửa file cục bộ thông qua File System Access API mới. API này chỉ khả dụng trên các trình duyệt dựa trên Chromium
https://zareith.github.io/chillmd/