市面上常见的模板引擎很多,例如:Smarty、Jade、Ejs、Nunjucks 等,可以根据个人喜好进行选择。...koa-views、koa-nunjucks-2 等支持 Koa 的第三方中间件也可以自行选择。 本项目中,我们使用 koa-nunjucks-2 作为模板引擎。...koa-nunjucks-2 是基于 Nunjucks 封装出来的第三方中间件,完美支持 Koa2。...Nunjucks 介绍 首先我们需要了解 Nunjucks 的几个特性 简单语法 变量 {{ username }} {{ foo.bar }} {{ foo["bar"] }} 如果变量的值为...安装并运行 安装 koa-nunjucks-2: npm i koa-nunjucks-2 -S 修改 app.js,引入中间件,并指定存放视图文件的目录 views: const Koa = require
本节我们继续讲解nunjucks模板语法,使其不仅可以展示一行字符串,还可以展示更为丰富的网页效果。...本章我们只讲解常用的功能,如果需要更多的nunjucks模板功能,可以到[nunjucks中文文档](https://nunjucks.bootcss.com/templating.html)查阅 一、.../views/footer.html" ignore missing %} 7 8 {% endblock %} 五、课后练习 通过nunjucks模板制融职教育网站,功能如下所示: 首页导航效果需要使用模板继承功能
一,Nunjucks基本概念 Nunjucks是一个丰富强大的模板引擎。 模板引擎就是基于模板配合数据构造出链输出的一个组件。 尽可能情况下,我们都需要读取数据后渲染模板,然后呈现给用户。...简单来说,Nunjucks就实现了在后台服务器显示内容的模板。...二,♡egg-view-nunjucks插件 $ npm i egg-view-nunjucks --save 三,启用插件 1 // config/plugin.js 2 exports.nunjucks...= { 3 enable: true, 4 package: 'egg-view-nunjucks', 5 }; 四,渲染页面 用render渲染页面1 // controller /
目前市面上有很多模板引擎,这里我们选择一个功能完善,又容易上手的模板引擎:nunjucks 二、安装nunjucks 在koa框架下安装nunjucks需要两个第三方模块 koa-views:负责配置koa...的模板引擎 nunjucks:下载模板引擎 执行命令安装这两个模块 1 cnpm install --save koa-views 2 cnpm install --save nunjucks 三、配置模板引擎...1 //server.js 2 const Koa = require("koa"); 3 const nunjucks = require("nunjucks"); 4 const views...require("koa-views"); 5 const app = new Koa(); 6 app.use(views(__dirname + '/views', { 7 //将使用nunjucks...8 map: { html: 'nunjucks' } 9 })); 10 app.use(async ctx => { 11 //render方法渲染模板,第二个参数可以给模板传递参数
渲染页面逻辑 首先我们创建默认的错误页面模板文件 mi-http-error/error.html,这里采用 nunjucks 语法。 <!...另外,还需要引入 nunjucks 工具来解析模板。path 是 node 模块,我们只需从 npm 上安装nunjucks 即可。...安装 nunjucks 模块来解析模板文件: npm i nunjucks -S 修改 mi-http-error/index.js,引入 path 和 nunjucks 模块: // 引入 path...nunjucks 模块 const Path = require('path') const nunjucks = require('nunjucks') module.exports = ()...修改 mi-http-error/index.js,处理接收到的参数: const Path = require('path') const nunjucks = require('nunjucks'
一,Nunjucks基本概念 Nunjucks是一个丰富强大的模板引擎。 模板引擎就是基于模板配合数据构造出链输出的一个组件。 尽可能情况下,我们都需要读取数据后渲染模板,然后呈现给用户。...简单来说,Nunjucks就实现了在后台服务器显示内容的模板。...二,♡egg-view-nunjucks插件 $ npm i egg-view-nunjucks --save 三,启用插件 1 // config/plugin.js 2 exports.nunjucks...= { 3 enable: true, 4 package: 'egg-view-nunjucks', 5 }; 四,渲染页面 用render渲染页面 1 // controller
[wp_editor_md_6d9e4828ddf431bb8a90a1223fac1198.jpg] 模板渲染 在本例子中,使用egg-view-nunjucks作为插件,进行模板的渲染 安装插件 C...:\Users\Administrator\Desktop\untitled2\egg-example>npm i egg-view-nunjucks --save npm WARN acorn-jsx..."win32","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules\nunjucks...= { enable: true, package: 'egg-view-nunjucks' }; 修改总的配置文件 exports.keys = "_fduhuhrefguir83238uhfr..."; exports.view = { defaultViewEngine: 'nunjucks', mapping: { '.tpl': 'nunjucks',
2.5 模板引擎Nunjucks 我们选择Nunjucks作为模板引擎。Nunjucks是Mozilla开发的一个纯JavaScript编写的模板引擎,既可以用在Node环境下,又可以运行在浏览器端。...安装 npm i nunjucks 紧接着,我们要编写使用Nunjucks的函数render。怎么写?...方法是查看Nunjucks的官方文档,仔细阅读后,在app.js中编写代码如下: const nunjucks = require('nunjucks'); function createEnv(path...集成Nunjucks 集成Nunjucks实际上也是编写一个middleware,这个middleware的作用是给ctx对象绑定一个render(view, model)的方法,这样,后面的Controller...我们创建一个templating.js来实现这个middleware: const nunjucks = require('nunjucks'); function createEnv(path, opts
github.com/eggjs/examples/tree/master/${appInfo.name}`, }; config.view = { defaultViewEngine: 'nunjucks...', mapping: { '.tpl': 'nunjucks', }, }; // the return config will combines to EggAppConfig...: { enable: true, package: 'egg-view-nunjucks', }, }; export default plugin; 访问链接 http://127.0.0.1...maxAge: 1000 * 60 * 60 * 24 * 365 * 10, }, }; config.view = { defaultViewEngine: 'nunjucks...', mapping: { '.tpl': 'nunjucks', }, }; // the return config will combines to EggAppConfig
Koa = require('koa') const path = require('path') const bodyParser = require('koa-bodyparser') const nunjucks...= require('koa-nunjucks-2') const staticFiles = require('koa-static') const app = new Koa() const router.../public"))) app.use(nunjucks({ ext: 'html', path: path.join(__dirname, 'views'), nunjucksConfig...= require('koa-nunjucks-2') const staticFiles = require('koa-static') const miSend = require('..../public"))) app.use(nunjucks({ ext: 'html', path: path.join(__dirname, '..
/nunjucks/src/environment.js:563:19 at eval (eval at _compile (/path/to/myblog/node_modules/nunjucks...不过在报错中有这样一句话很关键: at eval (eval at _compile (/path/to/myblog/node_modules/nunjucks/src/environment.js:...633:18), :11:11) 是从nunjucks包中执行的,一个很蛋疼的事情是,我当时并不知道nunjucks实际上是一个模板引擎,以为是hexo实现的什么东西,于是决定尝试挖一挖...后记▸ 后面去提漏洞才发现nunjucks是独立的模板引擎,和Hexo没有什么直接关系,而且在2016的一篇文章中就已经提出了这个payload,挖重复了就很蛋疼。...看了看nunjucks的文档,它是一款类jinja2的模板,所以可能这个RCE的PoC也不会被修复而是被认为是正常特性,但是对于Hexo来讲还是有意义的。
nunjucks 模板引擎的参数顺序由原来的 preRender(nunjucks, env, config) 修改为 beforeRender(env, nunjucks, config)。...); exports.view = { type: 'nunjucks', // 默认的模板引擎为 nunjucks common: { //通用配置 viewPath: path.join...(think.ROOT_PATH, 'view'), sep: '_', extname: '.html' }, nunjucks: { // nunjucks 的具体配置...比如上面的配置文件中,配置了 nunjucks 和 ejs 二种模板引擎的详细配置,但具体使用时一种场景下肯定只会用其一种模板引擎。...= helper.parseAdatperConfig(viewConfig); // 获取 nunjucks 的配置,默认 type 为 nunjucks /** { type: 'nunjucks
toISOString"]`, which is undefined or falsey at Object.exports.prettifyError (H:\hexo\hexo\node_modules\_nunjucks...@3.0.1@nunjucks\src\lib.js:34:15) at H:\hexo\hexo\node_modules\_nunjucks@3.0.1@nunjucks\src\environment.js...:489:31 at new_cls.root [as rootRenderFunc] (eval at _compile (H:\hexo\hexo\node_modules\_nunjucks...@3.0.1@nunjucks\src\environment.js:568:24), 210:3) at new_cls.render (H:\hexo\hexo\node_modules...\_nunjucks@3.0.1@nunjucks\src\environment.js:482:15) at Hexo.module.exports (H:\hexo\hexo\node_modules
version}-{node_abi}-{platform}-{arch}.tar.gz","host":"https://cdn.npm.taobao.org/dist/fsevents"} [24/27] nunjucks...@^3.1.2 installed at node_modules/_nunjucks@3.1.3@nunjucks [25/27] swig-templates@^2.0.2 installed at...node_modules/_warehouse@2.2.0@warehouse execute post install 2 scripts... [1/2] scripts.postinstall nunjucks...@^3.1.2 run "node postinstall-build.js src" [1/2] scripts.postinstall nunjucks@^3.1.2 finished in 109ms
简介 nodejs搭建多页面服务端渲染 技术点 koa 搭建服务 koa-router 创建页面路由 nunjucks 模板引擎组合html webpack打包多页面 node端异步请求 服务端日志打印...解析html模板返回页面 2.了解koa中间件的使用 依赖 npm i nunjucks nunjucks中文文档 /* *我向项目目录下加入两个准备好的html文件 目录结构如下...*什么是中间件: 中间件就是在程序执行过程中增加辅助功能 *nunjucksMiddleware作用: 给请求上下文加上render方法 将来在路由中使用 */ const nunjucks...= require('nunjucks') const path = require('path') const moment = require('moment') let nunjucksEVN...= new nunjucks.Environment(new nunjucks.FileSystemLoader('views')) // 为nkj加入一个过滤器 nunjucksEVN.addFilter
正式)与机器人(即时),提测内容、次数、质量等写入数据库,系统本身也能追踪,作为后期效能评估的辅助 邮件推送 提测模块的具体实现代码,我们分为 3 块 发送邮件使用 nodemailer 邮件模板使用 nunjucks...const marked = require("marked"); // marked 转换 const nodemailer = require("nodemailer"); // 发送邮件 const nunjucks...= require("nunjucks"); // 模板引擎 const path = require("path"); // 邮箱配置初始化 const transporter = nodemailer.createTransport...}, }); const htmlModel = ({ storyMail, exitInfo, summitUser, iterationMail }) => { const html = nunjucks.render
http://localhost:3000/,得到如下反馈则表示 koa 项目创建成功 截屏功能 在截屏功能的选择上,我们选择了 puppeteer 作为无头浏览器,模板插件选择了更贴近 vue 语法的 nunjucks...安装对应的依赖 npm i koa koa-router npm i --save-dev nunjucks puppeteer npm i --save-dev @types/nunjucks 创建.../${link.name}.png`, fullPage: true }); } await browser.close(); } 创建 renderHtml.ts const nunjucks...= require('nunjucks') export const renderHtml = (tpl: string, params: object) => { const res = nunjucks.render
支持nunjucks 首先,安装依赖 npm install --save nunjucks 然后,添加如下配置 var nunjucks = require('nunjucks'); nunjucks.configure
领取专属 10元无门槛券
手把手带您无忧上云