Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Cara membungkus dan menerbitkan nodejs
Sebagai platform pembangunan yang sangat popular, Node.js mempunyai reputasi yang sangat tinggi di kalangan pembangun. Apabila membangunkan aplikasi Node.js, kita perlu mempertimbangkan membungkusnya ke dalam bentuk yang boleh digunakan dalam persekitaran lain. Artikel ini akan memperkenalkan cara membungkus dan menerbitkan aplikasi Node.js dalam persekitaran yang berbeza.
Sebelum kami mula membungkus dan menerbitkan aplikasi Node.js, kami perlu membina aplikasi Node.js asas. Kaedah yang sangat asas disediakan di sini untuk tujuan pendidikan sahaja. Kami mulakan dengan mencipta struktur direktori ringkas dan kemudian menambah dua fail pada projek. Fail pertama ialah server.js
, yang akan digunakan untuk membuat pelayan HTTP. Fail kedua ialah package.json
, yang menentukan maklumat metadata dan kebergantungan aplikasi kami.
// server.js const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World! '); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
// package.json { "name": "my-node-app", "version": "1.0.0", "description": "A simple Node.js app", "main": "server.js", "dependencies": { "express": "^4.17.1" } }
Ini adalah aplikasi Node.js yang sangat asas yang hanya menggunakan modul HTTP untuk mencipta pelayan dan mengembalikan "Hello, World!", dan juga menggunakan perpustakaan Express untuk pengendalian HTTP ask yang lebih mudah.
Untuk membungkus dan menerbitkan aplikasi Node.js, kita perlu mempertimbangkan persekitaran dan penggunaan sasaran. Berikut ialah beberapa cara biasa untuk membungkus dan menerbitkan aplikasi Node.js.
NPM telah menjadi pengurus pakej utama untuk aplikasi Node.js sejak penubuhannya. Gunakan arahan npm init untuk mencipta fail package.json asas dan nyatakan kebergantungan aplikasi kami. Apabila memasang pakej NPM dalam projek, kita boleh membezakan menggunakan kebergantungan pengeluaran atau pembangunan. Apabila membungkus perpustakaan Python, anda boleh menggunakan kebergantungan yang serupa untuk menentukan perpustakaan pihak ketiga yang diperlukan.
# 初始化创建 package.json 文件 npm init # 安装 Express 库并添加到 package.json 文件 npm install express --save
Kemudian, jalankan perintah npm pack
dan kami akan mendapat fail pakej .tgz
yang mengandungi kod kami dan fail lain yang diperlukan.
# 打包成 .tgz 文件 npm pack
Fail .tgz
ini boleh dipasang dan digunakan terus dalam projek lain, atau ia boleh dimuat naik ke [Registry NPM](https://www.npmjs.com/) untuk dimuat turun oleh pembangun lain dan gunakan. Untuk menerbitkan pakej NPM, anda perlu membuat akaun dalam [pendaftaran NPM](https://www.npmjs.com/) dan log masuk menggunakan perintah npm login
.
# 登录进入 NPM 账户 npm login # 发布 NPM 包 npm publish
Docker boleh membungkus aplikasi Node.js ke dalam bekas untuk memastikan konsistensi semasa menjalankan aplikasi dalam persekitaran yang berbeza. Dengan membungkus aplikasi anda ke dalam bekas Docker, anda boleh menjalankannya di mana-mana sahaja Docker disokong tanpa perlu risau tentang kebergantungan atau persekitaran masa jalan yang lapuk.
Untuk menjana bekas Docker, kita perlu menulis fail Docker yang menentukan kebergantungan dan pemasangan aplikasi.
# 使用 Node.js 14 镜像作为基础镜像 FROM node:14 # 将工作目录切换为 /app WORKDIR /app # 复制 package.json 和 package-lock.json 文件到容器中 COPY package*.json ./ # 安装所有生产依赖包 RUN npm install --only=production # 复制所有应用程序文件(包括 node_modules 文件夹) COPY . . # 暴露 3000 端口以供外部访问 EXPOSE 3000 # 在容器中运行应用程序 CMD [ "node", "server.js" ]
Jalankan arahan berikut dalam direktori tempat fail Dockerfile wujud untuk menjana bekas Docker.
# 创建并运行容器 docker build -t my-node-app . docker run -p 80:3000 -d my-node-app
Menggunakan arahan di atas, kami telah berjaya membungkus aplikasi Node.js ke dalam imej Docker dan berjaya menjalankannya dalam bekas.
Menggunakan alat [pkg](https://github.com/vercel/pkg), kami boleh membungkus aplikasi Node.js ke dalam fail boleh laku Laksanakan fail. Alat ini membolehkan kami menjalankan aplikasi kami tanpa memasang Node.js atau NPM, dan pengurusan kebergantungan adalah sangat mudah.
Mula-mula, pasang alat pkg menggunakan npm.
# 全局安装 pkg 模块 npm install -g pkg
Kemudian, laksanakan arahan berikut dalam terminal untuk membungkus dan menjana fail boleh laku.
# 打包成可执行文件 pkg . --output my-node-app.exe
Dalam platform awan, cara terbaik untuk membungkus aplikasi Node.js adalah dengan mencipta perkhidmatan Tanpa Pelayan. Pendekatan ini mengelakkan kerumitan pengurusan infrastruktur dan rangkaian dan membolehkan penskalaan adaptif apabila diperlukan.
Sebagai contoh, gunakan perkhidmatan AWS Lambda untuk membungkus dan menerbitkan aplikasi Node.js tanpa perlu mengurus mesin maya atau pelayan sendiri. Hanya buat fungsi Lambda dan muat naik kod fungsi ke AWS Lambda.
Pertama, kami perlu mencipta fungsi dalam AWS Lambda dan memuat naik aplikasi Node.js kami. Apabila mencipta fungsi, pilih Node.js sebagai persekitaran masa jalan dan kemudian bungkus kod kami sebagai fail ZIP untuk dimuat naik.
Apabila fungsi Lambda dipanggil, persekitaran pengkomputeran tempatan dimulakan dan kod dimuatkan ke dalam persekitaran itu untuk dijalankan. Oleh itu, kami tidak perlu mengurus pelayan secara manual dan hanya fokus pada kod.
Dalam artikel ini, kami memperkenalkan cara untuk membungkus dan menerbitkan aplikasi Node.js kepada persekitaran sasaran yang berbeza. Ini termasuk perkhidmatan tanpa pelayan yang dibungkus ke dalam pakej NPM, bekas Docker, boleh laku dan platform awan. Kaedah pembungkusan akhir yang dipilih harus bergantung pada keperluan dan keperluan projek. Selepas memilih kaedah penukaran yang paling sesuai dengan aplikasi anda, anda boleh yakin bahawa kod anda akan dijalankan.
(Kod dan contoh yang disebut dalam artikel ini boleh didapati dalam [repositori GitHub](https://github.com/Judith-liu-phy/nodejs-packaging-examples).)
Atas ialah kandungan terperinci Cara membungkus dan menerbitkan nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!