วันพฤหัสบดีที่ ๓ มิถุนายน พ.ศ. ๒๕๕๓

ScriptMode ของ ScriptManager ต่างกันอย่างไร

วันนี้เจอคำถามที่ GreatFriends เรื่อง ScriptMode ของ ScriptManager ซึ่งผมตอบไปแล้ว แต่ก็จะมาขยายความเพิ่มใน blog นี้ละกันครับ

ใน ScriptManager จะมี Property ตัวหนึ่งชื่อ ScriptMode ซึ่งมี option ให้เลือก 4 ข้อ คือ Auto, Inherit, Debug, Release เพื่อความเข้าใจที่ง่ายขึ้นมาลองทดสอบกันเลยครับ



จากรูปผมสร้าง page ใหม่โดยให้มี ScriptManager แค่ 1 ตัว กำหนด ScriptMode เป็น debug แล้วลองรันทดสอบดูครับ (ถ้าใช้ IE ต้องไปเอา Disable Script Debugging ของ IE ใน Option ออกก่อนนะครับ ถึงจะ debug script ได้)



ลองดูใน Script Document ของ VS จะเห็นว่านอกจาก Default.aspx แล้วยังมี WebResource 1 ไฟล์กับ ScriptResource อีก 2 ไฟล์เพิ่มขึ้นมา ตอนนี้เรามา focus ที่ ScriptResource ครับ ลอง double click มาตัวหนึ่ง จะเห็นว่าข้างในมันคือ javascript นี่เอง มีใส่ comment และ เว้นบรรทัดสวยงามอ่านง่ายครับ สังเกตุชื่อใน comment ครับ ว่ามันคือ MicrosoftAjax.debug.js

คราวนี้ลองเปลี่ยน ScriptMode เป็น Release ดูบ้าง


ลองรันดูครับ


จะสังเกตุว่าไฟล์ที่นำมาทำ ScriptResource จะเปลี่ยนไปเป็น MicrosoftAjax.js แทน ซึ่งมี comment นิดเดียวและก็โค้ดเรียงติดกันเป็นพรืด

โดยปกติเราไม่ค่อยได้ debug javascript พวกนี้อยู่แล้ว ก็สามารถกำหนด ScriptMode เป็น Release เลยก็ได้ครับ เพราะขนาดไฟล์จะเล็กกว่า ไม่กิน bandwidth ครับ

ส่วนถ้าเราเลือก ScriptMode เป็น Auto ตอนที่รันจะขึ้นอยู่กับว่า Web เราเลือก Configuration เป็น debug หรือว่า release ครับ WebServer จะไปเลือกไฟล์ js ที่ตรงกับ config ของเรามาสร้าง ScriptResource ให้