Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---
- title : "Express-less" cơ bản trong Node Server - HTTP calss
- author : DucPV
- ---
- [Link Bài viết gốc](https://www.codementor.io/sagarmunjal/basic-express-less-node-server-http-calls-nh07esgsf)
- >Đây là bài đăng khá đầy đủ về JavaScript, dành cho những người gặp phải vấn đề về font-end. Bài viết dành cho những bạn mới bắt đầu code hoặc mới chỉ code phần font-end. Những bạn có kiến thức cơ bản về Javascript có thể lướt qua phần hướng dẫn và đi thẳng vào các phần dưới đây:
- ##### Bạn cần thiết lập những gì
- ##### Cài đặt Node
- ##### Package.Json
- ##### https Server
- ##### Tạo một server nhỏ của riêng mình
- ##### Truy vẫn URL
- ##### Cài đặt dependency mới
- ##### Xây dựng một ứng dụng
- ## Bạn cần thiết lập những gì
- -Bạn sẽ chạy trên chính máy của bạn và cần phải cần thiết lập
- *Terminal / Command prompt
- *Code Editer: Phổ biến : Visual Studio Code, Subline Text ...
- ## Cài đặt Node
- -Chúng ta tải về Node phiển bản mới nhất theo hệ điều hành của máy ( window, Mac, Linux) theo đường link dưới đây
- [Node](https://nodejs.org/en/)
- - Sau đó để kiểm tra xem bạn đã cài đặt thành công hay chưa hoặc kiểm tra phiên bản của Node bằng cách chạy hai câu lệnh sau trên _Terminal_ hoặc _Command prompt_
- ```
- node -v
- npm -v
- ```
- Kết quả trả về sẽ như sau:
- ![](https://process.filestackapi.com/cache=expiry:max/IWXxh5UTVW86rYEjiCpw)
- Node đi cùng các lệnh cấu hình sau:
- __npm init__ : Khởi tạo ứng dụng Node.js và tạo file __package.json__
- __npm install <package>.__ : Cài đặt gói Node.js
- __npm publish__ : Lưu và tải lên package mà bạn muốn chia sẻ lên cộng đông _npm package_
- __npm start__ : Chạy ứng dụng NodeJs
- __npm stop__ : Dừng ứng dụng
- ## package.json
- __package.json__ là file chứa các cấu hình cơ bản. Chúng ta có thể tạo ra bằng cách dùng lệnh __npm init__ hoặc tạo file __package.json__ bằng tay.
- Bước tiếp theo chúng ta sẽ tạo file package.json riêng cho mình. Hướng dẫn sau sẽ tải __Node__ như một project dependency
- -Bắt đầu các hướng dẫn dưới đây:
- * Đầu tiên bạn phải chắc chắn rằng bạn đang ở đường dẫn chứa project của mình và chạy lệnh dưới đây bằng terminal hoặc command prompt
- * Tạo một file đặt tên là : __package.json__
- * Copy tất cả đoạn code dưới đây vào file bạn vừa tạo
- ```
- {
- "name": "simple-node-application",
- "version": "1.0.0",
- "description": "A small node application",
- "main": "index.js",
- "scripts": {
- "start": "node index.js"
- },
- "dependencies": {
- "node": "10.10.0"
- },
- "keywords": []
- }
- ```
- * Chạy lệnh __npm install__ trong terminal của bạn
- ![](https://process.filestackapi.com/cache=expiry:max/ubgDSUgNQ6WFAhunjjEv)
- ## https server
- - Phần này bao gồm nhưng hàm cơ bản của __http module__ một thư viện Node.js được sử dụng để xử lý yêu cầu trên internet. Qua một bài bước cơ bản, bạn sẽ chuyển các dòng lện Javascript thành một máy chủ mà bạn giao tiếp trên trình duyệt của mình
- - Hai hàm cơ bản nhất __http methods__ là: __POST__ và __GET__
- __GET__ : Phương thức này dùng để yêu cầu thông tin từ máy chủ. Thông thường, máy chủ sẽ trả lời lại với nội dung mà người dùng có thể nhìn thấy trên trang của mình.
- __POST_ : Phương thức này để gửi thông tin lên server. Server có thể trả về một trang HTML hoặc dẫn đến một trang khác sau khi sử lý dữ liệu của bạn
- ## Tạo một server nhỏ của riêng mình
- -Thấy tất cả các thay đổi trước tại đây, Các hướng dẫn dưới đây chạy một server
- * Tạo một file index.js sẽ chứa các code
- * copy đoạn code dưới đây vào index.js
- ```
- const http = require('http');
- const app = http.createServer((request,response) => {
- console.log('server is running...')
- })
- app.listen(3000);
- ```
- * Chạy lệnh __npm start__
- * Mở trình duyệt và nhập vào đường dẫn __localhost:3000__
- Bạn sẽ thấy kết quả là __server is running...__ có nghĩa là file index.js của bạn đã chạy thành công
- -Cùng hiểu xem những gì chúng ta đã làm
- + Import http . Biến __app__ là đối tượng tham chiếu được trả về bởi hàm __createServer()__
- + Chúng ta xoay quanh hai tham số _req_ và _res_ được truyền vào trong __createServer()__ . Đây là hai đối số được gửi đến đối tượng server
- + Cuối cùng, chúng ta sử dụng phương thức __listen__ để chạy server
- + listen(/* port number */) là port mà server sẽ chạy trên đó
- + Trình duyệt sẽ truy cập qua đường dẫn: localhost:3000
- ## url query
- Thay đổi file __index.js__ :
- ```
- const http = require('http');
- const url = require('url');
- const app = http.createServer((request,response) => {
- var querystring
- querystring = url.parse(request.url,true).query;
- if (querystring) {
- response.writeHead(200, {"Content-Type": "text/html"});
- console.log('the index.js has loaded')
- response.write(`<h1>The parsed value from the url is ${querystring.value}</h1>`);
- response.end();
- }
- else {
- response.write(`<h1>No values were passed</h1>`);
- response.end();
- }
- })
- app.listen(3000);
- ```
- Chạy lại chương trình, nhập lại đường dẫn : _http://localhost:3000/?value=xenobia_
- Bạn sẽ thấy giá trị xenobia được in ra
- Cùng hiểu những gì đã xay ra :)
- + Ở ví dụ trước chúng ta import một http mới để phân tích URL
- + Import module url và lưu nó bằng biến url
- + Bên trong hàm của biến app chúng ta dùng phương thức __url.parse__ : dùng để phân tích và lưu trữ đối tượng
- + Giá trị trả về từ __url.parse(request.url,true).query__ được lưu trong biến querystring.
- + Để truy cập vào biến đó ta sử dụng : __querystring.value__
- ## Tải thêm module mới
- Thay đổi file index.js và tạo file module.js
- ```
- /* index.js */
- const http = require('http');
- const url = require('url');
- const newModule = require('./module.js');
- const app = http.createServer((request,response) => {
- var querystring
- querystring = url.parse(request.url,true).query;
- if (querystring.value) {
- response.writeHead(200, {"Content-Type": "text/html"});
- console.log('the index.js has loaded')
- response.write(`<h1>The parsed value from the url is ${querystring.value}</h1>`);
- response.end();
- }
- else {
- response.write(`<h1>No values were passed check your terminal/command prompt for log message.</h1>`);
- newModule.addlog();
- response.end();
- }
- })
- app.listen(3000);
- ```
- ```
- /* module.js */
- exports.addlog = () => {
- console.log(` module.js has loaded`)
- }
- ```
- Chạy lại ứng dụng bạn sẽ thấy file module.js đã được load
- ## Cài đặt dependency mới
- Dependencies là Javascript module mà bạn có thể tải về project của bạn __npm install --save node__. Sau đó, bạn có thể import vào project của bạn với cúa pháp :
- ```
- const moduleName = require('package name');
- ```
- Trong quá trình phát triển với NodeJs, bạn sẽ nghe thấy module và package, dưới đây là những điều mà bạn cần biết
- + Modules là file riêng biệt chứa các đoạn mã liên quan đến một khái niệm, chức năng hay thư viện
- + Package có thể chứa 1 hoặc nhiều modules. Package nhóm các file có công cụ liên quan đến nhau
- NODE : "Dependencies" là NodeJs module được dùng bởi một ứng dụng hoặc các module khác
- Nếu bạn để ý rằng, trong file package.json sẽ chứa tất cả các dependency
- Minh họa :
- Cài đặt một npm module mới tên là : __cities__
- ```
- npm i --save "cities"
- ```
- sau đó vào file package.json:
- ```
- {
- "name": "simple-node-application",
- "version": "1.0.0",
- "description": "A small node application",
- "main": "index.js",
- "scripts": {
- "start": "node index.js"
- },
- "dependencies": {
- "cities": "^1.1.2",
- "node": "10.10.0"
- },
- "keywords": []
- }
- ```
- ## Xây dựng một ứng dụng
- Ứng dụng này sẽ hiện thị tên thành phố dựa trên zip code
- Thay đổi file __module.js__
- ```
- /* module.js */
- const cities = require('cities');
- exports.addlog = () => {
- console.log(` module.js has loaded`)
- var myCity = cities.zip_lookup(10016);
- console.log(myCity);
- }
- ```
- Chạy lại chương trình bạn sẽ thấy thông tin về zip code là 10016 trên terminal :
- ```
- {
- zipcode: ’10016’,
- state_abbr: ’NY’,
- latitude: ’40.746180’,
- longitude: ’-73.97759’,
- city: ’New York’,
- state: ’New York’
- }
- ```
- Chúng ta sẽ tìm thông tin các thành phố khác dựa trên zip code từ URL
- Tạo một hàm __findcityname(zip)__ có tham số là zip => sẽ trả về thành phố có zip code = zip
- Thay đổi file module.js
- ```
- const cities = require('cities');
- exports.findcityname = (zip) => {
- return cities.zip_lookup(zip).city;
- }
- exports.addlog = () => {
- console.log(` module.js has loaded`)
- }
- ```
- Sau đó thay đổi file index.js
- ```
- const http = require('http');
- const url = require('url');
- const newModule = require('./module.js');
- const app = http.createServer((request,response) => {
- var querystring,zip;
- querystring = url.parse(request.url,true).query;
- zip = querystring.value
- if (zip) {
- response.writeHead(200, {"Content-Type": "text/html"});
- console.log('the index.js has loaded')
- response.write(`<h1>${querystring.value} is the zip code for ${newModule.findcityname(zip)} <br> </h1>`);
- response.end();
- }
- else {
- response.write(`<h1>No values were passed check your terminal/command prompt for log message.</h1>`);
- newModule.addlog();
- response.end();
- }
- })
- app.listen(3000);
- ```
- Chạy lại chương trình và xem kết quả:
- ![](https://process.filestackapi.com/cache=expiry:max/0a9fG30ZQHXX5yA12oQw)
Add Comment
Please, Sign In to add comment