Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 109 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
109
Dung lượng
1,64 MB
Nội dung
TR NG I H C KHOA H C T NHIÊN KHOA CÔNG NGH THÔNG TIN B MÔN CÔNG NGH PH N M M NGUY N ÌNH V NH AN NGUYÊN KHA XÂY D NG CÔNG C TRÊN WEB H TR TÌM L I NG D NG C/C++ KHÓA LU N T T NGHI P C TP HCM, 2012 NHÂN CNTT TR NG I H C KHOA H C T NHIÊN KHOA CÔNG NGH THÔNG TIN B MÔN CÔNG NGH PH N M M NGUY N ÌNH V NH AN - 0812015 NGUYÊN KHA - 0812213 XÂY D NG CÔNG C TRÊN WEB H TR TÌM L I NG D NG C/C++ KHÓA LU N T T NGHI P C GIÁO VIÊN H NHÂN CNTT NG D N PGS.TS TR N AN TH KHÓA 2008 – 2012 NH N XÉT C A GIÁO VIÊN H NG D N ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… TP H Chí Minh, ngày … tháng …… n m 2012 Giáo viên h i ng d n NH N XÉT C A GIÁO VIÊN PH N BI N ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… Khóa lu n đáp ng yêu c u c a Khóa lu n c nhân CNTT TP H Chí Minh, ngày … tháng …… n m 2012 Giáo viên ph n bi n ii L IC M N Chúng em xin chân thành c m n Khoa Công ngh Thông tin, tr ng i h c Khoa h c T nhiên TP H Chí Minh t o u ki n cho chúng em th c hi n đ tài khóa lu n t t nghi p Chúng em xin g i l i c m n sâu s c đ n PGS.TS Tr n tr c ti p h an Th , ng i ng d n t n tình ch b o chúng em su t th i gian th c hi n đ tài Th y truy n đ t cho chúng em nhi u ki n th c quan tr ng c ng nh đ nh h ng đ chúng em có th hoàn thành khóa lu n Chúng em xin chân thành c m n quý Th y Cô Khoa cho chúng em nh ng ki n th c quý báu su t th i gian khóa h c, cho chúng em m t n n t ng lý thuy t v ng ch c nh ng k thu t c b n thi t y u c m n anh c bi t chúng em mu n ng Hoàng H i anh Tr n Thanh H i giúp đ t n tình trình th c hi n đ tài Chúng xin chân thành c m n b m , anh ch em t t c ng i thân gia đình t o m i u ki n t t nh t, đ ng viên khích l chúng trình h c t p nói chung trình làm khóa lu n t t nghi p nói riêng M c dù chúng em c g ng hoàn thành lu n v n ph m vi kh n ng cho phép, nh ng ch c ch n s không tránh kh i nh ng thi u sót, kính mong s c m thông t n tình ch b o c a quý Th y Cô b n Tp H Chí Minh, tháng n m 2012 Nhóm sinh viên Nguy n ình V nh An - i Nguyên Kha Khoa Công Ngh Thông Tin B môn Công Ngh Ph n M m C NG CHI TI T Tên đ tài: Xây d ng công c web h tr tìm l i ng d ng C/C++ Giáo viên h ng d n: PGS.TS Tr n an Th Th i gian th c hi n: T ngày 01/12/2011 đ n 25/06/2012 Sinh viên th c hi n: 0812015 – Nguy n ình V nh An 0812213 – Nguyên Kha Lo i đ tài: Nghiên c u hi n tr ng xây d ng mô hình Tìm hi u công ngh xây d ng ng d ng minh h a N i dung đ tài: N i dung yêu c u đ tài Nghiên c u t ng h p hi n tr ng công c h tr tìm l i môi tr phát tri n tích h p môi tr ng truy n th ng desktop môi tr ng ng web Tìm hi u công c h tr l p trình web, đ c bi t k thu t web th i gian th c; bên c nh th vi n b khung phát tri n ng d ng cho ng d ng web d ng đ n trang xu t mô hình công c h tr tìm l i ng d ng C/C++ web Xây d ng công c minh h a h tr tìm l i ng d ng C/C++ môi tr ii ng web Ph ng pháp th c hi n T n d ng tài li u thi t k c a môi tr ng phát tri n tích h p có desktop đ nghiên c u mô hình công c h tr tìm l i Phát tri n h th ng d a thành ph n mi n phí mã ngu n m Th c hi n báo cáo ti n đ h ng tu n v i giáo viên h Tài li u hóa b ng d n c th c hi n, tài li u tham kh o kh o sát làm c s cho khóa lu n K t qu khóa lu n: Xây d ng thành công mô hình công c minh h a cung c p ch c n ng h tr tìm l i ng d ng C/C++ môi tr trình th c thi, đ i chi u t ng web S n ph m cho phép u n ng ng v trí mã ngu n, kh o sát bi n c c b hàm hi n hành Báo cáo t ng h p hi n tr ng công c h tr tìm l i ng d ng C/C++, k thu t t ng tác web th i gian th c h ng phát tri n t ng lai K ho ch th c hi n: 01/12/2011 – 31/12/2011: Liên h giáo viên h ng d n, nh n tìm hi u đ tài 01/01/2012 – 31/01/2012: Th nghi m kh thi ch c n ng h tr tìm l i môi tr ng web o Tu n 1: Th nghi m kh thi k t n i th i gian th c gi a trình t máy ch u ki n kh thi cho phép công c h tr tìm l i web có th ho t đ ng; o Tu n 2, 3, 4: Xây d ng th nghi m đ n gi n cho phép th c hi n tìm l i ng d ng C/C++ iii 01/02/2012 – 31/03/2012: Xây d ng mô hình o Tu n 1, 2: Tìm hi u mô hình Eclipse; o Tu n 3, 4, 5: Tìm hi u gdb k thu t web th i gian th c; o Tu n 6, 7, 8: Xây d ng mô hình công c h tr tìm l i 01/04/2012 – 01/06/2012: Phát tri n ng d ng minh h a o Tu n 1, 2, 3: Xây d ng thành ph n c a máy ch web; o Tu n 4, 5, 6: Xây d ng thành ph n x lý trình t; o Tu n 7, 8, 9: Xây d ng thành ph n giao di n 01/06/2012 – 25/06/2012: T ng h p k t qu vi t báo cáo Xác nh n c a GVHD Ngày 20 tháng n m 2012 Nhóm sinh viên th c hi n Tr n an Th Nguy n ình V nh An iv Nguyên Kha M CL C CH NG M U 1.1 Gi i thi u chung .1 1.2 Môi tr 1.3 M c tiêu nghiên c u 1.4 it 1.5 CH ng phát tri n tích h p web ng nghiên c u .3 Ph m vi đ tài NG T NG QUAN CÁC CÔNG C H TR TÌM L I .4 2.1 L ch s công c h tr tìm l i 2.2 Công c h tr tìm l i môi tr ng phát tri n tích h p h tr ng d ng C/C++ .5 2.3 CH Công c web h tr tìm l i NG TRÌNH G L IH TR NG D NG C/C++ VÀ WEB TH I GIAN TH C 12 3.1 Trình g l i h tr 3.2 K thu t nh p xu t b t đ ng b 16 3.3 JavaScript 19 3.4 Web th i gian th c 20 3.5 Node.js – Nh p xu t b t đ ng b l p trình h 3.6 Công c h tr tìm l i c a Eclipse 25 CH NG ng d ng C/C++ 12 MÔ HÌNH CÔNG C TRÊN WEB H TR ng s ki n 23 TÌM L I NG D NG C/C++ 29 4.1 Ki n trúc h th ng 29 v 4.2 Thi t k phân h máy ch .34 4.3 Thi t k phân h trình t 40 4.4 Giao th c kênh REST .53 4.5 Giao th c kênh Socket 55 4.6 Khung nhìn 57 CH NG CÀI T VÀ TRI N KHAI H TH NG 60 5.1 T ng quan h th ng 60 5.2 Cài đ t phân h máy ch 60 5.3 Cài đ t phân h trình t .64 5.4 Tri n khai h th ng 71 CH NG K T QU VÀ H NG PHÁT TRI N 74 6.1 K t qu khóa lu n 74 6.2 H ng phát tri n .76 TÀI LI U THAM KH O 80 PH L C 82 A.1 M t s gi i pháp cho phép máy ch chuy n d li u đ n trình t ch đ ng 82 A.2 M t s s đ tu n t khác trình th c thi ng d ng 84 A.3 Các tài nguyên ph A.4 Các s ki n kênh Socket 89 A.5 Các th vi n h tr JavaScript 91 ng th c REST 88 vi h u h t thi t b , nhiên s khác bi t v cách t ng i dùng nên m t s tính n ng không th ho t đ ng đ ng mang l i tr i nghi m t t h n cho ng c nđ ng tác v i có th ho t i dùng, giao di n ng d ng c thi t k riêng cho nh ng thi t b t n d ng t i đa nh ng tính n ng: ch m, vu t, đa ch m, xoay hình, lo i c m bi n… Làm vi c c ng tác: M t m c tiêu c a vi c xây d ng môi tr phát tri n tích h p môi tr ng ng web khai thác t t h n s k t n i c a web, nâng cao kh n ng làm vi c c ng tác h th ng V i s h tr c a web th i gian th c, v n đ kh thi v giao ti p gi a trình t – máy ch web đ c gi i quy t m đ ng cho s phát tri n c a tính n ng làm vi c c ng tác Sau m t s h ng làm vi c c ng tác ph c v cho trình s d ng công c h tr tìm l i t ng lai: L u tr thông tin th c thi: Cho phép ghi nh n toàn b thông tin v m i phiên th c thi c a ng d ng, liên k t phân h b o đ m ch t l ng ph n m m, cho phép vi c phát hi n, s a ch a m khuy t c a ph n m m di n nhanh chóng h n; Chia s phiên th c thi: Các thành viên l p trình, thành viên ki m th qu n lý d án có th xem xét m t trình th c thi đ đ a nh n đ nh gi i pháp cho nh ng v n đ Xa h n n a có th cho phép nh ng thành viên làm vi c phiên th c thi, cho phép s d ng công c m t cách hi u qu h n môi tr vi c c ng tác 79 ng làm TÀI LI U THAM KH O [1] Michael Armbrust et al., Communications of the ACM, vol 53, no 4, April 2010 [2] ng Hoàng H i and Tr n Thanh H i, "Xây d ng phát tri n ng d ng h tr so n th o, biên d ch th c thi ch ng trình môi tr ng Web," 2011 [3] FOLDOC Grace Hopper [Online] http://foldoc.org/Grace+Hopper [4] Jonathan B Rosenberg, How Debuggers Work: Algorithms, Data Structures, and Architecture.: John Wiley & Sons [5] Microsoft Using an Asynchronous Controller in ASP.NET MVC [Online] http://msdn.microsoft.com/en-us/library/ee728598.aspx [6] GNU Project Non-Stop Mode [Online] http://sourceware.org/gdb/onlinedocs/gdb/Non_002dStopMode.html#Non_002dStop-Mode [7] GNU Project The GDB/MI Interface [Online] http://ftp.gnu.org/oldgnu/Manuals/gdb-5.1.1/html_node/gdb_211.html [8] Ryan Dahl node.js - JS conf [Online] http://nodejs.org/jsconf.pdf [9] Dan Kegel The C10K problem [Online] http://www.kegel.com/c10k.html [10] IBM Boost application performance using asynchronous I/O [Online] http://www.ibm.com/developerworks/linux/library/l-async/?ca=dgrlnxw02aUsingPOISIXAIOAPI [11] Ajax.org Cloud9 - GitHub [Online] https://github.com/ajaxorg/cloud9 [12] Wikipedia JavaScript [Online] http://en.wikipedia.org/wiki/JavaScript [13] Charles Severance, "Java Script: Designing a Language in 10 Days," IEEE Computer Society, vol 45, no 2, pp 7-8, 2012 [14] Douglas Crockford, JavaScript: The Good Parts.: O'Reilly, 2008 80 [15] Wikipedia Push technology [Online] http://en.wikipedia.org/wiki/Push_technology [16] Node.js About - Node.js [Online] http://nodejs.org/about/ [17] Tom Hughes-Croucher and Mike Wilson, Node: Up and Running.: O'Reilly Media, 2012 [18] Wikipedia List of Eclipse based software [Online] http://en.wikipedia.org/wiki/List_of_Eclipse-based_software [19] Darin Wright and Curtis Windatt (2008) EclipseCon [Online] http://www.eclipsecon.org/2008/sub/attachments/Debug_Platform_The_Ba sics.ppt [20] IBM Interfacing with the CDT debugger [Online] http://www.ibm.com/developerworks/opensource/library/os-eclipse-cdtdebug2/index.html [21] Roy Fielding Fielding Dissertation: CHAPTER 5: Representational State Transfer (REST) [Online] http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm 81 PH L C A.1 M t s gi i pháp cho phép máy ch chuy n d li u đ n trình t ch đ ng Sau m t s k thu t ho c chu n đ thi t l p kênh k t n i hai chi u gi a máy ch trình t web: Tên Polling Ph ng pháp th c hi n u m Nh c m Dùng k thu t ajax, chèn th script ho c n gi n Không đ th y b gi iframe th c hi n yêu c u đ n máy ch theo H tr t t c trình m t chu k nh t đ nh t Chi phí k Máy ch web tr v nh ng c p nh t m i “C ng h (n u có) l p t c m b o đ tr , ng t (lag) t n i máy ch t ng cao ng” d n đ n máy ch t i Tiêu t n b ng thông đ Longpolling Flash socket T ng t nh polling nh ng máy ch web tr t ng đ i gi k t n i (không tr v k t qu ) cho đ n c p nh t g n nh có c p nh t m i ho c h t th i gian t t chuy n đ n trình đa cho yêu c u ngày l p t c (tùy vào máy ch web) Trình t ti p t c t o k t n i long-polling đ n máy ch H tr t t c t Dùng k t n i TCP đ c cung c p b i Flash ng truy n th p, Ph c t p đ c òi h i máy ch web gi k t n i t ph i truy v n liên t c c s d li u ho c thu c đ i c p nh t m i tr th p Chi phí trao đ i th p 82 i dùng c m trình Tiêu t n b ng thông đ ng truy n Ph thu c plugin d d n đ n v n đ b om t Ít h tr n n t ng di đ ng K t n i chi u Serversend events M t thành ph n c a HTML5 cho phép trình t nh n c p nh t t máy ch web tr th p c h tr h u h t trình t m i tr (Internet Explorer) Ch h tr máy ch chuy n s ki n đ n trình t, ph i k t h p v i nh ng k thu t khác đ t o thành k t n i th i gian th c WebSocket Dùng k t n i HTTP thông th ng đ n máy tr th p ch sau giao th c đ c “nâng c p” đ s d ng k t n i TCP có đ t o thành kênh Chi phí trao đ i th p liên l c chi u K t n i chi u V n m t chu n c a HTML5, nhiên đ c tách thành chu n riêng đ t p trung phát tri n HTML5 c n m t th i gian dài đ hoàn thành vi c chu n hóa c h tr h u h t trình t m i (k c Internet Explorer 10) Có th b ch n b i t ch trung gian ng l a ho c máy Trình máy ch web ph i h tr giao th c m i 83 A.2 M t s s đ tu n t khác trình th c thi ng d ng S đ tu n t c a nh p xu t chu n t ng tác v i ng d ng: : Process : Socket : User : Server 1: Process event: Stdout 2: 3: Trigger event 4: 5: Write stdin 6: Process stdin: Write 7: Process stdin: Write 8: 84 S đ tu n t trình đ t breakpoint : BreakpointManager : Socket : DebugTarget : User : Server : BreakpointInfo 1: Add breakpoint 2: 3: : Breakpoint 4: 5: 6: 7: Debug command: Add breakpoint 8: Debug command: Add breakpoint 9: 10: 11: Debug command: Add breakpoint 12: 13: Update id 14: 15: 85 S đ tu n t trình l y thông tin bi n c u trúc : Variable : User : VariableManager : DebugTarget : Socket : Server 1: Expand variable 2: Get children 3: Debug command: Get variable children 4: Debug command: Get variable children 5: Debug command: Get variable children 6: 7: 8: 9: Debug result: Get variable children 10: 11: Register variable 12: 13: 14: 15: 86 S đ tu n t trình l y thông tin bi n c a stackframe : Stackfram e : DebugTarget : VariableManager : Socket : Server : Us er 1: Select fram e 2: Get fram e variables 3: Debug com m and: Get variables 4: Debug com m and: Get variables 5: Debug com m and: Get variables 6: 7: 8: Debug res ult: Get variables 9: 10: Debug com m and: Regis ter variables 11: Debug com m and: Regis ter variables 12: Debug com m and: Regis ter variables 13: 14: 15: 16: Debug res ult: Regis ter variables 17: : Variable 18: 19: 20: Trigger event 21: 87 A.3 Các tài nguyên ph ng th c REST i v i tài nguyên danh sách ph GET: L y danh sách đ i t POST: T o m t đ i t i v i tài nguyên đ i t ng th c HTTP đ c s d ng: ng th c HTTP đ c s d ng: ng ng m i ng ph GET: L y thông tin chi ti t c a đ i t PUT: C p nh t thông tin đ i t DELETE: Xóa đ i t ng ng ng GET: L y thông tin c a phiên làm vi c nh d ng c a thông tin trao đ i đ c s d ng JSON đ đ n gi n hóa trình x lý thông tin c ng nh tùy bi n m r ng d dàng c u trúc thông tin Tên tài nguyên URI Ng i dùng D án Ph ng th c /api/users GET, POST /api/{username} GET, PUT /api/{username}/projects/ GET, POST /api/{username}/{project} GET, PUT, DELETE T p tin /api/{username}/{project}/files/{path} GET, POST, PUT, DELETE Breakpoint /api/{username}/{project}/breakpoints/ GET, POST /api/{username}/{project}/breakpoints/{id} GET, PUT, DELETE Bi u th c /api/{username}/{project}/expressions/ GET, POST /api/{username}/{project}/expressions/{id} GET, PUT, DELETE 88 A.4 Các s ki n kênh Socket Tên s ki n Phát sinh s ki n Nh n s ki n connection Trình t Máy ch Yêu c u k t n i Ki m tra quy n, t o phiên làm vi c Trình t Máy ch launch-create Lo i phiên th c thi: có ho c trình T o phiên th c thi tr v k t qu N u thành g l i công tr v thông tin c a phiên th c thi (mã phiên th c thi {id}) launch-{id}-run Trình t Máy ch B t đ u phiên th c thi Trình g l i b t đ u phiên th c thi K t qu : Hàm g i ng launch-{id}-terminate debug-{id}-suspend debug-{id}-request process-{id}-stdin c Trình t Máy ch Ng t phiên th c thi Trình g l i b t đ u phiên th c thi Trình t Máy ch T m d ng phiên th c thi Trình g l i t m d ng phiên th c thi Trình t Máy ch Chuy n l nh Trình g l i th c thi l nh Trình t Máy ch 89 Nh p d li u vào nh p chu n c a ch ng Nh p d li u vào nh p chu n c a ch ng trình trình debug-{id}-async-exec Máy ch Trình t debug-{id}-async-notify S ki n trình g l i phát sinh Phát sinh s ki n Debug Target, kích ho t x lý process-{id}-stdout process-{id}-exit Máy ch Trình t D li u xu t qua xu t chu n Phát sinh s ki n đ i t Máy ch Trình t Ch C p nh t tr ng thái, phát sinh s ki n, kích ho t x ng trình k t thúc ng Process lý disconnect Trình t K t n i m ng ng t ho c ng Máy ch i dùng đóng Ng t k t n i, xóa phiên làm vi c th trình t 90 A.5 Các th vi n h tr JavaScript Ngoài th vi n chu n Node.js ho c trình t cung c p, th vi n m r ng cho phép xây d ng ng d ng m t cách nhanh chóng A.5.1 Express Node.js cung c p giao di n l p trình m c th p, cho phép l p trình viên xây d ng máy ch web d a vào mô-đun chu n Các yêu c u HTTP đ qua m t hàm g i ng đ c có s ki n “request” (t c g i t trình t) Express cung c p cho ng c x lý thông ng ng v i yêu c u HTTP i dùng l p đ x lý yêu c u HTTP g i middleware, thao tác x lý yêu c u nh : đ c cookie (m t d ng l u tr phía trình t), phân tích đ nh d ng n i dung yêu c u (d ng POST ho c JSON), qu n lý phiên làm vi c… t t c đ u đ c tách thành nh ng middleware – có th g i l p trung gian hay t ng x lý, đ i v i m i URI l p trình viên xác đ nh middleware s p x p th t middleware đ x lý yêu c u t ng i dùng Express thích h p cho đ xây d ng máy ch cung c p giao ti p l p trình (API) đ i t ng tài nguyên ki n trúc REST Vi c x lý yêu c u d a middleware x lý theo URI giúp tái s d ng nh ng middleware x lý lo i URI khác có liên quan đ n m t lo i tài nguyên Website: http://expressjs.com/ A.5.2 Socket.io Giao th c WebSocket cho phép thi t l p kênh k t n i hai chi u gi a máy ch trình t nhiên WebSocket ch đ c h tr m t s trình t phiên b n m i nh t có th b ch n b i máy ch trung gian ho c t ng l a Socket.io cung c p m t giao th c l p trình nh t, h tr nhi u k thu t t o kênh k t n i hai chi u WebSocket t o thành l p tr u t ng cho phép ng d ng h tr h u h t lo i trình t khác Ngoài Socket.io m r ng giao di n l p trình c a WebSocket t EventEmitter cho phép l p trình h ng t v i ng s ki n kênh k t n i Socket.io 91 Node.js t o s khác bi t so v i gi i pháp n n t ng khác đáp ng đ c v n đ hi u n ng c a h th ng Website: http://socket.io/ A.5.3 Sequelize đ it Sequelize cung c p m t l p tr u t ng ánh x gi a c s d li u quan h ng (ORM) M t khác l p tr u t ng cho phép ng d ng làm vi c nhi u h qu n tr c s d li u khác mà không c n ph i thay đ i mã ngu n Sequelize đ nh ngh a lo i đ i t ng m i quan h gi a đ i t phép chuy n đ nh ngh a thành khai báo l B ng vi c thao tác đ i t ng cho c đ cho c s d li u quan h ng vi c phát tri n ng d ng tr nên d dàng h n Sequelize cung c p nh ng ch c n ng t ng t nh ActiveRecord Ruby on Rails Tuy nhiên c ng nh nh ng ORM khác, Sequelize ch phù h p cho vi c phát tri n nhanh không tr ng đ n hi u n ng c ng nh t n d ng ch c n ng khác c a c s d li u Website: http://sequelizejs.com/ A.5.4 CoffeeScript CoffeeScript có th xem m t phiên b n t a Python, Ruby hay Haskell c a JavaScript CoffeeScript s d ng ký t xu ng dòng kho ng tr ng đ đánh d u dòng l nh kh i l nh S thay đ i giúp gi m s dòng th a mã ngu n, d đ c ch nh s a Bên c nh CoffeeScript kh c ph c nh c m c a JavaScript: Cung c p cú pháp khai báo l p đ i t ng t ng minh thay cho hàm kh i t o (constructor) khuôn m u (prototype); Thay th vi c khai báo bi n d g p l i khai báo toàn c c b ng cách khai báo t đ ng; Cú pháp đ i t ng s d ng dòng canh dòng; Kh c ph c cú pháp so sánh “y u”; Thay th hàm c u trúc u n b ng bi u th c; 92 Cú pháp thao tác m ng đ n gi n; Và nhi u c i ti n khác Mã ngu n CoffeeScript đ c đ c chuy n-d ch (transcompile) thành mã ngu n JavaScript th c thi CoffeeScript ch m t th hi n khác c a JavaScript cho phép vi c l p trình JavaScript d dàng h n M t m thú v trình chuy nd ch CoffeeScript c ng đ c vi t b ng CoffeeScript (self-hosting) Website: http://coffeescript.org/ A.5.5 RequireJS V i s phát tri n nhanh chóng c a ng d ng web, l m t ng d ng ngày nhi u song song v i s l nhi u Nhu c u tách mã ngu n JavaScript đ h u h n RequireJS đ ng mã JavaScript ng mô-đun ngày c s d ng phía trình t hi n c s d ng đ đ nh ngh a mô-đun JavaScript V i s phân chia mô-đun thành t p tin riêng bi t trình phát tri n qu n lý mã ngu n d dàng dàng h n Các mô-đun đ c t i “đ ng” có nh ng s thay đ i mã ngu n, không c n thi t ph i s a đ i nh ng mã HTML đ thêm/xóa th script RequireJS cung c p c ch t i nh ng mô-đun c n thi t theo nh c u c ng nh xây d ng m i quan h ph thu c gi a nh ng mô-đun v i đ c t AMD Ngoài RequireJS cho phép t i u mã ngu n b ng cách t ng h p t t c t p tin mã ngu n thành m t t p tin nh t gi m s l ng t p tin c n t i xu ng, t i u hóa nén mã ngu n: rút ng n tên bi n, lo i b kho ng tr ng… Website: http://requirejs.org/ 93