מצגת JavaScript עם Backend Frameworks Like Node.js ו- Express

היכולת להשתמש JavaScript בשני הצדדים של הלקוח והשרת יש התפתחות אינטרנט מודרנית בצורת ביסודה. Node.js מספק את הסביבה הממושכת שמאפשרת זאת, בעוד אקספרס מספק מסגרת דקה, לא מזוהה אשר מזרימת בניית API חזקים שרתי אינטרנט. יחד, הם מאפשרים למפתחים ליצור יישומים מדרגיים, בזמן אמת באמצעות שפה אחת בכל הערימה.

מאמר זה מכסה את הנוף המלא של שילוב: מהקמת בסיס לטיפול בנתונים, מודעות בינונית, אבטחה, בדיקות, פריסה.עד הסוף, תבין כיצד האדריכל חוזר מוכן ייצור עם Node.js ו Express, וכיצד לחבר אותם בצורה חלקה עם JavaScript הקדמי.

הבנת Node.js ו- Express

(FLT:0) Node.jigsFLT:1 הוא קוד פתוח, לוח זמנים בריצה חוצה פלטפורמות בנוי על מנוע ה- V8 JavaScript של Chrome.זה מאפשר לך להוציא JavaScript מחוץ לדפדפן, בשרת.המודל המונע על ידי אירועים, ללא חסימת I/O הופך אותו יעיל במיוחד עבור I/O-heavy workloads כגון שרתי API, יישומים בזמן אמת, ושירותי זרימה.

(FLT:0)expressFLT:1) הוא המסגרת המקוונת הפופולרית ביותר עבור Node.js. זה מספק קבוצה מינימלית של תכונות לבניית שרתי אינטרנט ו APIs, כולל routing, middleware ותמיכה למנוע תבנית. Express הוא ללא שינוי, כלומר אתה חופשי לבנות את היישום שלך כפי שאתה רואה מתאים - יתרון שנותן צוותים מנוסים גמישות ושליטה.

על פי נתוני ה-FLT:0 , 000 הרשמי של אקספרס: 1 (ה) המסגרת היא "ארוכה, בלתי מזוינת, מינימליסטית" פילוסופיה זו שומרת על עקומת הלמידה, תוך שהיא מאפשרת יישומים מורכבים, מלאים.

למה להשתמש Node.js ו- Express ביחד?

  • (ב) לשון בלתי מזוהמת: 1) JavaScript על החזית והחזרתו מפחית את המעבר ותאפשר שיתוף קוד (למשל, לוגיקה אימות, כלי רכב).
  • (ב) ⁇ :0) , ללא חסימת I/O:FIRLT:1 ; Node.js מטפלות רבות חיבורים מקבילים ביעילות ללא חסימה כבדה.
  • מערכת האקולוגית של LT:0Rich: NLT:1 מספק מאות אלפי חבילות, מנהגי מסד נתונים ועד ספריות אימות.
  • (ב) ⁇ :0) יכולות בזמן אמת: תמיכה ב-WebSockets באמצעות ספריות כמו FLT:0 משתלבת באופן טבעי עם אקספרס.

הקמת חברת הפקה-Ready Server

החל על ידי התקנת Node.js מ FLT:0 nodejs.orgFelo 1 לאחר ההתקנה, ליצור לוח פרויקט וראשי תיבות של החבילה.

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

התקן אקספרס כתלוי:

npm install express

לפיתוח, להתקין גם את ה-FLT:3 כדי להפעיל מחדש את השרת על שינויים בקובץ:

npm install -D nodemon

כעת, צור קובץ של 5 (ב) עם שרת מינימלי:

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}`);
});

שימו לב לשימוש ב-FLT 7 זה הופך את היישום לנייד על פני סביבות שונות – תרגול טוב ביותר לפריסה.

הוספת סביבת Variables

השתמש בחבילה (FLT:8) כדי לטעון את המשתנה של הסביבה מקובץ LT:9

npm install dotenv

יצירת קובץ:

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

ב[[1924]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]

require('dotenv').config();

דפוס זה שומר נתונים רגישים מתוך קוד הבסיס שלך וניהול תצורה פשטות.

המונחים: the heart of Express

פונקציות מיידיות הן אבני הבניין של לוגיקה יישום אקספרס.יש להם גישה לאובייקט הבקשה, אובייקט התגובה, ותפקוד ה- 15:15.הם יכולים לבצע קוד, לשנות את הבקשה / אחריות, לסיים את המחזור, או להתקשר אל המצע הבא.

מקרים נפוצים של שימוש כוללים logging, אימות, פיזור גופי בקשה, ולטפל שגיאות.

מובנה-In Middleware

אקספרס מספק מספר פונקציות של תוכנות מתווך:

  • (ב) , (ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) , (ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:18) - משמש קבצים סטטיים כמו תמונות, CSS, ו-JavaScript לצד הלקוח.

דוגמה ל JSON parsing:

app.use(express.json());

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

המונחים: middleware

צור לוגיקה ניתנת לחזרה על ידי כתיבת תוכנת הביניים שלך.לדוגמה, יומן בקשה:

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

app.use(logger);

סדר נושאים: תוכנות ביניים מבוצעות בסדר מוגדר תמיד.תמיד לשים את המודעות מידידי שגיאה אחרון, עם ארבעה פרמטרים:

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

Reting and RESTful APIs

אקספרס פעוט מפות HTTP שיטות ודרכים כדי להתמודד עם פונקציות.מבנה נקי משפר את יכולת המשיכה ואת הסקאלה.

המונחים:

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
});

שימוש ב- Express Router for Modularity

ליישומים גדולים יותר, לפיצול קווים לקבצים נפרדים באמצעות FLT:23 ליצור תיקיה (FLT:24 וקובץ ).

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;

ב[[1924]]

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

גישה זו שומרת על נקודת הכניסה שלך נקייה ודרכי התאגדות באופן הגיוני.

חיבור למסד נתונים

רוב ה backends צריך להתמיד בנתונים. Popular NoSQL ו-SQL מסדי נתונים משולבים היטב עם Node.js.

MongoDB עם Mongoose

התקן Mongoose, ODM עבור MongoDB:

npm install mongoose

התחבר בקובץ השרת שלך:

const mongoose = require('mongoose');

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

(הופנה מהדף ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

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);

השתמש במודל בתוואי שלך:

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 עם Node-postgres

עבור מסדי נתונים יחסיים, השתמש בחבילה (FLT:34):

npm install pg

צור בריכה ושאילתה:

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);
});

(ב) ,5 ,2KnexcioFLT) , 1 או ,2KnexcioFLT 3 עבור אינטראקציות מופשטות יותר.

המונחים: backend

לאחר שהגיבוי משרת נתונים באמצעות נקודות קצה API, JavaScript הקדמי שלך יכול לצרוך אותם באמצעות ה-FLT:37 או API או ספריות כמו Axios.

עקבו אחרי Express

נניח ש- API אקספרס שלך פועל על תסריט בצד הלקוח (למשל, תגובה, Vue או HTML רגיל) יכול לשחזר נתונים:

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));

כאשר החזית והחזרה נמצאים על נמלים או תחומים שונים, עליך לאפשר שיתוף משאבים קרוס-מקור (CORS) להתקין את החבילה (FLT:40:

npm install cors

השתמש בו כאמצעי זהירות:

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

לייצור, להגדיר מקורות ספציפיים:

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

אבטחה Best Practices

שילוב חוזר מציג חששות ביטחוניים.יישם את התרגילים האלה:

  • (ב) ⁇ :0) ⁇ : ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0) ,4 ,5 ,5 ,5 ,5 , .
  • (ב) ,0) , הוראת ה[[המאה ה-20]] ו[[1924]]
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ויקרא י"א: ויקרא י"ד: ויקרא י"ד ו') או "ה'" (ב)

דוגמא ל- Helmet:

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

דוגמה לצמצום קצב:

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

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

טעויות וקידוד

יישומי ייצור זקוקים לטיפול בשגיאות חזקות. צור מודעות בינונית מרכזית שמגיש שגיאות וחוזרת תשובות עקביות.

// 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);

(ב) ב[[1924]], [[1924]], [[1924]]]]]], [[1924]]]]

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

בדיקת האינטגרציה

כתוב בדיקות כדי לאמת את התנהגות הגב שלך כפי הצפוי.מסגרות בדיקות פופולריות כוללות Jest ו Mocha. עבור HTTP מבחנים, השתמש ב- FLT:0 Supertestmentir 1FLT 1

דוגמא ל Jest ו Supertest

התקנת תלות:

npm install -D jest supertest

צור קובץ מבחן (FLT: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);
 });
});

הערה: הפרדת הגדרת האפליקציה מהשרת ההאזנה למנוע התנגשות בנמל במהלך הבדיקות.יצוא האפליקציה והאזנה רק כאשר הקובץ פועל ישירות:

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

שיקולים של

כאשר אתה מפיץ את Node.jsexpress + backend, בצע את ההנחיות האלה:

  • (ב) כ"ד"א: כ"ד) כ"כ"ל, כמו ראש הממשלה2, כדי לשמור על יישום חי ולטפל בקבץ.
  • (ב) ,0) ,Set Environment VarientissFLT:1 על פלטפורמת האירוח (למשל, Heroku, DigitalOcean, AWS אלסטיאל Beanstalk).
  • (ב) ,0) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0) ,Use averse proxyveFLT:1 (Nginx, Caddy) עבור סיום SSL, צ'נג וראשי אבטחה.

דפוס פריסה משותף הוא לשמור על הגב וחזית כמו פרויקטים נפרדים, תקשורת באמצעות API על HTTPS. לחלופין, אתה יכול לשרת את הסימון לבנות קבצים באמצעות Express באמצעות Express באמצעות Express באמצעות FLT:59 ולטפל בכל הדרכים כדי לתמוך ב-fouting בצד הלקוח (למשל, נתב).

אופטימיזציה

Node.js הוא יחיד מוכן, אבל אתה עדיין יכול להשיג גבוה דרך עם אסטרטגיות נכונות:

  • (ב) ⁇ :0) ,Use Async/awaitFIRLT 1 (הראשונה) עבור כל פעולות I/O כדי למנוע חסימת לולאה האירוע.
  • (ב) ,0) תגובות ל[[1924]]
  • (ב) ,0) ,Cache תגובות תכופות ל-FLT:1 באמצעות חנויות זיכרון כמו Redis.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

דוגמה לדחיסה:

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

תקשורת בזמן אמת עם WebSockets

אקספרס משלב בצורה חלקה עם ההרחבה:63 כדי לאפשר תקשורת דו-צדדית, מונחת אירועים.זה אידיאלי עבור יישומי צ'אט, הודעות חיות וכלים משותפים.

npm install socket.io

צור את השרת עם תמיכה HTTP ו- WebSocket:

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}`));

המבוא יכול להתחבר לשרת אינטרנטי זה ולפלט / רשימה לאירועים באמצעות הספרייה (FLT:66).

מסגרות ותבניות מלאות

(ב) מעבר לאינטגרציה בסיסית, קבוצות רבות מאמצות מסגרות המשלבות את Node.js, Express, ומסגרת חזיתית לערימה של קוהרסיביות.הנפוצה ביותר היא ערימה:0merNigFLT:1 (MongoDB, Express, React, Node.js אחרים כוללים FLT:2MEVNFLT 3: 3 (Vue) ו-FIR5ng).

מחסניות אלה מאפשרות למפתחים לבנות יישומים מלאים ממסד נתונים ל-UI, לעתים קרובות עם מודלים משותפים וסוגים.לדוגמה, באפשרותך להגדיר את schemass Mongoose על גבי הגב ולהשתמש באותה לוגיקה אימות בחזית לאחר המרת ספריית הטופס.

מסקנה

הגדלת JavaScript עם Node.js ו- Express אינה רק על הפעלת קוד דומה בשני הצדדים - זה על מינוף הכוח המלא של המערכת האקולוגית של JavaScript לבנות יישומי אינטרנט מכובדים, חזקים וביצועים גבוהים.מהגדרה בסיסית לדפוסים מתקדמים כמו תוכנת ביניים, שילוב מסד נתונים, אימות ותכונות בזמן אמת, אקספרס מספק את הגמישות הדרושה כדי להתאים לדרישות מגוונות.

על ידי שליטה בטכניקות אלה, אתה יכול לחסל את חוסר ההתאמה בין backend ו Frontend, להאיץ מחזורי פיתוח, לפרוס יישומים בקנה מידה זה.עכשיו הוא הזמן ליישם תיאוריה: להתחיל פרויקט חדש, ניסוי עם מתווך, לחבר מסד נתונים, ולראות את האינטגרציה מגיע לחיים.