如何把 AJAX 获取的数据传递到 Swig 模板中?

发布于 2022-09-12 02:23:10 字数 484 浏览 26 评论 0

老师们好!

现在构建工具用的 gulp,使用 gulp-swig 插件可以解析页面中的模板语法,就像下面这样:

const page = () => {
    return src('src/*.html')
        .pipe(plugins.swig({
            data: { name: '' },
        }))
        .pipe(dest('dist'));
};

但问题是模板中的数据都来自于 gulpfile.js,当前端用 AJAX 获取到的数据如何让模板文件使用呢?

我知道 art-template 有对应的客户端模板的使用,需要把模板放到 script 标签中,然后通过 template(模板ID,数据) 的形式进行拼接,但好像 Gulp 没有很好的编译 art-template 模板文件的插件。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏爱自由 2022-09-19 02:23:10

gulp 支持用 Promise 定义任务,所以这样的功能其实很容易实现,我好久没折腾 gulp 了,所以写一段伪代码供参考:

// 存储数据的变量
let localData;

gulp.task('fetch', () => {
  return axios.get('/api/data')
    .then(data => {
      localData = data;
    });
});

gulp.task('render', () => {
  return src('src/*.html')
    .pipe(swig({data})
    .pipe(dest('dist'));
});

gulp.task('default', series('fetch', 'render', taskDone => taskDone()));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文