[Dev Weekend] หัดเขียน scripts สร้าง file ไว้ใช้งานกัน ด้วย NodeJs

หากเราได้ลองเขียนโปรแกรมตาม pattern ต่างๆ เช่น MVC หรือ Flux (ที่ผมเคยเขียนนะ) เราจะเจอว่า pattern พวกนี้ก็มีวิธี design Folder Structure และไฟล์ต่างๆ ว่าจะเอาไฟล์ไหนเก็บไว้ตรงไหน ซึ่งก็มีหลายท่า คิดเองทำเองก็ได้ ซึ่งหลายๆ framework ก็จะมี Command line ให้อยู่แล้ว เมื่อเราจะสร้าง module ใหม่ก็ใช้ command line แล้วมันก็จะสร้าง file หรือ folder ให้เอง

ซึ่งวันนี้ผมจะขอมาลองเขียน scripts สร้าง command line tools พวกนี้เอง เพราะเนื่องจาก หากโปรเจคเราเป็นโปรเจคที่ใช้ lib บางๆหลายๆตัว มาประกอบกันจะไม่มี command line ให้ แล้วเมื่อเราสร้าง module ใหม่เรื่อยๆ ก็จะต้องมานั่งวางไฟล์ต่างๆ ไว้ตาม structure ที่เรากำหนดไว้เอง

ผมใช้ Nodejs v7.10.0 นะครับ (แต่คงไม่มีปัญหาเรื่อง version มาก)

เริ่มจากให้โจทย์ว่า เมื่อใช้คำสั่ง

node dev.js new_module posts

มันก็จะสร้างไฟล์ posts.js, posts.js, posts.html ไว้ใน Folder Controller, Model, View ตามลำดับ

สร้าง Folder Controller, Model, View

ตอนนี้ยังไม่มีไฟล์อะไรอยู่ใน Folder พวกนี้นะครับ

ต่อไปเราจะสร้าง script มา gen file ให้ Folder พวกนี้กัน สร้างไฟล์ dev.js

นำโค้ดไปแปะในไฟล์ dev.js แล้วลองอ่านดูซักนิดก็ดี อธิบายโค้ดนี้สั้นๆการทำงานคือ จะสร้างไฟล์ตามชื่อ module ที่เราใส่ใน command มา 3 ไฟล์ใน folder model, view, controller

ผมลองใช้คำสั่ง

node dev.js new_module posts

ผลลัพธ์จะได้

จะได้ไฟล์ posts มา 3 ไฟล์อยู่ใน model view controller และ command จะขึ้น success ไม่ต้องมานั่งสร้างไฟล์เอง ทีนี้อยาก custom อะไรเพิ่มก็ตามใจเราได้เลย เสร็จเรียบร้อยครับ สำหรับโจทย์แรก

ก่อนเข้าเรื่องโจทย์ที่ 2 ขอบอกก่อนว่าตอนผมเขียน react redux เมื่อผมจะสร้าง module ใหม่กับไฟล์ต่างๆตาม pattern ของ redux ก็คือพวก actions, reducer, container, etc ซึ่งก็มีวิธีการวาง Project Structure ต่างๆมีหลายแบบ ดูเพิ่มเติม ได้ที่นี่ ในหัวข้อ Project Structure ส่วนตัวผมแบ่งตาม feature

โจทย์ที่ 2 ของผมมีอยู่ว่า หากผมใช้คำสั่ง

node dev.js new_component posts

ผลลัพธ์ จะได้ไฟล์พวกนี้มา

- Components // folder สร้างไว้อยู่แล้ว
- posts
- actions.js
- reducer.js
- components.js
- container.js
- types.js
- api.js
- documents.js
- utils.js
- styles.js

บอกก่อนว่าไฟล์พวกนี้มาจากความต้องการของผม ดังนั้นมันจะเอาไว้ทำอะไรไม่ต้องใส่ใจ เราจะแค่สร้างไฟล์พวกนี้ออกมาให้ได้พอ

เริ่มจากสร้าง Folder Components อีกหนึ่ง folder

จะเห็นว่าใน Components ยังไม่มีอะไร

กลับไปที่ไฟล์ dev.js ผมเพิ่มโค้ดไปอีกหนึ่ง else if เดียว

โค้ดชุดเดิมเพิ่มเติมคือ else if ไว้ใช้ command “new_component”

ลองรันคำสั่ง

node dev.js new_component posts

ผมจะได้ folder posts กับไฟล์ต่างๆใน posts ที่ผมต้องการเรียบ

ตามนี้ เสร็จเรียบร้อย เมื่อผมต้องการสร้าง module ใหม่ ผมก็ใช้แค่ scripts นี้ก็จะได้ module พร้อมไฟล์ต่างๆที่ต้องการ อยากเพิ่มไฟล์ test หรือ custom ตรงไหนเองก็ได้เขียนเอง

จบแล้วครับ

ส่วนโค้ดอยู่นี่ https://github.com/kenshero/-DevWeekend-

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.