CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.3.2.5. Cấu trúc dữ liệu
Một cấu trúc dữ liệu tiêu điểm là mảng (Array), mảng trong JavaScript là một bảng liên kết chỉ mục đến giá trị. Trong JavaScript, tất cả các đối tƣợng đều có thể liên kết chỉ mục đến giá trị, nhƣng mảng là một đối tƣợng đặc biệt có thêm nhiều tính năng xử lý chỉ mục và dữ liệu đặc biệt (ví dụ: push, join, v.v.).
Mảng trong JavaScript có thuộc tính length. Thuộc tính length của JavaScript luôn luôn lớn hơn số chỉ mục lớn nhất trong mảng một đơn vị. Trong phần lớn ngôn ngữ lập trình, những thuộc tính có tính năng như length thường là thuộc tính chỉ đọc, tuy nhiên, với JavaScript, lập trình viên có thể thay đổi thuộc tính length.Bằng cách thay đổi thuộc tính length, lập trình viên có thể làm mảng lớn hơn hoặc nhỏ hơn (và xóa đi những chỉ mục lớn hơn hoặc bằng thuộc tính length mới).
Cách nhúng JavaScript vào trang HTML 1.3.3.
Có 3 cách để nhúng JavaScript vào trang HTML.
SVTH: Trần Thị Hồng Ánh – Lớp 09CNTT2 16 Cách 1: Nhúng trực tiếp trong trang HTML hoặc khai báo trong thành phần
<Head></Head>-Heading Embed
<html>
<head>
….
</head>
<body >
<script language="javascript" type=
"text/javascript">
document.write("Xin chào!!!");
</script>
</body>
</html>
Cách 2: Gọi một tệp từ bên ngoài
Giả sử bạn có một tập tin JavaScript dài và phức tạp và tệp này cần đặt trong tất cả các trang HTML.Nếu như trang nào bạn cũng phải ch n đoạn mã như phương pháp 1 thì mất nhiều thời gian và phải kiểm tra đoạn mã. Để giảm kích thước của trang web và đỡ tốn thời gian, JavaScript cho chúng ta 1 phương pháp ch n đoạn mã JavaScript bằng cách gọi từ ngoài vào. Muốn gọi tập tin JavaScript, trước hết tập tin đó phải có phần mở rộng là .js. Và trong tập tin này không đƣợc chứa thẻ mở và đóng
<script></script>.
Cách 3: Nhúng trong câu
Ngoài hai phương pháp trên dành cho các đoạn mã JavaScript dài và phức tạp, JavaScript cung cấp 1 phương pháp đơn giản dành cho việc xử lý sự kiện hoặc gọi các đối tƣợng nhƣ JavaScript: window.location...
1.4. NODEJS
NodeJs là gì?
1.4.1.
Javascript trước đây chỉ chạy được trên trình duyệt web.Nhưng gần đây nó được dùng ở phía server.Có những môi trường Javascript ở phía server như là Jaxer và
SVTH: Trần Thị Hồng Ánh – Lớp 09CNTT2 17 Narwhal, tuy nhiên Nodejs có một chút khác biệt so với những cái trên. Bởi vì nó dựa trên sự kiện hơn là dựa theo luồng (thread). Các máy chủ Web như Apache thường xử lý PHP và các script CGI (Common Gateway Interface) khác dựa theo luồng bởi chúng sinh ra một hệ thống luồng cho mỗi request đến. Trong khi cách đó là ổn cho rất nhiều ứng dụng thì các mô hình dựa theo 3luồng không thể mở rộng một cách có hiệu quả với nhiều kết nối tồn tại lâu. Ví dụ nhƣ bạn muốn dùng các dịch vụ thời gian thực nhƣ Friendfeed hay Google Wave.
Nodejs, sử dụng một sự kiện lặp thay cho các luồng, và nó có thể mở rộng lên hàng triệu kết nối một lúc. Điều này rất có lợi vì thực tế các máy chủ sử dụng phần lớn thời gian vào việc đợi các xử lý vào ra (ví dụ nhƣ đọc một file từ ổ cứng, truy vấn đến một dịch vụ web bên ngoài hoặc là đợi file đƣợc tải lên hoàn tất) bởi vì các xử lý đó chậm hơn rất nhiều so với xử lý bộ nhớ. Với kiến trúc hướng sự kiện thì lượng bộ nhớ dùng ít hơn, lưu lượng tăng cao và mô hình lập trình thì đơn giản hơn.
Mỗi một xử lý vào ra trong Nodejs là không đồng bộ, nghĩa là máy chủ có thể tiếp tục xử lý các request đến trong khi các xử lý vào ra đang diễn ra.Javascript mà một ngôn ngữ phù hợp cho việc lập trình hướng sự kiện bởi vì nó có các hàm không đồng bộ và sự bao đống cái mà tạo ra một hàm callbacks đảm bảo.Mô hình hướng sự kiện khiến cho Nodejs chạy rất nhanh và có thể triển khai và mở rộng cho các ứng dụng thời gian thực một cách dễ dàng. Một lợi ích lớn lao của NodeJS đó là nó đƣợc viết bằng javascript. Nó cũng hỗ trợ các hệ NoSQL dùng javascript để truy vấn.Từ đây ta chỉ cần học một ngôn ngữ là javascript để thực thi từ phía trình duyệt, phía webserver và cả cho database server.
Khác nhau giữa Blocking và Non-Blocking 1.4.2.
1.4.2.1. Blocking
Theo cách truyền thống (thread-based) thì hãy tưởng tượng một ngân hàng đang áp dụng mô hình phục vụ: Phục vụ hoàn toàn một yêu cầu rồi mới chuyển sang yêu cầu khác. Trong đó nhân viên trong ngân hàng.Tương ứng mỗi nhân viên là một thread.Và mỗi một yêu cầu tương ứng là 1 request đến server.Bạn yêu cầu là muốn gửi tiền vào ngân hàng. Bạn sẽ phải điền 1 số form như tên người gửi, số tài khoản của họ, số tiền cần gửi. v.v... Trong thời gian bạn điền thông tin cần rút tiền vào tờ khai.Cô nhân viên phải chờ bạn.Bạn đã "khóa" cô ấy không cho cô ấy phục vụ các khách hàng khác vì lúc đó cô ấy đang rảnh vì phải đợi bạn.Hành động đợi ở đây phần lớn là hành động vào/ra, truy xuất file, hoặc đợi kết quả truy vấn SQL trong Webservice.Đó là cơ chế Blocking.