Cắt nodejs

Mình là dân lập trình và đầu tư cũng là mảng mình đang theo đuổi. Bài viết này với mục đích tổng hợp lại kiến ​​thức và kinh nghiệm của mình liên quan tới NodeJs. Hướng dẫn cài đặt, thư viện hay sử dụng, xử lý lỗi và kinh nghiệm thực tế. Nó giống như bản lưu lại để thuận tiện cho quá trình tra cứu tham khảo về sau

Cắt nodejs
Lập trình NodeJs. Hướng dẫn cài đặt, thư viện hay sử dụng, xử lý lỗi và kinh nghiệm thực tế

NodeJS là một nền tảng được xây dựng trên V8 JavaScript Engine – trình thông dịch thực thi mã JavaScript, giúp xây dựng các ứng dụng web một cách đơn giản và dễ dàng mở rộng. NodeJS được phát triển bởi Ryan Dahl vào năm 2009 và có thể chạy trên nhiều hệ điều hành khác nhau. Hệ điều hành X, Microsoft Windows, Linux

Theo khảo sát của Stack Overflow về các khung, nền tảng được sử dụng nhiều nhất trong năm 2019, NodeJS đã giành được vị trí số 1 với số lượng người dùng lên đến gần 50%. Điều đó cho thấy nếu việc học NodeJS, cơ hội việc làm của bạn sẽ vô cùng mở rộng

Nếu bạn muốn đi sâu cài đặt NodeJs, bạn có thể tham khảo các cuốn sách sau

  • NodeJ trong thực tế
  • NodeJs – Express In Action – Viết, xây dựng và thử nghiệm Node. ứng dụng js
  • Nút. js Hướng dẫn dành cho nhà phát triển ứng dụng

lục mục

  • Hướng dẫn cài đặt và sử dụng
    • Cài đặt NodeJs
      • Trên Windows
      • Trên Ubuntu
    • Cài đặt NPM
    • Cài đặt PM2
  • Hướng dẫn sử dụng
    • Sử dụng NVM
    • Sử dụng NodeJs
    • Use npm
    • Use PM2
  • Các thư viện hay được sử dụng trên NodeJs
  • NodeJ đầy ngăn xếp
  • Frontend Framework
  • Các công cụ hỗ trợ lập trình NodeJs
    • ESLint

Hướng dẫn cài đặt và sử dụng

Ngoài việc hướng dẫn cài đặt NodeJs, mình cũng hướng dẫn cài đặt NPM (Công cụ quản lý gói thư viện sử dụng trong NodeJs) và PM2 (Một tiện ích quản lý các quy trình của NodeJs)

Cài đặt NodeJs

Trên Windows

Có nhiều cách cài đặt, ở đây mình giới thiệu 2 cách thông dụng nhất

* Cài đặt thông qua NVM .

NVM (Trình quản lý phiên bản nút) là tiện ích hữu ích giúp quản lý nhiều phiên bản NodeJs trên 1 máy. Rất thuận lợi cho các máy của Nhà phát triển vì trong quá trình lập trình, họ phải làm việc với nhiều dự án khác nhau, mỗi dự án khác nhau có thể sử dụng các phiên bản NodeJ khác nhau. Với các DEV mình khuyến mãi nên sử dụng theo cách này. Chi tiết xem tại. NVM là gì? . js)

Nói chung bạn chỉ việc vào địa chỉ https. //github. com/coreybutler/nvm-windows/releases, tải bản mới nhất về cài đặt

* Cài đặt trực tiếp.

Nếu ai không có nhu cầu sử dụng nhiều phiên bản, thì có thể sử dụng cách này. Tải trực tiếp phiên bản mới nhất trên Windows về để cài đặt. https. //nodejs. org/vi/tải xuống/

Trên Ubuntu

Có nhiều cách cài đặt, ở đây mình giới thiệu 2 cách thông dụng nhất

* Cài đặt thông qua NVM .

NVM giúp quản lý nhiều phiên bản NodeJ trên máy nên khuyến khích DEV sử dụng theo cách này. Chi tiết xem. Hướng dẫn cài đặt nvm trên Ubuntu

Đầu tiên bạn tải NVM bằng lệnh

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

Sau khi chạy lệnh sau, đoạn cuối có hướng dẫn yêu cầu chạy nhiều lệnh để cấu hình (2 đến ba phiên bản lệnh). You running this command is done nhé. Sau đó kiểm tra xem cài đặt okie chưa bằng lệnh

 nvm --version 

Lệnh sử dụng NVM giống như trên Windows (Tham khảo phần trên)

Ngoài NVM, bạn có thể tham khảo thêm tiện ích tương tự. NútNv

* Cài đặt trực tiếp .

Thường sử dụng để cài đặt trên máy chủ vì thường mỗi máy chủ chạy cho 1 dự án bất kỳ, gần như không có yêu cầu cài đặt nhiều phiên bản. Mặt khác NVM quản lý các phiên bản NodeJs cho từng người dùng, chứ không sử dụng chung cho người dùng được. Với máy chủ, điều này không thuận tiện vì thông thường người dùng root sẽ cài đặt tất cả các phần mềm cần thiết cho người dùng khác

Lệnh cài đặt như bên dưới. You can change the version option by request

Ví dụ cho phiên bản 8

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Ví dụ cho phiên bản 14

curl -sL  https://deb.nodesource.com/setup_14.x  | sudo -E bash -
sudo apt-get install -y nodejs

Sau khi cài đặt xong, hãy sử dụng lệnh sau để kiểm tra

node -v

Ghi chú. Trong một số trường hợp (phiên bản cũ), sau khi cài đặt chỉ có tệp nodejs mà không có nút tệp, bạn sử dụng lệnh sau để tạo

sudo ln -s /usr/bin/nodejs /usr/bin/node

Cài đặt NPM

NPM đã được tích hợp sẵn khi cài đặt NodeJs nên bạn không cần phải cài đặt mà bạn chỉ cần biết cách sử dụng thôi. You can check by command

npm -v

Sự việc sử dụng các lệnh NPM để cài đặt các gói. Tham khảo. Giới thiệu về trình quản lý gói npm

# Cài đặt thư viện
npm install 

# Cài đặt thư viện ở chế độ 

# Cài đặt thư viện ở phiên bản xác định
npm install @
 
npm remove 
npm 

Cài đặt PM2

PM2 là phần mềm quản lý các ứng dụng NodeJS (Nâng cao, trình quản lý quy trình sản xuất cho Node. js). Phần mềm này có nhiều tính năng, còn cho phép giám sát từ xa, nhưng yêu cầu phải trả tiền. Nói chung, chúng ta chỉ cần sử dụng tính năng miễn phí của nó là đủ rồi

Yêu cầu bạn phải cài đặt NodeJS trước. Sau đó gõ lệnh sau để cài đặt

________số 8

Sau khi hoàn thành việc kiểm tra phiên bản

pm2 -v

Hướng dẫn sử dụng

Sử dụng NVM

Sau khi cài đặt, bạn sử dụng lệnh của NVM để quản lý các phiên bản NodeJs. Các lệnh này giống nhau trên mọi hệ điều hành

Way or used as after

 nvm --version 
0

Sử dụng NodeJs

Để bắt đầu một ứng dụng trên NodeJs, ta thường sử dụng lệnh sau

 nvm --version 
1

Đây là cách DEV hay dùng cho nhanh, nhưng không tiện mỗi khi sửa mã liên quan đến ứng dụng, bạn phải chạy lại lệnh này

Trên NodeJs có thư viện gật đầu, bạn chỉ cần chạy lệnh sau

 nvm --version 
2

Mỗi khi mã nguồn của tệp bất kỳ trong thư mục hiện tại hoặc các thư mục con thay đổi, gật đầu sẽ tự động chạy lại ứng dụng. Chính bởi sự tiện lợi này mà thư viện gật đầu được sử dụng rất nhiều

Use npm

Các bạn đã sử dụng NodeJs chắc chắn đều biết cách thực hiện lệnh này. Mình liệt kê lại các lệnh sử dụng, nhiều khi không dùng lâu có thể bị quên

 nvm --version 
3

Chi tiết bạn xem thêm tại. Hướng dẫn cho người mới bắt đầu về npm, Trình quản lý gói nút

Use PM2

Khi chạy ứng dụng NodeJs trên server hoặc VPS, thường sử dụng PM2 để tiện cho việc quản lý các ứng dụng Node. Dưới đây là danh sách các lệnh hoặc sử dụng trên PM2

 nvm --version 
4

Đặc biệt, PM2 còn cho phép bắt đầu nhiều quy trình với nhiều tham số cấu hình hơn. PM2 không chỉ quản lý ứng dụng nodejs mà có thể quản lý ứng dụng C/C++ (Qua Shell Script), shell script,…

Ví dụ bạn tạo tệp ứng dụng. cấu hình. js với nội dung như sau

 nvm --version 
5

Khi đó bạn chỉ cần đánh lệnh sau

 nvm --version 
6

Nói qua một tham số cấu hình cho các quá trình

  • Tên. Set name for process on PM2
  • cwd. Trong trường hợp bạn cần chuyển đến bất kỳ thư mục nào trước khi bắt đầu quá trình, mới cần khai báo tham số này
  • script. Lệnh thực thi
  • tranh luận. Tham số truyền vào
  • max_memory_restart. Cannot set up. Khi được thiết lập, nếu RAM của quá trình vượt quá giá trị này, PM2 sẽ tự động khởi động lại quá trình này
  • exec_intepreter. Với ứng dụng NodeJs thì ko cần tham số này. Nhưng để chạy Shell Script sau đó thì phải sử dụng với giá trị bash
  • exec_mode. Với ứng dụng NodeJs thì không cần tham số này. Nhưng để chạy Shell Script sau đó thì phải sử dụng với giá trị fork_mode
  • Khởi động lại tự động. Nếu tham số này được thiết lập đúng, bất cứ khi nào ứng dụng chết (Do crash, exception, ai đó kill,…), PM2 sẽ tự động khởi động lại
  • khởi động lại_delay. Ứng dụng sẽ đợi thêm một khoảng thời gian trước khi khởi động lại
  • env. Setting setting add field variable
  • instance_var. Xem thêm tại http. // chiều2. keymetrics. io/tài liệu/cách sử dụng/môi trường/

Các thư viện hay được sử dụng trên NodeJs

Nếu bạn mới bắt đầu NodeJs, bạn nên tham khảo trang Node. js Hướng dẫn. Nó giúp bạn sử dụng NodeJs cơ bản

  • Cách tạo và sử dụng mô-đun
  • Biết cách sử dụng mô-đun cơ bản. Mô-đun HTTP, Hệ thống tệp, Mô-đun URL, NPM, Sự kiện, Email, Tệp tải lên
  • Biết cách kết nối với Cơ sở dữ liệu thông tin ứng dụng như MySQL và MongoDB
  • Sử dụng NodeJs làm nhiều thứ với Raspberry Pi

Thư viện trên NodeJs rất là phong phú, hầu như bạn cần gì cũng có

  • Nhóm thư viện cơ bản
    • windows-build-tools. Thư viện cần cài đặt trước khi bạn chạy NodeJs trên Windows. Do phải xây dựng nhiều thư viện trên NodeJs nên cần cài đặt bộ công cụ này (Nớ cài đặt ở quyền Administrator).
      npm install –global windows-build-tools
    • dấu gạch dưới. Một thư viện chứa tất cả các hàm cơ bản hoặc được sử dụng nhiều nhất
    • con số lớn. js. Thao tác thư viện với số lượng lớn, hoặc sử dụng khi làm việc với Hợp đồng thông minh. Cách sử dụng tham khảo. https. // ethereumdev. io/cách xử lý số lớn trong javascript/
    • bỏ trống. Là thư viện có nhiệm vụ chỉ lấy giá trị tồn tại và đồng thời có giá trị. Nó giúp bạn giảm thiểu việc phải kiểm tra quá nhiều khi thao tác dữ liệu
    • hàng đợi p. When you use Promise. tất cả sẽ gặp vấn đề khi số lượng Promise quá nhiều. Khi đó thư viện p-queue là một giải pháp hiệu quả vì nó có cấu hình giúp bạn thiết lập số tác vụ đồng thời
  • Nhóm thư viện lưu trữ
    • lưu trữ cục bộ. Thư viện giúp bạn lưu dữ liệu trên trình duyệt Browser. Nhưng nó bị giới hạn kích thước chỉ 5M dữ liệu
    • idb. Là thư viện thu gọn nhẹ giúp thao tác với IndexedDB. IndexedDB là cơ sở dữ liệu lưu trữ ở phía máy khách, trên trình duyệt của người sử dụng. IndexedDB là Cơ sở dữ liệu NoSQL, ngoài ra nó còn hỗ trợ các thao tác nhận, đặt và giao dịch. Với IndexedDB, bạn có thể lưu trữ lượng dữ liệu lớn hơn
    • dexie. Cũng là một thư viện thu gọn nhẹ để thao tác với IndexedDB nhưng mã đơn giản hơn, khả năng xử lý lỗi mạnh mẽ, khả năng mở rộng. Xem dự án Tài chính tham khảo sử dụng thư viện này
  • Nhóm thư viện hỗ trợ phân tích cú pháp dữ liệu, sinh dữ liệu, tạo công cụ tự đông
    • trục. Thư viện sử dụng rất nhiều với 14 triệu lượt tải xuống hàng tuần. Mình sử dụng thư viện này khá nhiều và gặp sự cố. “Công việc tạm thời bị dừng không thấy chạy tiếp” => Nguyên nhân là do axios mặc định không có thời gian chờ, nên trong một số trường hợp đặc biệt máy chủ bị lỗi không trả về phản hồi thì yêu cầu cứ chờ mãi ở đó, không làm công việc . Mình đã gặp sự cố này khi kết nối với Binance API
    • nén. Thư viện hỗ trợ nén phản hồi trả về => Nếu trang web của bạn chủ yếu trả về dữ liệu văn bản thì thư viện sẽ giúp cải tiến hiệu năng lên rất nhiều
    • nút-html-trình phân tích cú pháp. Một thư viện hỗ trợ phân tích cú pháp HTML được sử dụng khá nhiều với hàng triệu lượt tải xuống/tuần
    • cổ vũ. Dùng để tạo các bộ sưu tập dữ liệu. Thư viện thay thế. jsdom
    • kẻ làm giả. Thư viện hỗ trợ tạo một lượng lớn dữ liệu giả trong trình duyệt và nút. js. Tham khảo. https. //viblo. asia/p/seeder-va-faker-de-tao-du-lieu-mau-cho-mongodb-nodejs-YWOZryANKQ0
    • nghệ sĩ múa rối. Thư viện NodeJs cung cấp API mức cao để thao tác với dữ liệu Web trên Chrome và Chromium. Không hữu ích để tạo công cụ kiểm tra ứng dụng web hoặc tạo công cụ tự động
  • Nhóm thư viện hỗ trợ quản lý công việc
    • Chương trình nghị sự. Một thư viện thu nhỏ để quản lý công việc, giảm rất nhiều công sức nếu bạn tự quản lý công việc. Agenda sử dụng MongoDB CSDL làm. Nó còn hỗ trợ giao diện kiểm tra và quản lý công việc thông qua chương trình nghị sự. Một số vấn đề cần chú ý
      • Mặc dù thiết lập công việc 1 giây chạy 1 lần, nhưng thực tế thì 5s mới thấy công việc chạy 1 lần => Mặc định chương trình xử lý theo chu kỳ 5s (Xem. Chương trình nghị sự chạy chương trình nghị sự. mọi(“0. 1 seconds”, “job1”) every 5 seconds), to job could run with chu kỳ 1s, khi khởi động cần thêm cấu hình processEvery.
        let program = new Agenda( { processEvery. “1 giây” });
      • Mỗi lần khởi động lại ứng dụng, các công việc phải đợi mất 10 phút mới chạy lại => Đây cũng là cấu hình mặc định của chương trình làm việc, để giảm thời gian chờ đợi này, bạn có thể sử dụng lời hứa.
        chương trình làm việc. defaultLockLifetime(5000);
  • Nhóm thư viện với HTTP và Net
    • bày tỏ. Máy chủ HTTP thư viện nhẹ, dễ sử dụng và được sử dụng rất nhiều. Có lựa chọn thay thế khác như. Koa, Hapi, Sao băng
    • ổ cắm. io. Thư viện hỗ trợ trao đổi dữ liệu hai thời gian thực hiện giữa máy khách và máy chủ. Đây là thư viện được sử dụng khá nhiều
    • người gửi thư. Thư viện hỗ trợ gửi email trên NodeJs. Alternative option. gửi thư, email js
    • cơ quan. Một thư viện phần mềm trung gian hỗ trợ lưu nhật ký các yêu cầu HTTP. Thư viện thực sự rất hữu ích hỗ trợ nhiều trong việc gỡ lỗi ứng dụng web. Tham khảo. https. // ẩn danh. com/blog-developer/3-middleware-huu-ich-khi-su-dung-express-rest-api-2019112318055877
    • phím lạc đà. Một phần mềm trung gian hỗ trợ chuyển đổi dữ liệu trên biểu mẫu trước khi chuyển sang phụ trợ
    • lỗi http. Hỗ trợ tạo Lỗi HTTP
  • Nhóm thư viện cho Unit Test
    • nghệ sĩ múa rối. Thư viện NodeJs cung cấp API mức cao để thao tác với dữ liệu Web trên Chrome và Chromium. Không hữu ích để tạo công cụ kiểm tra ứng dụng web hoặc tạo công cụ tự động
    • kẻ làm giả. Thư viện hỗ trợ tạo một lượng lớn dữ liệu giả trong trình duyệt và nút. js. Tham khảo. https. //viblo. asia/p/seeder-va-faker-de-tao-du-lieu-mau-cho-mongodb-nodejs-YWOZryANKQ0
    • trò đùa. Là framework test hoàn chỉnh được phát triển và bảo trì bởi Facebook. Lượng tải xuống sử dụng hàng tuần khá lớn. Tham khảo các framework thay thế khác như. Jasmine, Ava và Mocha
    • Sinon. Là thư viện hỗ trợ kiểm tra đơn vị chức năng, nhiệm vụ chính của nó là hỗ trợ sơ khai (thay thế các chức năng) để hỗ trợ kiểm tra tất cả các trường hợp nghiệp vụ mà không phải sửa đổi mã. Khi sử dụng thư viện đôi khi gặp một số lỗi như bên dưới.
      TypeError. stub(obj, ‘meth’, fn) đã bị xóa, xem tài liệu Làm mới của Sinon thay đổi hàm giao diện, cần gọi theo cách mới. Chi tiết xem. https. //sinonjs. org/phát hành/v2. 4. 1/di chuyển sang 2. 0/Còn lại thì cài đặt bản cũ (Version 1. x)
    • Mocha. Là framework hỗ trợ Unit Test được sử dụng khá rộng rãi, với nhiều hàm verify đầu ra hỗ trợ linh hoạt. Mocha kết hợp chai, supertest (HTTP khẳng định) và sinon là một lựa chọn hợp lý. Tham khảo. https. //viblo. asia/p/unit-test-cho-nodejs-restful-api-voi-mocha-va-chai-bWrZnLAv5xw hoặc https. //giaphiep. com/blog/unit-test-nodejs-project-with-mocha-chai-supertest-and-sinon-15067

NodeJ đầy ngăn xếp

Là bộ công cụ đầy đủ xây dựng ứng dụng NodeJs từ Backend, Frontend, Database được cấu hình từ NodeJs. The full stack stack has been include

  • NGHĨA LÀ ngăn xếp. Bộ công cụ bao gồm MongoDB, ExpressJS, AngularJS, Node. js. Tham khảo. https. //www. mongodb. com/mean-stack
  • ngăn xếp MERN. Bộ công cụ bao gồm MongoDB, ExpressJS, ReactJS, Node. js. Tham khảo. https. //www. rò rỉ mật mã. io/cách cài đặt-mern-stack-in-centos-redhat/

Use the any thì phụ thuộc vào bạn thành ra Angular hay ReactJs than. Nếu bạn muốn biết chi tiết hơn về sự khác biệt, hãy tham khảo. Sự khác biệt giữa ngăn xếp MEAN và ngăn xếp MERN