Workshop 7 : เจาะลึกโครงสร้างโฟลเดอร์ www
จาก Workshop 2 เราได้ทราบแล้วว่า www คือโฟลเดอร์เก็บไฟล์ต่าง ๆ ของ App สำหรับทุก Platform ส่วนโฟลเดอร์ platforms/ … เก็บไฟล์เฉพาะของ platform นั้น ๆ เช่นโฟลเดอร์ platforms/ios , platforms/ android เก็บไฟล์ของ App สำหรับ platform iOS และ Android
สรุป
ย้อนไป Workshop 4 เราแก้ไขไฟล์ index.html (โฟลเดอร์โปรเจค/www/index.html) เน้นอีกครั้ง ว่า เราแก้ index.html ไฟล์เดียวใน www แต่พอทดลองรัน มันจะมีผลกับทุก platform อัตโนมัติ ซึ่งเกิดจากว่า เมื่อมีการสั่ง cordova build หรือ cordova run หรือ cordova emulate ระบบจะก๊อปปี้ไฟล์ต่าง ๆ ใน www เข้าไปไว้ในโฟลเดอร์ platforms/ …. ให้ทุกครั้ง จากนั้นจึง compile และรัน ซึ่งก็เป็นไปตามหลักของการพัฒนา App แบบ Cross- platform นั่นคือเขียนโปรแกรมที่เดียว ใช้ได้กับ platform หลายระบบนั้นเอง
สำหรับ Workshop นี้ เมื่อทดลองแก้ไขไฟล์ เราไม่ได้ใช้ cordova build หรือ emulate หรือ run แต่ใช้ cordova prepare เพื่อสั่งก๊อปปี้กระจายไฟล์เนื้อหาและเอกสารเข้าไปสู่แต่ละ platform ซึ่งการใช้ prepare นี้เพียงพอแล้ว สำหรับการทดสอบ App โดยใช้ Ripple หรือเว็บบราเซอร์ (แต่ถ้าต้องการทดสอบกับ Sim/ Emulator ก็ต้องใช้ cordova emulate ตามปกติ)
บางท่านอาจสงสัยว่า ทำไมทุก platform ไม่ใช้โฟลเดอร์อันเดียวกันเป็นกลาง ๆ ไปเลย ทำไมต้องแยกให้ยุ่งยาก เหตุผลก็คือ แต่ละระบบหรือแต่ละ platform จะมีโครงสร้างโฟลเดอร์ ไฟล์และองค์ประกอบต่าง ๆ ไม่เหมือนกัน ดังนั้นจึงต้องแยกจากกันเด็ดขาด แล้วใช้วิธีก๊อปปี้ไฟล์ส่วนกลาง (ส่วนที่เป็น HTML, CSS, JS ใน โปรเจค/www) กระจายเข้าไปใส่ใน www แต่ละ platform แทน
สำหรับ Workshop นี้ เมื่อทดลองแก้ไขไฟล์ เราไม่ได้ใช้ cordova build หรือ emulate หรือ run แต่ใช้ cordova prepare เพื่อสั่งก๊อปปี้กระจายไฟล์เนื้อหาและเอกสารเข้าไปสู่แต่ละ platform ซึ่งการใช้ prepare นี้เพียงพอแล้ว สำหรับการทดสอบ App โดยใช้ Ripple หรือเว็บบราเซอร์ (แต่ถ้าต้องการทดสอบกับ Sim/ Emulator ก็ต้องใช้ cordova emulate ตามปกติ)
บางท่านอาจสงสัยว่า ทำไมทุก platform ไม่ใช้โฟลเดอร์อันเดียวกันเป็นกลาง ๆ ไปเลย ทำไมต้องแยกให้ยุ่งยาก เหตุผลก็คือ แต่ละระบบหรือแต่ละ platform จะมีโครงสร้างโฟลเดอร์ ไฟล์และองค์ประกอบต่าง ๆ ไม่เหมือนกัน ดังนั้นจึงต้องแยกจากกันเด็ดขาด แล้วใช้วิธีก๊อปปี้ไฟล์ส่วนกลาง (ส่วนที่เป็น HTML, CSS, JS ใน โปรเจค/www) กระจายเข้าไปใส่ใน www แต่ละ platform แทน