Website Directory Tree

วันนี้มานั่งจัดระเบียบ dir บนเครื่อง เนื่องจากรู้สึกว่ามันสะเปะสะปะจนเกินไปหน่อย ไม่รู้อะไรต่ออะไรโยงกันมั่วไปหมด เนื่องจากตอนทำ project ไม่ได้คิดไว้แต่แรกว่าต้องทำอะไรบ้าง พอมีส่วนขยายมันก็เลยโตแบบไม่บันยะบันยัง

จนมันมีความรู้สึกแว๊บเข้ามาว่า เฮ้ยเรามาถึงจุดนี้ได้ยังไง จุดที่เมื่อก่อนทำเว็บแบบ static html เวลาแบ่ง folder ก็บ้านๆ ตามนี้

ยุค static website

root/
 |-- style/
 |-- img/
 |-- icon/
 |-- banner/
 |-- flash/
 |-- page/
 |-- index.html
 +-- home.htm

บางเว็บก็จะตั้งชื่อ folder กันแบบเหลือเฟือ เป็นภาษา karaoke บ้าง ชื่อไม่บ่งบอกความหมายบ้าง อาทิ “phantee” “tarangboss” เป็นต้น พอต้นยุค web dynamic ที่เริ่มมี programing language เข้ามา directory เว็บก็เปลี่ยนไปเป็นแบบนี้

ยุค Dynamic website

root/
 |-- style/
 |-- images/
 |-- javascript/
 |-- include/
 |-- connect/
 |-- admin/
 +-- index.php

จะเริ่มมีไฟล์มากขึ้น จากเดิมที่ static เรียกหน้าเว็บไหน ก็แสดงหน้าเว็บนั้นเลยจบๆไป พอมาเป็น php บางคนก็ยังติดนิสัย static มา ทำให้สร้างไฟล์ที่ทำงานซ้ำๆ กัน เปลี่ยนแค่หัวเรื่อง “title” เท่านั้นและแก้ query ใหม่ ประสบการณ์ตรงเลย เมื่อก่อน code แบบนี้จริงๆ เอ๊ะอะ นึกไม่ออกก็ include, require ไฟล์ใหม่ตะพึด ไฟล์ที่ตั้งชื่อจะมีหน้าตาแบบนี้

ยุค Programming เฟื่องฟู

inc-product-add.php 
inc-product-save.php 
inc-product-view.php 
inc-product-view2.php 
inc-product-view3.php 
inc-product-edit.php 
inc-product-edit-save.php 
inc-product-delete.php 
inc-product-search.php 
inc-product-type.php 
inc-product-comment.php 
inc-product-random.php 
inc-product-random2.php 
inc-product-member.php 
index1.php 
index2.php

นี่ยังน้อยยยย เว็บนึงต่ำๆต้องมีไฟล์กากๆ อย่างน้อย 30-50 ไฟล์ ที่ทำหน้าที่แบ่งเบาภาระของชาวบ้าน พอพ้นยุค code noob มาซักพัก ทั้ง dir ก็จะหดลง และมี scope การทำงานที่ชัดเจนขึ้น

ยุค Dev

root/ 
 |-- css/ 
 |-- images/ 
 |-- js/ 
 |-- fonts/ 
 +-- index.xxx

จนล่วงเลยมายุค App ในปัจจุบัน มีทั้ง framework สารพัดให้ใช้ คนเราไม่ต้องจัดระเบียบด้วยตัวเองอีกต่อไปแล้ว เพราะมันจะสร้างไว้ให้ มีหน้าที่ใช้ให้เป็นเท่านั้น

ยุค Framework

root/ 
 |-- .git 
 |-- app/ 
 |-- bootstrap/ 
 |-- config/ 
 |-- database/ 
 |-- public/ 
 |-- resource/ 
 |-- storage/ 
 |-- tests/ 
 |-- .bowerrc 
 |-- .env 
 |-- .gitignore 
 |-- readme.md 
 |-- gulpfile.js 
 |-- package.json 
 +-- bower.json

เฮ้ย เรามาถึงจุดนี้ได้ยังไง?

มาถึงตอนสรุปแล้ว ผมจะแนะนำ dir ของตัวเองแล้วกัน สำหรับเอาไว้เป็นต้นแบบ หรือ blueprint ของตัวเอง เวลาสร้าง project ใหม่

root/ 
 |-- _script/ --- เก็บไฟล์ js ที่เขียนเอง หรือพวก plugins ของ jquery 
 |-- _styles/ --- เก็บไฟล์ .scss, .less ที่เขียนเอง รวมถึง _variables ที่จำเป็น 
 |     +-- css/ --- เก็บ .css ที่เป็นไฟล์เฉพาะของ plugins บางอย่าง หรือ 
 |-- fonts/ --- เก็บ font face แยกเป็น folder ใคร folder มัน มี .eot, .svg, .ttf, .woff, .woff2 
 |-- images/ --- เก็บสารพัดภาพ ถ้าเฉพาะเจาะจงก็แยก folder ออกไปได้ 
 |-- node_modules/ --- ถ้าใช้ มันก็ต้องมี! 
 |-- pre-css/ --- ตัว css จาก {_styles} เอาไว้ test production 
 +-- www/ --- เว็บสำเร็จ 
      |-- css/ --- .css ที่ minify แล้ว 
      |-- js/ --- .js ที่ concat, uglify แล้ว 
      |-- images/ --- ภาพหลัง imagemin process แล้ว 
      |-- fonts/ --- web fonts ทั้งหมด ที่ใช้ 
      +-- index.html

ลอก note เก่า มาเล่าใหม่

โพสต์โดย Thanikul Sriuthis เมื่อ วันจันทร์ที่ 2 พฤศจิกายน 2015