Thư viện chuẩn
Quản lý module
npm của Node.js so với Go modules, Cargo (Rust), Swift Package Manager và Maven/Gradle (Java): cài, cập nhật, gỡ và export/import package.
- Phiên bản tối thiểu
- Node.js ≥ 19Go ≥ 1.16Rust ≥ 1.85Swift ≥ 6.0Java ≥ 25
- Đã chạy thử trên
- Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1
Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.
Mỗi hệ sinh thái đều có một file khai báo dependency (package.json, go.mod, Cargo.toml, Package.swift, pom.xml/build.gradle) và công cụ để quản lý nó. npm và crates.io (Rust) có registry trung tâm; Go module và Swift package thường chỉ là git repository — không cần publish qua registry nào (Go tải qua module proxy GOPROXY, SwiftPM tải thẳng qua URL git). Java tách biệt: package chỉ là namespace trong ngôn ngữ, dependency được Maven/Gradle quản lý qua pom.xml/build.gradle, còn JPMS (module-info.java, từ Java 9) là một lớp đóng gói/kiểm soát truy cập khác nữa, độc lập với cả hai.
Cài đặt, cập nhật và gỡ dependency
| Việc cần làm | npm (Node.js) | Go modules | Cargo (Rust) | Swift Package Manager | Maven (Java) |
|---|---|---|---|---|---|
| Khởi tạo file quản lý dependency | npm init |
go mod init github.com/you/yourmodule |
cargo new/cargo init |
swift package init |
mvn archetype:generate |
| Cài một package | npm install uuid |
go get github.com/google/uuid@v1.6.0 |
cargo add uuid -F v4 |
swift package add-dependency <url> --from <ver> |
thêm <dependency> vào pom.xml |
| Cài một CLI dùng toàn cục | npm install -g <pkg> |
go install pkg@latest |
cargo install <crate> |
— (không chuẩn hoá; thường dùng Homebrew/Mint) | — (thường dùng SDKMAN/jbang) |
| Cập nhật lên bản mới nhất | npm install uuid@latest |
go get -u github.com/google/uuid |
cargo update -p uuid |
swift package update |
sửa version trong pom.xml |
| Gỡ một package | npm uninstall uuid |
go get github.com/google/uuid@none |
cargo remove uuid |
xoá dependency khỏi Package.swift |
xoá <dependency> khỏi pom.xml |
| Dọn dependency không dùng | npm prune |
go mod tidy |
— (không có lệnh chuẩn) | — (không có lệnh chuẩn) | mvn dependency:analyze (chỉ báo cáo) |
| Publish | npm publish |
push code + tag release lên git repository | cargo publish |
tag release trên git (Swift Package Index tự index) | mvn deploy (lên Maven Central qua Sonatype) |
Import một package bên ngoài
// import module
import { v4 as uuidv4 } from 'uuid'
const id = uuidv4()
console.log(id) // uuid ngẫu nhiên, khác nhau mỗi lần chạypackage main
import (
"fmt"
// import module
"github.com/google/uuid"
)
func main() {
id := uuid.New()
fmt.Println(id) // uuid ngẫu nhiên, khác nhau mỗi lần chạy
}// Cargo.toml: uuid = { version = "1", features = ["v4"] }
// import module
use uuid::Uuid;
fn main() {
let id = Uuid::new_v4();
println!("{id}"); // uuid ngẫu nhiên, khác nhau mỗi lần chạy
}// import module
import Algorithms
let unique = [1, 2, 2, 3, 3, 3].uniqued() // swift-algorithms: std không có sẵn hàm này
print(Array(unique)) // [1, 2, 3]// import module
import org.apache.commons.lang3.StringUtils;
// Maven: org.apache.commons:commons-lang3:3.20.0
void main() {
IO.println(StringUtils.capitalize("bob")); // Bob
}Export module của chính bạn
// greeter.js — export module
export function greet(name) {
console.log(`hello ${name}`)
}
// main.js — import module vừa export
import { greet } from './greeter.js'
greet('bob') // hello bob// greeter/greeter.go — export module
package greeter
import "fmt"
// Greet in ra lời chào tới name
func Greet(name string) {
fmt.Printf("hello %s", name)
}
// main.go — import module vừa export
package main
import "github.com/you/yourmodule/greeter"
func main() {
greeter.Greet("bob") // hello bob
}// src/greeter.rs — export module
/// Greet in ra lời chào tới name
pub fn greet(name: &str) {
print!("hello {name}");
}
// src/main.rs — import module vừa export
mod greeter;
use greeter::greet;
fn main() {
greet("bob"); // hello bob
}// Sources/greeter/Greeter.swift — export module
public enum Greeter {
/// Greet in ra lời chào tới name
public static func greet(_ name: String) {
print("hello \(name)", terminator: "")
}
}
// Sources/app/main.swift — import module vừa export (cùng package, khai báo dependency giữa target trong Package.swift)
import greeter
Greeter.greet("bob") // hello bob// greeter/Greeter.java — export module
package greeter;
public class Greeter {
/** In ra lời chào tới name */
public static void greet(String name) {
System.out.print("hello " + name);
}
}
// Main.java — import module vừa export
import greeter.Greeter;
void main() {
Greeter.greet("bob"); // hello bob
}Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#modules