Một dự án Node.js có kích thước lớn thường có một số lượng phụ thuộc và một số lượng tệp nguồn cũng như các tài sản khác như hình ảnh, trang web, tệp cài đặt, v.v. Việc phân phối một dự án Node.js và triển khai nó trên bất kỳ môi trường nào khác trở nên khó khăn, do đó nó cần được đóng gói để có thể dễ dàng chuyển sang máy khác. Có nhiều công cụ đóng gói có sẵn trên kho NPM. Chương này sẽ thảo luận về công cụ đóng gói nexe, và cũng sẽ tổng quan về một số thư viện đóng gói khác.
Để minh họa cách hoạt động của tiện ích Nexe, chúng ta sẽ tạo một ứng dụng ExpressJs với đoạn mã sau −
var express = require('express'); var app = express(); var path = require('path'); var bodyParser = require('body-parser'); // Create application/x-www-form-urlencoded parser var urlencodedParser = bodyParser.urlencoded({ extended: false }) app.use(express.static('public')); app.get('/', function (req, res) { res.sendFile(path.join(__dirname,"index.html")); }) app.get('/process_get', function (req, res) { // Prepare output in JSON format response = { first_name:req.query.first_name, last_name:req.query.last_name }; console.log(response); res.end(JSON.stringify(response)); }) app.post("/process_post", ) var server = app.listen(5000, function () { console.log("Express App running at http://127.0.0.1:5000/"); })
Đường dẫn ‘/’ hiển thị một biểu mẫu HTML từ đoạn mã sau −
<html> <body> <form action = "/process_POST" method = "POST"> First Name: <input type = "text" name = "first_name"> <br> Last Name: <input type = "text" name = "last_name"> <br> <input type = "submit" value = "Submit"> </form> </body> </html>
Máy chủ Node.js hiển thị biểu mẫu sau −
Ứng dụng Node.js ở trên cũng đăng ký middleware tĩnh, do đó nó hiển thị một hình ảnh được đặt trong thư mục static/images.
Chúng tôi hiện muốn xây dựng một tệp thực thi tự động cho ứng dụng Node.js này, bao gồm mã nguồn, các thư mục con cũng như các tài nguyên trong một tệp duy nhất. Nexe là một tiện ích dòng lệnh giúp biên dịch ứng dụng Node.js của bạn thành một tệp thực thi duy nhất.
Các ứng dụng độc lập
Khả năng chạy nhiều ứng dụng với các môi trường thực thi node.js khác nhau.
Phân phối nhị phân mà không cần node / npm.
Bắt đầu và triển khai nhanh hơn.
Pipeline xây dựng linh hoạt
Xây dựng đa nền tảng
Thực hiện cài đặt toàn cầu Nexe như sau −
npm install nexe -g
Bạn cũng cần công cụ Netwide Assembler (NASM). Tải xuống và cài đặt từ www.nasm.us .
Tiện ích nexe yêu cầu Python được cài đặt trên hệ thống. Đảm bảo rằng Python là một trong các phiên bản từ 3.11 đến 3.7.
Giả sử bạn đang sử dụng nexe cho hệ điều hành Windows 64-bit, bạn cũng cần cài đặt "Desktop development with C++" từ Visual Studio 2022. Nó có thể được cài đặt từ aka.ms .
(Đối với các nền tảng hệ điều hành khác, hãy làm theo hướng dẫn trên github.com/nodejs )
Khi tất cả các yêu cầu tiên quyết đã được cài đặt, hãy chạy lệnh sau trong terminal CMD −
D:\expressApp>nexe index.js --build windows-x64-20.9.0 –verbose
Việc biên dịch có thể mất một thời gian, nhưng cuối cùng, nó sẽ tạo ra expressApp.exe trong thư mục ứng dụng.
D:\expressApp │ expressApp.exe │ index.html │ index.js │ package-lock.json │ package.json │ users.json │ ├───node_modules │ │ .package-lock.json │ ├───body-parser │ │ │ HISTORY.md │ │ │ index.js │ │ │ LICENSE │ │ │ package.json │ │ │ README.md │ │ │ SECURITY.md │ │ │ . . . │ │ │ . . . │ │ │ . . . │ ├───express │ │ │ History.md │ │ │ index.js │ │ │ LICENSE │ │ │ package.json │ │ │ Readme.md │ │ │ . . . │ │ │ . . . │ │ │ . . . └───public └───images logo.png
Chạy nó từ dòng lệnh, và máy chủ Node.js sẽ bắt đầu.
D:\expressApp>expressapp Express App running at http://127.0.0.1:5000/
Công cụ pkg là một giao diện dòng lệnh cho phép nhà phát triển tạo ra các tệp thực thi từ các dự án Node.JS; cho phép bạn chạy ứng dụng ngay cả trên những môi trường không có Node.JS được cài đặt.
Để cài đặt pkg, hãy sử dụng lệnh −
npm install -g pkg
Sau đó, sử dụng pkg để xây dựng tệp thực thi.
pkg myapp.js
Chạy lệnh trên sẽ tạo ra ba chương trình; cụ thể là một tệp thực thi cho Windows, macOS và Linux. Thông tin chi tiết hơn có thể được tìm thấy tại www.npmjs.com .
JXcore, là một dự án mã nguồn mở, giới thiệu một tính năng độc đáo cho việc đóng gói và mã hóa các tệp nguồn và các tài sản khác vào các gói JX.
Tải xuống và cài đặt gói JXcore từ https://github.com/jxcore , tùy theo hệ điều hành và kiến trúc máy của bạn.
Để đóng gói dự án trên, bạn chỉ cần vào trong thư mục này và thực hiện lệnh jx sau. Giả sử index.js là tệp đầu vào cho dự án Node.js của bạn −
jx package index.js index
Lệnh trên sẽ đóng gói mọi thứ và tạo ra hai tệp sau −
index.jxp − Đây là một tệp trung gian chứa đầy đủ chi tiết dự án cần thiết để biên dịch dự án.
index.jx − Đây là tệp nhị phân chứa toàn bộ gói đã sẵn sàng để được gửi đến khách hàng của bạn hoặc đến môi trường sản xuất của bạn.
Xem xét dự án Node.js gốc của bạn đang chạy như sau −
node index.js command_line_arguments
Sau khi biên dịch gói của bạn bằng JXcore, nó có thể được khởi động như sau −
jx index.jx command_line_arguments