Node.js ve Express gibi Backend Frameworks ile JavaScript'i bütünleştirmek.

JavaScript'i hem müşteri hem de sunucu tarafında kullanma yeteneği temel olarak modern web gelişimini yeniden şekillendirmiştir. Node.js, bu mümkün olan runtime ortamı sağlarken, Express sağlam API'ler ve web sunucularının inşa ettiği ince, kesintisiz bir çerçeve sunar. Birlikte, geliştiricilerin tüm yığın boyunca tek bir dil kullanarak ölçeklenebilir, gerçek zamanlı uygulamalar sağlar.

Bu makale tam entegrasyon alanını kapsar: verileri, orta dikkatleri, güvenlik, test ve dağıtımları işlemek için bir temel oluşturmaktan sonra, mimar üretim-okuy backends ile Node.js ve Express ile nasıl bağlantı kuracağınızı ve onları ön uç JavaScript ile nasıl bağlayacağını anlayabilirsiniz.

Node.js ve Express Anlamak

[FONT:0]Node.js[[Dönetici: 1 ) Açık kaynak, Chrome'un V8 JavaScript motoru üzerinde inşa edilmiş bir zaman.

[FONT=0)Express, uygulamanızı uygun gördüğünüz gibi oluşturmak için en popüler web çerçevesidir. Bu, web sunucuları ve API'leri oluşturmak için en az sayıda özellik sunar.

Resmi Express belgelerine göre[Dönetici:0)[Dönetici: 0,3) çerçeve “hızlı, önemsiz, minimalist”dir. Bu felsefe hala karmaşık, tam başarılı uygulamalara izin verirken öğrenilebilir.

Neden Birlikte Node.js ve Express kullanın?

  • [FONT:0)Üye Olmayan Dil: [Dönderin ve geri dönüşteki JavaScript, bağlam geçişini azaltır ve kod paylaşımını sağlar (örneğin, geçerlilik mantığı, hizmetleri).
  • [FONT:0) Hayırlı I/O: Node.js, ağır iplik olmadan birçok eş zamanlı bağlantıları etkin bir şekilde ele alır.
  • [FONT=0)Rich ekosistemi:[Dönetici:[Dönetici:0) npm, veritabanı sürücülerinden kütüphaneleri doğrulamasına kadar yüzlerce binlerce paket sunar.
  • [FONT:0) Gerçek zamanlı yetenekleri:[Döneticiler için WebSockets için inşa edilmiş destek:0) Doğal olarak Express ile entegre eder.

Bir Üretim Hazırlığı Oluşturmak -Ready Server

Node.js'ı [[0)

mkdir my-backend
cd my-backend
npm init -y

Bir bağımlılık olarak Express yükleyin:

npm install express

Geliştirme için, aynı zamanda dosyayı otomatik olarak yeniden başlatmanız için [[Gücevdeler:

npm install -D nodemon

Şimdi minimum sunucu ile anFLULLT:5 oluşturun:

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
 res.send('Hello, world!');
});

app.listen(PORT, () => {
 console.log(`Server running on port ${PORT}`);
});

Uygulamayı farklı ortamlarda etkinleştirir - dağıtım için en iyi uygulama.

Ortam Değişkenleri Ekle

AİLRAD:8) Bir dosyadan çevresel değişkenleri yüklemek için paketi kullanın:

npm install dotenv

Bir dosya oluşturun:

PORT=5000
DB_CONNECTION_STRING=mongodb://localhost:27017/myapp

[Üye: 9)) Üstteki konfigürasyonu yükleyin:

require('dotenv').config();

Bu model kodbase'iniz için hassas veriler tutar ve yapılandırma yönetimini basitleştirir.

Ortaware: The Heart of Express

Ortaware işlevleri, Express uygulama mantığının bina bloklarıdır. İstek nesnesine, yanıt nesnesine ve [[Ücretsizce: 15) yanıt nesnesine erişim sağlamaktadır.

Ortak kullanım koşulları, giriş, doğrulama, talep organları ve hataları ele almaktadır.

Yapılı Ortaware

Express birkaç yerleşik orta dikkat fonksiyonu sağlar:

  • [FONT=FONT] – Parses gelen JSON maaş yükleri.
  • [FONT=FONT=S) – Parses URL-encoded vücutları ( HTML formlarından).
  • [03.38] - Görüntüler, CSS ve müşteri tarafındaki JavaScript gibi statik dosyalar servis eder.

JSON parsing ile örnek:

app.use(express.json());

app.post('/api/users', (req, res) => {
 console.log(req.body); // Access parsed JSON
 res.json({ success: true });
});

Özel Ortaware

Kendi ortaware yazıp yeniden kullanılabilir mantık oluşturun. Örneğin, bir istek logger:

const logger = (req, res, next) => {
 console.log(`${req.method} ${req.url} - ${new Date().toISOString()}`);
 next();
};

app.use(logger);

İş önemlidir: Ortaware, tanımlandığında yapılır.Her zaman dört parametre ile son derece hataya yerleştirir:

app.use((err, req, res, next) => {
 console.error(err.stack);
 res.status(500).json({ error: 'Something broke!' });
});

Routing and RESTful APIs

Haritaları ücretsiz olarak yönlendirme Haritaları HTTP yöntemleri ve eller işlevlerine yol açıyor. Temiz bir yönlendirme yapısı kullanılabilirliği ve ölçeklenebilirliği artırır.

Temel Routing

app.get('/api/items', (req, res) => {
 // return list of items
});

app.post('/api/items', (req, res) => {
 // create new item
});

app.put('/api/items/:id', (req, res) => {
 const { id } = req.params;
 // update item with given id
});

app.delete('/api/items/:id', (req, res) => {
 // delete item
});

ExpressVPN for modülerity için kullanım

Daha büyük uygulamalar için, güzergahları [[DÜDÜŞÜŞÜŞÜNÜŞÜŞÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜN

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
 res.json([{ id: 1, name: 'Sample Item' }]);
});

router.post('/', (req, res) => {
 // create logic
});

module.exports = router;

Sonra, Âdem'in (a.s.)

const itemsRouter = require('./routes/items');
app.use('/api/items', itemsRouter);

Bu yaklaşım giriş noktanızı mantıksal olarak gruplandırılıyor.

Bir Veritabanına Bağlanma

Çoğu geri dönüşler devam etmek için gereklidir. Popüler NoSQL ve SQL veritabanı Node.js ile iyi bir şekilde entegre eder.

Mongoose ile Mongoose

Mongoose'yi MongoDB için bir tasarım:

npm install mongoose

Sunucu dosyasında bağlantı:

const mongoose = require('mongoose');

mongoose.connect(process.env.DB_CONNECTION_STRING)
 .then(() => console.log('Connected to MongoDB'))
 .catch(err => console.error('Connection error', err));

Bir şema ve model (örneğin, [[Dönetici:)

const mongoose = require('mongoose');

const itemSchema = new mongoose.Schema({
 name: { type: String, required: true },
 price: Number,
 created_at: { type: Date, default: Date.now }
});

module.exports = mongoose.model('Item', itemSchema);

Yollarınızda modeli kullanın:

const Item = require('./models/Item');

app.post('/api/items', async (req, res) => {
 try {
 const item = new Item(req.body);
 await item.save();
 res.status(201).json(item);
 } catch (err) {
 res.status(400).json({ error: err.message });
 }
});

PostgreSQL with node-postgres

İlişkisel veritabanı için, [[ŞUYGÜŞÜŞÜŞÜŞÜŞÜŞÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜN

npm install pg

Bir havuz oluşturun ve sorgu oluşturun:

const { Pool } = require('pg');
const pool = new Pool({
 connectionString: process.env.DATABASE_URL
});

app.get('/api/users', async (req, res) => {
 const result = await pool.query('SELECT * FROM users');
 res.json(result.rows);
});

A ORM gibi bir ORM kullanmayı düşünün:0)Sequelize) veya ).Knex) daha soyutlanmış etkileşimler için.

Frontend-Backend Entegrasyon

Geri dönüş API uç noktaları aracılığıyla veri servis ettiğinde, ön JavaScript onları Axios gibi API veya kütüphaneleri kullanarak kullanabilir.

Express'ten Fetching

Express API'niz akıp gidiyor gibi. Bir müşteri-ön senaryosu (örneğin, Reaktif, Vue veya düz HTML) verileri alabilir:

fetch('http://localhost:3000/api/items')
 .then(response => {
 if (!response.ok) throw new Error('Network response error');
 return response.json();
 })
 .then(data => {
 console.log('Items:', data);
 // render data on page
 })
 .catch(err => console.error('Fetch error:', err));

KURUMSALS

Ön ve geri dönüş farklı limanlarda veya alanlarda olduğunda, Cross- ⁇ Kaynak Paylaşımı (CORS) paketini yükleyin:

npm install cors

Sonra onu orta olarak kullanın:

const cors = require('cors');
app.use(cors()); // Allows all origins – restrict in production

Üretim için, belirli kökenleri yapılandırın:

app.use(cors({
 origin: 'https://your-frontend-domain.com',
 methods: ['GET', 'POST']
}));

Güvenlik En İyi Uygulamaları

Geri entegrasyon güvenlik endişelerini ortaya koyar. Bu uygulamaları uygulama:

  • [FONT:0)Helmet:[Dönetici:[Dönetici: 0 ) Kombine karşı korumayı korumak için çeşitli HTTP başlıkları ayarlar.
  • [FONT:0) Sınırlama:[Dönetici:[Dönetici:)))[[i:))))
  • [FONT=0)Input geçerliliği:[[Dönetici:[Döneticileri kullanarak kullanıcı girişlerini doğrulayın veya doğrulayınız.
  • [FONT:0)HTTPS:[[Dönetici: 1 ) Her zaman üretimde HTTPS'ye hizmet eder.
  • [FONT:0]Authentication:[Dönetici:[Dönetici: · 1) · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Helmet ile Örnek:

const helmet = require('helmet');
app.use(helmet());

Örnek with rate Limit:

const rateLimit = require('express-rate-limit');

const limiter = rateLimit({
 windowMs: 15 * 60 * 1000, // 15 minutes
 max: 100
});
app.use('/api', limiter);

Hata işleme ve Logging

Üretim uygulamaları sağlam bir hata işlemeye ihtiyaç duyar. Giriş hataları ve tutarlı cevaplar döndürür merkezi bir hata-katılım ortalığı yaratın.

// Custom error handler
const errorHandler = (err, req, res, next) => {
 console.error('Error:', err.message);
 const statusCode = err.statusCode || 500;
 res.status(statusCode).json({
 error: err.message,
 stack: process.env.NODE_ENV === 'development' ? err.stack : undefined
 });
};

app.use(errorHandler);

Giriş için, gelişimde ve üretimde [[Ücretsizlik” gibi daha yapılandırılmış bir logger kullanın:

npm install morgan winston
const morgan = require('morgan');
app.use(morgan('dev'));

Bütünleşmeyi Test Etmek

Geri dönüşünüzün beklendiği gibi davranılması için testler yazın. Popüler test çerçeveleri Jest ve Mocha.For HTTP entegrasyon testleri için, kullanım [[0] Supertest[DDDDDDDDDDDDDDDDD)

Jest ve Supertest ile Örnek

Dev bağımlılıklar yükleyin:

npm install -D jest supertest

Test dosyası oluşturun::56.

const request = require('supertest');
const app = require('./index'); // export app from index.js

describe('GET /api/items', () => {
 it('responds with JSON array', async () => {
 const res = await request(app)
 .get('/api/items')
 .expect('Content-Type', /json/)
 .expect(200);
 expect(Array.isArray(res.body)).toBe(true);
 });
});

Not: Uygulamanın test sırasında liman çatışmalarından kaçınmayı dinleyen sunucudan uygulama tanımı.Uygulamayı paylaşın ve dosyayı doğrudan çalıştırdığınızda dinleyin:

if (require.main === module) {
 app.listen(PORT, () => {
 console.log(`Server running on port ${PORT}`);
 });
}
module.exports = app;

İşsizlik

Node.js+Express geri uçup bu yönergeleri takip ettiğinizde:

  • [[0) Bir süreç yöneticisini kullanın [Dönetici:0) PM2 gibi uygulamayı canlı tutmak ve kümeleme yapmak.
  • [FONT=0]Set çevre değişkenleri[[Dönetici:0) hosting platformunda (örneğin, Heroku, DigitalOcean, AWS Elastic Beanstalk).
  • [FONT:0)Enable log ve izleme[[Dönemli veya Datadog gibi hizmetlerle).
  • [FONT:0) Bir ters ([[Dönetici) (Nginx, Caddy) SSL sonlandırma, caching ve güvenlik başlıkları için.

Ortak bir dağıtım modeli, müşteri tarafından yapılan yönlendirmeleri desteklemek için geri dönüş ve önyüklemek, HTTPS üzerinden API ile iletişim kurmaktır. Alternatif olarak, önyükleme dosyaları ExpressULLT:59 kullanarak ExpressULLT:59 ile hizmet edebilirsiniz.

Performans Optimizasyonu Performans Optimizasyonu

Node.js tek hazır, ancak hala doğru stratejilerle yüksek aktarım yapabilirsiniz:

  • [0] Tüm I / O operasyonlarının olay döngüsünü engellemek için bir tek bir tek bir/veya bekleneni kullanın.
  • [FONT:0]Compress yanıtları ile [[Dönetici:60) orta dikkat.
  • [FONT:0]Cache sık sık cevaplar[[Döncüm: 1) Redis gibi in-memory mağazalarda kullanılır.
  • [[0) Uygulama[[Döneticileri değiştir], yerleşik kullanım için birden çok CPU çekirdeğinin üzerinde bulunanlar için geçerlidir:61. modül veya PM2 küme modu.

Depresyon ile Örnek:

const compression = require('compression');
app.use(compression());

WebSockets ile Gerçek Zaman İletişim

Express, iki yönlü, etkinlik odaklı iletişim sağlamak için sorunsuz bir şekilde entegre eder. Bu, sohbet uygulamaları, canlı bildirimleri ve işbirliği araçları için idealdir.

npm install socket.io

Hem HTTP hem de WebSocket desteği ile sunucu oluşturun:

const http = require('http');
const socketIo = require('socket.io');

const server = http.createServer(app);
const io = socketIo(server, { cors: { origin: '*' } });

io.on('connection', (socket) => {
 console.log('New client connected');
 socket.on('disconnect', () => console.log('Client disconnected'));
});

server.listen(PORT, () => console.log(`Server with WebSocket on port ${PORT}`));

Ön uç bu WebSocket sunucusuna bağlanabilir ve www.D:66) kütüphane kullanarak olaylara yayılabilir.

Full-Stack Frameworks ve Desenler

Temel entegrasyon ötesinde, birçok takım Node.js, Express ve bir ön plana sahip çerçeveyi bir kohesive yığınına kabul eder.En yaygın olanı ise [[Dönetici[Dönder:0)IMERN[DÜye, Express, Rede.js).

Bu yığınlar, geliştiricilerin veritabanından UI'ye tam uygulamaları oluşturmalarına izin verir, genellikle paylaşılan modeller ve türleri ile. Örneğin, Mongoose şemaları arka uçta tanımlayabilirsiniz ve aynı geçerlilik mantığını bir form kütüphanesine dönüştürmeden sonra yeniden kullanabilirsiniz.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Node.js ve Express ile JavaScript'in bütünleştirilmesi, yalnızca her iki tarafta benzer görünümlü kod yürütmekle ilgili değildir - çeşitli proje gereksinimlerine adapte olmak için JavaScript'in ekosisteminin tam gücünü kullanmakla ilgilidir.

Bu teknikleri ustaca, geri dönüş ve ön uç arasındaki yanlış eşleştirmeyi ortadan kaldırabilirsiniz, gelişim döngüleri hızlandırıp bu ölçekleri ölçen uygulamaları dağıtabilirsiniz: Yeni bir proje başlat, orta dikkat ile deney, bir veritabanı bağlamak ve entegrasyonun hayata geçmesini görmek için zaman.