dojo.require("dojo.lang");
สิ่งที่เกิดขึ้น ก็คือ dojo จะค้นหาว่า package
dojo.lang
ถูก include ไว้ใน file
dojo.js
แล้วหรือยังถ้ามีแล้ว ก็จะไม่ทำอะไร แต่ถ้ายังไม่มี
ก็จะทำการ load มาให้
ประเด็นคำถามก็คือ แล้วมันจะ load package
dojo.lang
จาก file อะไรคำตอบก็คือ dojo จะลอง load file ตามลำดับนี้ (relative จาก dojo root directory)
- src/lang.js
- src.js
- __package__.js
ถ้าเจอใน file ไหนก่อน ก็จะหยุดที่ตรงนั้น
แต่ถ้าไม่เจอเลย ก็จะ raise error
ที่นี้ถ้าเรามี custom component ของเราเอง
แต่ไม่อยากเก็บไว้ใต้ path เดียวกับ dojo
เราจะต้องทำอย่างไร
ทดลองสร้าง package
pok.test
ขึ้นมากำหนดว่า source code ของ package นี้จะเก็บอยู่ใต้ directory
pok
ที่อยู่ระดับเดียวกับ directory
src
ของ dojoจากนั้น สร้าง file
test.js
ไว้ใต้ directory pok
+ src
+ pok
- test.js
คำสั่งที่สำคัญที่ต้องมีใน file test.js ก็คือ
dojo.provide("pok.test");
ซึ่งเป็นการบอกให้กลไกการ load ของ dojo หยุดการค้นหา package
เวลาจะใช้งาน custom package
เราก็ต้องมีการระบุ path ในการ search โดยใช้คำสั่ง
dojo.setModulePrefix("pok", "pok");
parameter ตัวแรก คือชื่อ prefix ของ package
ส่วน parameter ตัวที่ 2 ก็คือ relative path ของ package
ซึ่ง relative กับ root directory ของ dojo
เมื่อเราสั่ง
dojo.require("pok.test");
dojo ก็จะดูว่า prefix ของ package ที่ชื่อ
pok
จะต้องไปหาที่ directory ไหน
กลไกการหา ก็เป็นตามปกติ นั่นคือ
- pok/test.js
- pok.js
- __package__.js
No comments:
Post a Comment