3 điểm bởi GN⁺ 2025-03-16 | 2 bình luận | Chia sẻ qua WhatsApp
  • Nash là ghi chú ở định dạng HTML độc lập, không cần thêm phần mềm hay dịch vụ nào.
  • Có thể sử dụng chỉ với trình duyệt web, đồng thời có thể lưu và chỉnh sửa cả khi ngoại tuyến.
  • Cảm hứng
    • Trong khi hiện thực hóa tính năng tạo POC (Proof of Concept) cho các ý tưởng đơn giản chỉ bằng một tệp HTML, tác giả nhận ra rằng có thể 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.
    • Đây là nỗ lực đầu tiên nhằm tạo ra một tệp tài liệu có thể hoạt động mà không cần phần mềm như Notion hay Word.
  • Lấy ghi chú trống
  • Nash là mã nguồn mở, có thể tự do chỉnh sửa và sử dụng.

2 bình luận

 
xguru 2025-03-16

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!

 
GN⁺ 2025-03-16
Ý kiến trên Hacker News
  • Tôi rất thích dự án này, và khi xem mã nguồn thì thấy thật tuyệt khi nó được viết bằng JS thuần. Ngày nay, người ta dường như đang đánh giá thấp việc có thể xây dựng được bao nhiêu ứng dụng web tương tác mà không cần thư viện hay framework
    • Tôi cũng rất thích ý tưởng tạo các ứng dụng web cục bộ đơn giản chỉ bằng một trang HTML duy nhất. Cách đây không lâu tôi đã cùng con đi thăm bảo tàng khoa học và thử một trình tạo hoạt hình stop-motion đơn giản. Tôi quyết định làm một ứng dụng web như vậy và tạo nó dưới dạng một trang HTML duy nhất để có thể chép vào laptop của con và dùng mà không cần Internet. Tôi lười viết JS thuần nên đã dùng React và bundler. Sau đó nó được bundle thành một tệp HTML duy nhất. Biết đâu một ngày nào đó tôi sẽ đăng lên Show HN
  • Rất nhiều việc nặng được xử lý nhờ thuộc tính đơn giản nhưng mạnh mẽ này. Đáng ngạc nhiên là có vẻ nhiều lập trình viên không biết rõ về thuộc tính này. Nó đã tồn tại từ khá lâu rồi
    • <div id="editor" contenteditable="true">
  • Làm rất tuyệt
    • Tôi khuyên nên để trang tự động mở ở chế độ chỉnh sửa khi được mở từ đĩa cục bộ vào trình duyệt, và chuyển sang chế độ chỉ đọc thông thường khi nó được đăng trên website của ai đó và được truy cập trên web công khai (kiểm tra xem địa chỉ có phải là http/https không)
    • Tất nhiên:
      1. Cần có cách để bỏ qua điều này (tham số query string hoặc một URL fragment đặc biệt), để vẫn có thể xem ở chế độ chỉnh sửa
      2. Cần có ngoại lệ cho một số tên miền/tiền tố URL nhất định — về cơ bản là keepworking.github.io (hoặc https://keepworking.github.io/nash/) — để chế độ chỉnh sửa cũng được kích hoạt trên trang đó. Điều này có nghĩa là về mặt cá nhân, không cần phải làm gì đặc biệt để bản demo hoạt động (ngoại lệ này nên cho phép người dùng chỉnh sửa, để người khác cũng có thể có cùng hành vi mà không cần dùng mẹo ở #1)
  • Cái này thật ngầu. Chúng ta (hoặc có lẽ chỉ mình tôi) đã quá quen với việc viết phần JS của website ở ngoài HTML thực tế, nên khi nhìn thấy thứ này tôi đã nghĩ "wow, thật điên khi chuyện này có thể làm được chỉ bằng HTML". Rồi sau đó xem mã nguồn và thấy toàn bộ JS nằm trong các thẻ script kiểu cũ, tôi lại nhớ ra rằng điều này hoàn toàn có thể
  • Có thể làm cho nó độc lập và thật sự di động bằng cách dùng lưu trữ "thật" https://rpdillon.net/redbean-tiddlywiki-saver.html
  • Tôi ước trình duyệt hỗ trợ tốt hơn cho các ứng dụng web cục bộ. Nếu tệp cục bộ có thể dễ dàng truy cập bộ nhớ lưu trữ bền vững, điều đó sẽ mở ra rất nhiều cơ hội cho các ứng dụng GUI nhanh và đơn giản. Về cơ bản đây là điều ngược lại với electron
  • Làm tốt lắm! Trước đây đã có một cuộc thảo luận về ý tưởng này, trong đó có nhắc đến TiddlyWiki https://news.ycombinator.com/item?id=43179649
  • Việc gọi đây là "ghi chú" hơi gây nhầm lẫn. Tôi sẽ gọi nó là một ứng dụng web một tệp có thể chỉnh sửa và tự sửa đổi
  • Gợi ý: nên cảnh báo khi người dùng định đóng trang sau khi chỉnh sửa mà chưa lưu. Hãy cân nhắc thêm handler onbeforeunload
  • Gần đây tôi đã thử tạo một wiki cục bộ bằng TiddlyWiki nhưng thất bại thảm hại, cuối cùng lại phải tự viết tệp HTML
    • Có vẻ Nash sẽ giúp đơn giản hóa công việc của tôi, cảm ơn
  • Thêm cái này để có mục lục dễ dàng https://codepen.io/cgurski/pen/qBrNrPo