2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Dynamice legens tabella cum unaquaque petitione certum effectum habet ictum, praesertim in magnis concurrentibus condicionibus. Ad hanc quaestionem solvendam, figuram formulam legere potes cum applicatione incipit, ac conformationem renova cum Formulae mutationibus, ut tabella tantum legi debet cum application incipit et Formulae mutationes, loco tabellae in singulis legendis. rogamus.
Variabilis globali uti potes, ut semita hodiernam templates cacheriam et solum variabilem ac limam innovare cum Formula mutatur.
Exemplar hic emendavit codicem:
project
│
├── views/
│ ├── template1/
│ │ └── index.njk
│ ├── template2/
│ │ └── index.njk
│
├── config/
│ └── templateConfig.json
│
├── app.js
templateConfig.json
Sample content{
"currentTemplate": "template1"
}
app.js
Sample codeconst express = require('express');
const nunjucks = require('nunjucks');
const path = require('path');
const fs = require('fs');
const app = express();
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));
// 全局变量,缓存当前模板路径
let currentTemplatePath;
// 读取配置文件中的当前模板路径
function loadTemplateConfig() {
const config = JSON.parse(fs.readFileSync(path.join(__dirname, 'config/templateConfig.json'), 'utf8'));
currentTemplatePath = config.currentTemplate;
}
// 配置Nunjucks环境
function configureNunjucks() {
nunjucks.configure(path.join(__dirname, `views/${currentTemplatePath}`), {
autoescape: false,
noCache: true,
express: app
});
}
// 初始化时加载配置
loadTemplateConfig();
configureNunjucks();
// 路由
app.get('/', (req, res) => {
res.render('index.njk', { title: 'Hello Nunjucks!' });
});
// 路由:更改模板路径
app.get('/change-template', (req, res) => {
const newTemplate = req.query.template;
if (newTemplate) {
currentTemplatePath = newTemplate;
const config = { currentTemplate: newTemplate };
fs.writeFileSync(path.join(__dirname, 'config/templateConfig.json'), JSON.stringify(config), 'utf8');
configureNunjucks(); // 更新Nunjucks配置
res.send(`Template changed to ${newTemplate}`);
} else {
res.send('No template specified');
}
});
// 启动服务器
const port = 3000;
app.listen(port, () => {
console.log(`服务器已启动,访问地址:http://localhost:${port}`);
});
currentTemplatePath
: Cache the current template iter.loadTemplateConfig
officium: Formulae configurationis lima, cum application incipit et viam ad global variabilem servabit.configureNunjucks
officium: Nunjucks configurare environment in fundamento template in via.loadTemplateConfig
etconfigureNunjucks
officium.Hoc modo, tabella et configuratione Nunjucks tantum legunt cum application incipit ac user mutat viam Formulae, vitando problema perficiendi tabellam in omni petitione legendi.