The app structure generator Express
Step 1: Install Node.js and npm
npm init -y
Step 2: Install Express
npm install express
Step 3: Create the main app file (e.g., app.js
)
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
Step 4: Run the Express application
node app.js
Step 5: Install Nodemon (optional, for automatic server restart)
npm install -g nodemon
Step 6: Update package.json
to use Nodemon
"scripts": {
"start": "nodemon app.js"
}
Step 7: Install additional middleware (optional, as needed)
npm install <middleware-package-name>
Step 8: Create routes and controllers (as your application grows)
// In app.js
const userRoutes = require('./routes/user');
app.use('/user', userRoutes);
// In routes/user.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('User Route');
});
module.exports = router;
Step 9: Use a template engine (e.g., EJS) for dynamic views (optional)
npm install ejs
// In app.js
app.set('view engine', 'ejs');
app.get('/user/:id', (req, res) => {
res.render('user', { userId: req.params.id });
});
Step 10: Handle static files (e.g., CSS, images)
// In app.js
app.use(express.static('public'));
Step 11: Install a database driver (e.g., MongoDB, Mongoose)
npm install mongoose
// In app.js
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/your-database-name', { useNewUrlParser: true, useUnifiedTopology: true });
Step 12: Implement CRUD operations with the database (as needed)
// Example with Mongoose in routes/user.js
const express = require('express');
const router = express.Router();
const User = require('../models/user');
router.get('/', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {
res.status(500).send(error.message);
}
});
// Other CRUD routes...
Step 13: Handle errors globally (optional)
// In app.js
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something went wrong!');
});
Step 14: Testing (optional, using a testing library like Jest)
npm install --save-dev jest
// In package.json
"scripts": {
"test": "jest"
}
Step 15: Continuous Integration (e.g., with GitHub Actions, Travis CI)
# Example GitHub Actions workflow file (.github/workflows/node.js.yml)
name: Node.js CI
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
This completes the basic setup and development steps for an Express.js application. Additional steps and configurations may be needed based on the specific requirements and features of your application.