Node.js 借助art-template进行后端渲染并呈现页面到前端


一、总体思路

写好前端页面, 然后在前端common.js文件用ajax向后端发送请求;

在server.js中配置art-template模板的取用路径, 相关options;配置body-parser以正确解析前端发来的数据;

然后做后端路由, 先在"controller/index"中配置各条路由活跃后需触发的方法(即自定义路由中间件), 然后在"router/index"挂载到express的路由对象router:

准备后端数据.

配置art模板文件.

抽离路由中间件(当然, 不抽离也是可以的);


二、前端在common.js发送请求

art-template既能在Node.js环境下运行,也能在浏览器环境下运行
art-template提供给前端使用的三种渲染方法:

语法 说明
template(filename, data); 基于模板名渲染模板, 但参数不需要template对象;
template.compile(source, options); 将模板源代码编译为函数
template.render(source, data, options); 将模板源代码编译成函数并立即执行

因为浏览器不支持文件系统, 所以template三个渲染方法都不支持传入文件路径.
因为这是在前端, 我们不能直接用require()方法, 需要去art-template官网拿到template-web.js从html页面< script src>引入才能在前端正常使用art-template;

当然, 也只能使用它们提供给前端的方法.


$.ajax({
   
  url: '/api/list',
  success(result) {
   
    let templateStr = `
      <ul>
        {
    {each data}}
          <li>{
    {$value}}</li>
        {
    {/each}}
      </ul>
    `
    //用到art-template API提供的循环语法

    let html = template.render(templateStr, {
   
        //"template"是客户端的template对象
      data: result.data
    })
    $('#list').html(html)
  }
})

三、server.js相关配置

在server.js中进行art-template和body-parser相关的配置.

1.引入依赖

const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const router = require('./router/index');
const path = require('path');

2.body-parser相关配置

body-parser插件可以在中间件中对传入的请求体进行解析, 顾名思义的话, body指的是请求的"身体body", 而"parser"的中文在计算机领域原本就有语法分析程序,句法分析程序之意.

但其实"parser"指的是一种过程, 一般是将某种数据从一种结构转换为另一种数据结构的过程.

app.use(bodyParser.urlencoded({
    extended: false }))
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一个使用art-template模板引擎,后端使用app.all接口,实现文章发布功能的前后端代码。需要注意的是,为了保证代码的可读性和可维护性,我将前后端代码分别放在不同的文件中,你需要将它们组合起来使用。 首先是后端代码,使用了express框架和mysql数据库,如下所示: ```javascript const express = require('express'); const mysql = require('mysql'); const bodyParser = require('body-parser'); const template = require('art-template'); const app = express(); // 配置body-parser中间件 app.use(bodyParser.urlencoded({ extended: false })); // 配置mysql连接 const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '123456', database: 'test' }); connection.connect(); // 配置模板引擎 template.config('base', ''); template.config('extname', '.html'); app.engine('.html', template.__express); app.set('view engine', 'html'); // 处理GET请求,返回文章发布页面 app.get('/post', function (req, res) { res.render('post'); }); // 处理POST请求,将文章内容插入到mysql数据库中 app.post('/post', function (req, res) { const title = req.body.title; const content = req.body.content; const sql = 'INSERT INTO posts (title, content) VALUES (?, ?)'; connection.query(sql, [title, content], function (error, results, fields) { if (error) throw error; res.send('发布成功!'); }); }); app.listen(3000, function () { console.log('Server started at http://localhost:3000'); }); ``` 在这段代码中,我们使用了express框架来搭建服务器,使用了mysql模块来连接mysql数据库。在处理GET请求时,我们使用res.render方法来渲染post.html模板。在处理POST请求时,我们从req.body中获取文章标题和内容,然后将其插入到mysql数据库中。 接下来是前端代码,使用了art-template模板引擎,如下所示: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>发布文章</title> </head> <body> <h1>发布文章</h1> <form action="/post" method="post"> <div> <label for="title">标题:</label> <input type="text" id="title" name="title"> </div> <div> <label for="content">内容:</label> <textarea id="content" name="content"></textarea> </div> <button type="submit">发布</button> </form> </body> </html> ``` 在这段代码中,我们使用了art-template模板引擎来渲染发布文章页面。在表单中,我们将提交地址设置为"/post",并将提交方法设置为"post",这样就可以触发后端的POST请求处理函数了。 将这两段代码保存在不同的文件中,比如后端代码保存为app.js,前端代码保存为post.html,然后在命令行中进入到代码所在的目录,执行以下命令: ``` npm install express mysql body-parser art-template --save ``` 这个命令会安装所需的模块。然后,执行以下命令启动服务器: ``` node app.js ``` 在浏览器中输入http://localhost:3000/post,就可以看到发布文章页面了。在填写文章标题和内容后,点击发布按钮,就可以将文章内容插入到mysql数据库中了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值