在 Debian 上,借助现代 JavaScript 与稳健的工程实践,可以从前端性能、交互响应、自动化运维到可观测性四个维度显著提升用户体验。
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
entry: './src/index.js',
output: {
filename: '[name].[contenthash].js',
path: path.resolve(__dirname, 'dist'),
},
mode: 'production',
optimization: {
minimize: true,
minimizer: [new TerserPlugin()],
splitChunks: { chunks: 'all' },
},
module: {
rules: [
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, 'css-loader'],
},
],
},
plugins: [new MiniCssExtractPlugin({ filename: '[name].[contenthash].css' })],
};
上述做法可显著缩短 TTFB/FP/FCP/LCP,提升交互流畅度与离线可用性。const cron = require('node-cron');
const { exec } = require('child_process');
const fs = require('fs');
const path = require('path');
const backupDir = '/path/to/backup';
const sourceDir = '/path/to/source';
if (!fs.existsSync(backupDir)) fs.mkdirSync(backupDir, { recursive: true });
cron.schedule('0 2 * * *', () => {
const ts = new Date().toISOString().replace(/:/g, '-');
const file = path.join(backupDir, `backup-${ts}.tar.gz`);
exec(`tar -czvf ${file} ${sourceDir}`, (err, stdout, stderr) => {
if (err) console.error('备份失败:', err.message);
else if (stderr) console.error('备份错误:', stderr);
else console.log('备份成功:', stdout);
});
});
[Unit]
Description=Automate JS Tasks
After=network.target
[Service]
ExecStart=/usr/bin/node /path/to/your_script.js
Restart=always
User=your_username
[Install]
WantedBy=multi-user.target
之后执行:sudo systemctl daemon-reload && sudo systemctl enable --now automate.service,并用 journalctl -u automate.service -f 实时查看日志。const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [new winston.transports.File({ filename: '/var/log/nodejs_system.log' })],
});
logger.info('服务启动', { pid: process.pid });
sudo journalctl -u automate.service -f;前端异常可通过 Sentry/Bugsnag 上报,形成前后端一体化可观测性。