มินิมัลลิสต์เท็กซ์เอดิเตอร์ที่รันในเบราว์เซอร์และเก็บทุกอย่างไว้ใน URL
(github.com/antonmedv)- เท็กซ์เอดิเตอร์ขนาดเล็กที่ทำงานในเบราว์เซอร์และ เก็บข้อความทั้งหมดไว้ใน URL hash
- เนื้อหาที่ป้อนจะถูก บีบอัดด้วย deflate เพื่อลดความยาวของ URL และทำงานฝั่งไคลเอนต์ทั้งหมดแบบ ไม่มีแบ็กเอนด์เซิร์ฟเวอร์
- มีฟีเจอร์อำนวยความสะดวกพื้นฐาน เช่น บันทึกอัตโนมัติ (หน่วง 500ms), โหมดมืด, และ รองรับมือถือ
- สามารถกำหนดชื่อเอกสารด้วย
# Titleหรือเพิ่ม style attribute ให้แท็ก<article>เพื่อเก็บไว้ใน URL ได้เช่นกัน - ส่งต่อเอกสารได้เพียงแค่แชร์ URL จึงเหมาะสำหรับการแชร์โน้ตสั้น ๆ หรือโค้ดสไนเป็ต
ภาพรวม
- textarea.my คือ มินิมัลลิสต์เท็กซ์เอดิเตอร์ ที่ทำงานได้ครบถ้วนภายในเบราว์เซอร์
- ข้อมูลทั้งหมดถูกเก็บไว้ใน URL hash จึงไม่ต้องมีเซิร์ฟเวอร์หรือฐานข้อมูลแยกต่างหาก
- สร้างด้วย JavaScript และพร้อมใช้งานได้ทันทีโดยไม่ต้องติดตั้ง
ฟีเจอร์หลัก
-
การบีบอัดข้อความ (Compression magic)
- บีบอัดข้อความที่ป้อนด้วยอัลกอริทึม deflate เพื่อลดความยาวของ URL ให้สั้นที่สุด
- แชร์โน้ตยาว ๆ ได้ด้วย URL ที่มีความยาวราว 500 ตัวอักษร
-
การบันทึกและแชร์ผ่าน URL
- เนื้อหาที่เขียนจะถูกรวมไว้ใน URL hash จึงคัดลอกลิงก์ไปแชร์ได้ทันที
- แม้ไม่มีการบันทึกบนเซิร์ฟเวอร์ก็ยัง กู้คืนเอกสารได้จากลิงก์เพียงอย่างเดียว
-
บันทึกอัตโนมัติและโหมดมืด
- มีฟังก์ชัน บันทึกอัตโนมัติ หลังพิมพ์โดยหน่วงเวลา 500ms
- ตรวจจับ การตั้งค่าโหมดสีของระบบ และเปิดใช้โหมดมืดโดยอัตโนมัติ
-
อินเทอร์เฟซที่เป็นมิตรกับมือถือ
- สามารถเขียนเอกสารบนสมาร์ตโฟนได้ด้วยฟังก์ชันเดียวกันทั้งหมด
- ดีไซน์แบบ responsive เหมาะกับการใช้งานระหว่างเดินทาง
-
โครงสร้างแบบไม่มีแบ็กเอนด์
- ตามข้อความ “Zero servers were harmed” เป็น แอปที่ทำงานบนไคลเอนต์ทั้งหมด
- ไม่มีภาระฝั่งเซิร์ฟเวอร์หรือปัญหาเรื่องการเก็บข้อมูลส่วนบุคคล
วิธีใช้งาน
- เข้า textarea.my แล้วเริ่มพิมพ์ได้ทันที
- สามารถสังเกตได้ว่า URL จะยาวขึ้นตามปริมาณข้อความที่ป้อน
- คัดลอก URL เพื่อแชร์ให้ผู้อื่นได้
เคล็ดลับขั้นสูง (Pro tips)
- หากใส่
# Titleในบรรทัดแรกของเอกสาร จะถูกตั้งเป็น ชื่อหน้า - ข้อมูลจะถูกเก็บไว้ทั้งใน localStorage และ URL เพื่อสำรองไว้สองทาง
- หากเพิ่ม style attribute ให้แท็ก
<article>ในเครื่องมือนักพัฒนา style นั้นก็จะถูกเก็บไว้ใน URL ด้วย
ลิงก์ตัวอย่าง
- มีเอกสารตัวอย่าง Crime and Punishment ของ Fyodor Dostoevsky
- มีเอกสารตัวอย่าง An Ode to Comic Sans ที่เขียนโดย ChatGPT
คุณลักษณะทางเทคนิค
- พัฒนาด้วย JavaScript
- จัดการข้อมูลด้วย URL hash และ localStorage เท่านั้น โดยไม่ต้องร้องขอไปยังเซิร์ฟเวอร์
- โครงสร้างเรียบง่ายช่วย ลดความเสี่ยงด้านความปลอดภัยและทำให้โหลดได้รวดเร็ว
บทสรุป
- textarea.my คือ เท็กซ์เอดิเตอร์น้ำหนักเบามากที่ทำงานในสภาพแวดล้อมแบบ serverless โดย
มอบแนวทางที่แปลกใหม่ในการ บันทึกและส่งต่อเอกสารได้เพียงผ่านการแชร์ URL - เป็นเครื่องมือที่เหมาะสำหรับนักพัฒนาหรือนักออกแบบในการ จดไอเดียสั้น ๆ, บันทึกโค้ด, และเขียนเอกสารทดสอบ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
น่าขำดีที่ผมก็เคยทำอะไรแทบจะเหมือนกันเป๊ะเหมือนกัน แต่ทำไว้ สำหรับแผนที่
ผมต้องการวิธีวาดรูปบนแผนที่แล้วแชร์ลิงก์เพื่อให้อีกฝ่ายเห็นตำแหน่งของตัวเองได้
การใส่คำอธิบายประกอบบนสกรีนช็อตแก้ปัญหาแรกได้ แต่ไม่ช่วยเรื่องที่สอง
เลยลงมือทำเองแบบให้อารมณ์ Vibe engineering
เป็นแนวคิดคล้าย ‘แอปเฉพาะกิจ’ สำหรับจุดประสงค์บางอย่าง
เพราะโฮสต์ได้ถูกโดยไม่ต้องมีแบ็กเอนด์ จึงแจกฟรีได้
ลิงก์เดโม MapDraw
เพิ่มคำอธิบายแบบข้อความได้ไหม? แล้วก็คงดีถ้าปุ่มลบไม่ใช่ล้างทั้งหมด แต่ลบเฉพาะรูปล่าสุดหรือเลือกลบได้
เช้านี้ผมก็กำลังทำอะไรคล้าย ๆ กันอยู่
ถ้าใช้
.toBase64({ alphabet: "base64url" })กับfromBase64({ alphabet: "base64url" })แทนการreplaceบนสตริง base64 จะดูสะอาดกว่าดูเอกสาร MDN
ตามสเปกแล้ว URL รองรับได้อย่างน้อย 8,000 ตัวอักษร
เบราว์เซอร์หลัก ๆ รองรับเกิน 64,000 ตัวอักษร และ Chrome รองรับได้ถึง 2MB
RFC9110 ส่วน 4.1-5, อ้างอิงจาก StackOverflow, เอกสาร Chromium
และเพื่อเป็นข้อมูล ลิงก์ข้อความเต็มของ Crime and Punishment ก็ทำเป็น URL ได้
ลิงก์แชร์จาก Instagram หรือ YouTube มักมีพารามิเตอร์ติดตามยาวหลายร้อยตัวอักษรแนบมาด้วย
ไม่เข้าใจว่าทำไมต้องเก็บข้อมูลไว้ใน URL แล้วทำให้มันพองขึ้นด้วย แค่เก็บใน localStorage ก็พอไม่ใช่หรือ?
ผมเคยทำอะไรคล้าย ๆ กันด้วยสเปรดชีตมาก่อน
ต้องย้ายแท็บในช่องกรอกข้อมูลแล้วรีเฟรชถึงจะทำงาน
ลิงก์ตัวอย่าง
โค้ดทั้งหมดมีประมาณ 130 บรรทัด
ตัวอย่างเพิ่มเติม
ผมเคยทำ JS framework เล็ก ๆ ที่ช่วยให้ทำแนว การแชร์ผ่าน URL แบบนี้ได้ง่าย
ลิงก์ GitHub ของ lost.js
ผมชอบแนวทางนี้ในแง่ ความเป็นส่วนตัว
เลยกำลังคิดว่าจะเพิ่มตัวเลือกบันทึกลง URL ในเอดิเตอร์ kraa.io ของผมด้วยดีไหม
textarea.myมีสคริปต์ติดตามรวมอยู่ด้วยมีการฝังโค้ด Cloudflare beacon ไว้ จึงควรระวัง
เมื่อก่อนผมเคยทำอะไรคล้าย ๆ กันไว้ สำหรับแท็บกีตาร์
ดูได้ที่ tabviewer.app
ปัญหา URL ยาวเกินไปผมแก้ด้วยบริการย่อ URL
GitHub repository
เป็นโปรเจกต์ที่เจ๋ง แต่พอลองโหลด “Crime and Punishment” แล้วเบราว์เซอร์มือถือผม แครช เลย
ดูเหมือน URL ไม่ได้ถูกออกแบบมาให้รับ ‘โทษทัณฑ์’ ขนาดนั้น
ขอโฆษณาหน่อยนะ ผมก็ทำอะไรคล้าย ๆ กันแต่ไม่มีใครสนใจเลย
ลิงก์ GitHub ของ Buffertab