[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-th-1-1-all-ep-26-environment-variables-configurations-go-nodejs-all--*":3,"academy-blog-translations-snizh8zgacu9j9p":79},{"data":4,"page":78,"perPage":78,"totalItems":78,"totalPages":78},[5],{"alt":6,"collectionId":7,"collectionName":8,"content":9,"cover_image":10,"cover_image_path":11,"created":12,"created_by":13,"expand":14,"id":72,"keywords":73,"locale":49,"published_at":74,"scheduled_at":13,"school_blog":70,"short_description":75,"slug":76,"status":68,"title":6,"updated":77,"updated_by":13,"views":71},"JS2GO EP.26 การใช้ Environment Variables และ Configurations ใน Go และ Node.js","sclblg987654321","school_blog_translations","\u003Cp>การจัดการ Configuration ของแอปพลิเคชันเป็นสิ่งสำคัญสำหรับความปลอดภัยและความยืดหยุ่น เช่น การจัดเก็บ API keys, database credentials หรือค่า settings ต่าง ๆ การใช้ Environment Variables เป็นวิธีที่ดีที่สุดในการจัดการ configuration โดยไม่เก็บข้อมูลสำคัญในโค้ด บทความนี้จะสอนวิธีการใช้งาน Environment Variables และ Configurations ใน Go และ Node.js พร้อมตัวอย่างโค้ดและแนวทางปฏิบัติที่เหมาะสม\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Ch2>1. Environment Variables ใน Node.js\u003C\u002Fh2>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>Node.js สามารถเข้าถึง Environment Variables ผ่าน \u003Ccode inline=\"\">process.env\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>ตัวอย่าง: อ่าน Environment Variable\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-javascript\">\u002F\u002F สมมติว่าใน terminal เราตั้งค่า\n\u002F\u002F export PORT=3000\n\nconst port = process.env.PORT || 8080;\nconsole.log(`Server will run on port: ${port}`);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>ใช้ dotenv สำหรับ Configuration ไฟล์\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-javascript\">\u002F\u002F ติดตั้ง dotenv\n\u002F\u002F npm install dotenv\n\nrequire('dotenv').config();\n\nconst port = process.env.PORT || 8080;\nconst dbUser = process.env.DB_USER;\nconst dbPassword = process.env.DB_PASSWORD;\n\nconsole.log(`Connecting to DB as ${dbUser}`);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>ข้อดี Node.js\u003Cbr>✔️ เข้าถึงง่ายด้วย \u003Ccode inline=\"\">process.env\u003C\u002Fcode>\u003Cbr>✔️ ใช้ \u003Ccode inline=\"\">.env\u003C\u002Fcode> file และ library เช่น \u003Ccode inline=\"\">dotenv\u003C\u002Fcode> ได้สะดวก\u003Cbr>✔️ รองรับหลาย environment: development, staging, production\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>ข้อควรระวัง\u003Cbr>⚠️ อย่า commit \u003Ccode inline=\"\">.env\u003C\u002Fcode> ขึ้น repository\u003Cbr>⚠️ ตั้งค่า default สำหรับค่าที่สำคัญ\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Ch2>2. Environment Variables ใน Go\u003C\u002Fh2>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>Go สามารถเข้าถึง Environment Variables ผ่าน package \u003Ccode inline=\"\">os\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>ตัวอย่าง: อ่าน Environment Variable\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext language-go\">package main\n\nimport (\n    \"fmt\"\n    \"os\"\n)\n\nfunc main() {\n    port := os.Getenv(\"PORT\")\n    if port == \"\" {\n        port = \"8080\"\n    }\n    fmt.Println(\"Server will run on port:\", port)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>ใช้ไฟล์ Configuration และ Environment Variables\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext language-go\">import (\n    \"fmt\"\n    \"github.com\u002Fjoho\u002Fgodotenv\"\n    \"os\"\n)\n\nfunc main() {\n    err := godotenv.Load(\".env\")\n    if err != nil {\n        fmt.Println(\"Error loading .env file\")\n    }\n\n    dbUser := os.Getenv(\"DB_USER\")\n    dbPassword := os.Getenv(\"DB_PASSWORD\")\n    fmt.Printf(\"Connecting to DB as %s\\n\", dbUser)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>ข้อดี Go\u003Cbr>✔️ Type-safe เมื่อแปลงค่าเป็น integer, boolean ฯลฯ\u003Cbr>✔️ ทำงานร่วมกับ system environment ได้ดี\u003Cbr>✔️ รองรับหลาย environment ผ่านไฟล์ \u003Ccode inline=\"\">.env\u003C\u002Fcode> หรือ config structs\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>ข้อควรระวัง\u003Cbr>⚠️ แปลงค่าที่ได้จาก environment เป็น type ที่ต้องการอย่างระมัดระวัง\u003Cbr>⚠️ อย่าเก็บ credentials ลงในโค้ดโดยตรง\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Ch2>3. แนวทางปฏิบัติที่เหมาะสม\u003C\u002Fh2>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>✔️ เก็บค่า sensitive เช่น API keys, passwords, DB credentials ใน environment variables\u003Cbr>✔️ ตั้งค่า default สำหรับค่าที่สำคัญเพื่อป้องกัน error\u003Cbr>✔️ ใช้ library สำหรับ config management\u003C\u002Fp>\u003Cul>\u003Cli>Node.js: \u003Ccode inline=\"\">dotenv\u003C\u002Fcode>, \u003Ccode inline=\"\">convict\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>Go: \u003Ccode inline=\"\">godotenv\u003C\u002Fcode>, \u003Ccode inline=\"\">viper\u003C\u002Fcode>\u003Cbr>✔️ แยก config ตาม environment (development, staging, production)\u003Cbr>✔️ อย่า commit \u003Ccode inline=\"\">.env\u003C\u002Fcode> หรือ secrets ลง repository\u003C\u002Fli>\u003C\u002Ful>\u003Cp>&nbsp;\u003C\u002Fp>\u003Chr>\u003Cp>&nbsp;\u003C\u002Fp>\u003Ch2>4. สรุปเปรียบเทียบ Go vs Node.js\u003C\u002Fh2>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cfigure class=\"table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Feature\u003C\u002Fth>\u003Cth>Node.js\u003C\u002Fth>\u003Cth>Go\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>Access\u003C\u002Ftd>\u003Ctd>process.env\u003C\u002Ftd>\u003Ctd>os.Getenv()\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Config Files\u003C\u002Ftd>\u003Ctd>dotenv\u003C\u002Ftd>\u003Ctd>godotenv, viper\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Type Safety\u003C\u002Ftd>\u003Ctd>❌ No\u003C\u002Ftd>\u003Ctd>✔️ Yes (ต้องแปลงเอง)\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Multiple Environment\u003C\u002Ftd>\u003Ctd>Supported\u003C\u002Ftd>\u003Ctd>Supported\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Recommended\u003C\u002Ftd>\u003Ctd>Web app \u002F rapid dev\u003C\u002Ftd>\u003Ctd>Backend \u002F server \u002F type-safe\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Ffigure>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>คำแนะนำ:\u003Cbr>✔️ สำหรับ frontend \u002F back-end web apps → ใช้ Node.js + dotenv\u003Cbr>✔️ สำหรับ backend services \u002F CLI \u002F server → ใช้ Go + godotenv หรือ viper\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Ch2>ตอนต่อไป\u003C\u002Fh2>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>ใน EP.27 ของซีรีส์ JS2GO เราจะพาคุณไปเรียนรู้ การทำ Logging: JavaScript vs Go เพื่อสร้างระบบบันทึกเหตุการณ์ในโค้ดอย่างมีประสิทธิภาพ และสามารถติดตามปัญหาใน production ได้อย่างมืออาชีพ\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>\u003Cstrong>อ่านบทความ Series อื่นๆ\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fwww.superdev.school\u002Fblogs\u002Fcategories\u002FGolang\">\u003Cstrong>Golang The Series\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fwww.superdev.school\u002Fblogs\u002Fcategories\u002FJS2GO\">\u003Cstrong>JS2GO\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fli>\u003Cli>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fwww.superdev.school\u002Fblogs\u002Fcategories\u002FTailwind%20CSS\">\u003Cstrong>10 Ep ที่จะให้คุณเป็นมือโปร Tailwind CSS ในชั่วข้ามคืน\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>\u003Cstrong>🔵 Facebook: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fwww.facebook.com\u002Fsuperdev.academy.th\">\u003Cstrong>https:\u002F\u002Fwww.facebook.com\u002Fsuperdev.academy.th\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fp>\u003Cp>\u003Cstrong>🔴 YouTube : \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUC2eI2RxcA2zbTqZyHyWIfRg\">\u003Cstrong>Superdev Academy\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fp>\u003Cp>\u003Cstrong>📸 Instagram: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fwww.instagram.com\u002Fsuperdevschool\u002F\">\u003Cstrong>Superdev Academy\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fp>\u003Cp>\u003Cstrong>🎬 TikTok: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fwww.tiktok.com\u002F@superdevacademy?lang=th-TH\">\u003Cstrong>https:\u002F\u002Fwww.tiktok.com\u002F@superdevacademy?lang=th-TH\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fp>\u003Cp>\u003Cstrong>🌐 Website: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fwww.superdevacademy.com\u002F\">\u003Cstrong>https:\u002F\u002Fwww.superdevacademy.com\u002F\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong>&nbsp;\u003C\u002Fstrong>\u003C\u002Fp>","51_11zon_bs0s0sz5qm.webp","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F8rc39k86q4gos0g\u002F51_11zon_bs0s0sz5qm.webp","2026-03-04 08:46:11.597Z","",{"keywords":15,"locale":43,"school_blog":53},[16,23,28,33,38],{"collectionId":17,"collectionName":18,"created":19,"created_by":13,"id":20,"name":21,"updated":22,"updated_by":13},"sclkey987654321","school_keywords","2026-03-04 08:46:09.895Z","1zitau06ohn79bf","Environment Variables","2026-04-10 16:13:09.532Z",{"collectionId":17,"collectionName":18,"created":24,"created_by":13,"id":25,"name":26,"updated":27,"updated_by":13},"2026-03-04 08:46:09.677Z","ha1ih9kkw3lzrvy","Configuration","2026-04-10 16:13:09.406Z",{"collectionId":17,"collectionName":18,"created":29,"created_by":13,"id":30,"name":31,"updated":32,"updated_by":13},"2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-04-10 16:07:25.893Z",{"collectionId":17,"collectionName":18,"created":34,"created_by":13,"id":35,"name":36,"updated":37,"updated_by":13},"2026-03-04 08:24:40.405Z","05u3tysava2z6ga","Node.js","2026-04-10 16:07:29.504Z",{"collectionId":17,"collectionName":18,"created":39,"created_by":13,"id":40,"name":41,"updated":42,"updated_by":13},"2026-03-04 08:45:30.765Z","nayuhpre9emd5xw","JS2GO","2026-04-10 16:12:59.160Z",{"code":44,"collectionId":45,"collectionName":46,"created":47,"flag":48,"id":49,"is_default":50,"label":51,"updated":52},"th","pbc_1989393366","locales","2026-01-22 10:59:55.832Z","twemoji:flag-thailand","s8wri3bt4vgg2ji",true,"Thai","2026-04-10 15:42:46.614Z",{"category":54,"collectionId":55,"collectionName":56,"expand":57,"id":70,"views":71},"hsa1afr8fcnd6qb","pbc_2105096300","school_blogs",{"category":58},{"blogIds":59,"collectionId":60,"collectionName":61,"created":62,"created_by":13,"id":54,"image":63,"image_alt":13,"image_path":64,"label":65,"name":41,"priority":66,"publish_at":67,"scheduled_at":13,"status":68,"updated":69,"updated_by":13},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:24:37.986Z","js2_go_2_11zon_y6paxmuz32.webp","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fhsa1afr8fcnd6qb\u002Fjs2_go_2_11zon_y6paxmuz32.webp",{"en":41,"th":41},10,"2025-08-11 03:41:08.820Z","published","2026-04-25 02:32:14.339Z","snizh8zgacu9j9p",209,"8rc39k86q4gos0g",[20,25,30,35,40],"2025-10-09 01:25:22.326Z","เรียนรู้การใช้งาน Environment Variables และ Configuration ใน Go และ Node.js เพื่อจัดการค่า sensitive เช่น API keys, database credentials อย่างปลอดภัย พร้อมตัวอย่างโค้ดและแนวทางปฏิบัติที่เหมาะสม","ep-26-environment-variables-configurations-go-nodejs","2026-04-25 02:48:01.365Z",1,{"th":76}]