เวลาเราเขียนโค้ด nodejs หลายๆไฟล์แล้วต้องการนำฟังก์ชันของอีกไฟล์หนึ่งมาใช้ให้เราทำการ export ฟังก์ชันในไฟล์ที่ต้องการให้ไฟล์อื่นมาเรียกใช้ก่อน จากนั้นไฟล์ที่ต้องการใช้งานฟังก์ชันให้ทำการ import ฟังก์ชันนั้นเข้ามา
จากตัวอย่างโค้ดด้านล่างสมมติให้มี 2 ไฟล์ ชื่อไฟล์ main.js และ a.js โดยไฟล์ a.js จะทำการ export ฟังก์ชันให้ไฟล์อื่นใช้ ส่วนไฟล์ main ก็จะทำการเรียกใช้ฟังก์ชันโดยการ import
จากตัวอย่างโค้ดด้านบนวิธี export ฟังก์ชันคือให้ใช้คำสั่ง module.exports สร้างเป็น object ( ตามตัวอย่างที่มี { } ) แล้วใส่ชื่อของฟังก์ชันที่ต้องการ export ลงไปในแถบปีกกาเปิดปิด ส่วนฝั่งไฟล์ main.js ให้ import ด้วยคำสั่ง require โดยให้ใส่ path ของไฟล์ที่ต้องการ import ฟังก์ชันเข้ามา เมื่อ import เข้ามาแล้ว ตัวแปรชื่อ multiply ( มาจากตัวอย่างด้านบน ) จะสามารถใช้ฟังก์ชันในไฟล์ที่ import มาได้เลย
ต่อไปนี้จะเป็นอีกรูปแบบของการเขียน a.js เพื่อ export ฟังก์ชัน
ต่อไปนี้จะเป็นการ import แบบ ES6 จะแตกต่างกัน require อย่างไรดูตามตัวอย่างด้านล่างได้เลย
ต่อไปเรามาดูทีละตัวกันว่าความหมายและการใช้งานอย่างไร
import defaultExport from "module-name"
นี่คือการ import จาก module ที่ใช้ export default ส่วนมากมักจะเป็น module ที่ export class หรือฟังก์ชันตัวเดียวออกมา ซึ่งใน React ใช้บ่อยมาก export default
import * as name from "module-name"
import ทุกฟังก์ชันใน module แล้วตั้งชื่อว่า name เพื่อนำไปเรียกใช้งาน
import { export1 } from "module-name"
import แค่ฟังก์ชันเดียวจาก module ซึ่ง module อาจ export หลายฟังก์ชัน
import { export1 as alias1 } from "module-name"
import ฟังก์ชันเดียวจาก module พร้อมตั้งชื่อใหม่เพื่อนำไปใช้
import { export1 , export2 } from "module-name"
import 2 ฟังก์ชันจาก module
import { export1 , export2 as alias2 } from "module-name"
import 2 ฟังก์ชันจาก module แต่ตั้งชื่อใหม่แค่บางฟังก์ชันเพื่อนำไปใช้
ส่วนมากมักจะไม่ค่อยตั้งชื่อ object ใหม่ที่ import เข้ามาสักเท่าไหร่ ยกเว้นกรณีชื่อฟังก์ชันที่ import เข้ามามีชื่อที่ยาวมาก จึงเหมาะแก่การตั้งชื่อใหม่ให้สั้นลง
ข้อควรระวัง ในการ import/export module ของ nodejs ถ้าให้ a.js require b.js และให้ b.js requie a.js จะทำให้เกิด circlular module เกิด infinity loop ทำให้เกิด error ขึ้น ดังนี้ให้จัดโครงสร้างการ import/export ให้ดี
ความคิดเห็น
แสดงความคิดเห็น