使用 Nodejs 和 pug 进行客户端模板化

2023-12-11

我正在构建一个网络应用程序,它在客户端构建了动态小部件。目前我使用nodejs和pug作为我的服务器端模板库,我喜欢pug的简单性。

我希望在服务器上有一系列小的 pug 文件,客户端可以将其用作构建块来构造用户所需的小部件。

我尝试使用此处找到的先前解决方案:客户端服务器端模板nodejs

然而,这个解决方案对于我想要的东西来说似乎有点矫枉过正。而且,看起来 ezel 项目不再维护,它已经 2 年没有更新了,而且仍然使用 jade(npm 给了我很多错误)。

我只是希望能够在浏览器中的 pug 中构建我的动态小部件。该页面似乎正是我想要的:https://pugjs.org/api/reference.html具体来说是 pug.renderFile('path/to/file.pug', options);函数看起来正是我想要用来动态构建我的小部件的(用户拥有关于如何构造/显示小部件的所有控件,因此浏览器需要动态构造 html 视图)

我的问题是依赖于:https://pugjs.org/js/pug.js并且需要在浏览器中执行 require('pug') 。我已经将 pug 安装为 package.json 的一部分。有没有更可靠的方法直接获取 pug.js?我对 Web 开发还是个新手,我的背景是 C++/Java,所以我不完全确定直接在浏览器中使用 pug.js 是否是最佳解决方案,或者是否有更好的标准解决方案。我发布的 stackoverflow 问题是我遇到的唯一一个非常相似的帖子。


我研究并测试了我真正喜欢的解决方案。 NPM 有一个很酷的软件包,名为 pug-cli。

https://www.npmjs.com/package/pug-cli

我修改了 npm start 脚本以执行以下操作:

pug -c -w --name-after-file -o public/js/views views/client/

这允许我做的是将我的客户端视图写入 view/client 文件夹中。一个任务正在后台运行,监视views/client/中的变化。更改后,它会将views/client/文件夹中的.pug文件编译为javascript并将其保存到public/js/views/中。然后在客户端代码中,您只需包含 Template.js 并在 js 中调用 Template(parameters) 即可。客户端不需要 pug.js。这是带有调试的,要关闭调试,请使用 -D 运行

例如,views/client/example.pug 将自动遵守 public/js/views/exampleTemplate.js 然后,您在客户端中要做的就是包含这个js文件,并调用 exampleTemplate(params) 来获取模板化字符串(您可以使用不同的参数任意调用它以获得不同的视图)。当服务器端的视图未知时,这允许我从客户端任意/动态地组合和构造视图。

我喜欢这种工作流程方法,但我愿意接受更好的建议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Nodejs 和 pug 进行客户端模板化 的相关文章

随机推荐

  • Google 应用脚本触发器 ID 格式

    我正在开发 Google 电子表格项目 通过脚本添加 删除基于时间的触发器 所有触发的触发器都将运行一个函数 该函数将检查其 Id 并相应地运行函数 我正在保存启动触发器并使用此代码保存它的 id function startTimer r
  • Altair 中的平行坐标

    我想做一个具有多个 y 轴的平行坐标图 我已经找到了如何在 Vega Lite 中做到这一点here但我还没有找到使用 Altair 的方法 只有一个非常简单的例子其中所有 y 轴都相同 有什么办法吗这个情节在牵牛星 请注意 这种图表不是
  • 真实用户ID、有效用户ID和保存用户ID之间的区别

    我已经知道真实用户ID 它是系统中用户的唯一编号 在我的系统上 我的uid is echo UID 1014 另外两个ID代表什么 以及有什么用有效用户id and 已保存的用户 ID我们在系统中的什么地方使用它们 区分真实用户 ID 和有
  • 在iOS7半透明导航栏中获取正确的颜色

    如何为 iOS 7 中的半透明导航栏获得正确的颜色 导航栏只是将给定的颜色调整为更亮的颜色 更改颜色的亮度或饱和度也无法提供正确的结果 有人有同样的烦恼吗 看看 Facebook 它似乎以某种方式起作用 他们有自己的颜色和半透明的导航栏 编
  • SSIS 循环遍历 Excel 工作表

    我正在使用SSIS2012 我试图将大约25个excel文件 每个文件包含大约70个 变量 表 导入到SQLserver2008中 我已经构建了它 以便它将循环遍历所有 Excel 工作表并导入第一个工作表 但这没有用 我如何循环所有 Ex
  • 将文件直接上传到 GAE 应用的 Google Cloud Storage

    我正在考虑从 Blobstore 切换到 Google Cloud Storage 以处理项目中的图像上传等问题 因为 Google 称 Blobstore 为 取代 在 Blobstore 中 多部分表单将直接提交 上传 到 Blobst
  • 在 ansible playbook 中使用 gitlab-ci vars

    我想使用 Ansible playbook 在 docker 容器内设置远程环境 该剧本将从 gitlab ci 运行 其中包含我在 Gitlab CI CD 配置中设置的变量 我怎样才能做到这一点 这是我想使用的模板 我该如何设置user
  • C 中的常量返回类型

    我正在阅读一些代码示例 它们返回了 const int 当我尝试编译示例代码时 出现了有关返回类型冲突的错误 所以我开始搜索 认为 const 是问题所在 当我删除它时 代码工作正常 不仅可以编译 而且按预期工作 但我从未能够找到专门与 c
  • 查找字符串中长度最大的所有单词

    我想从字符串中找到长度最大的所有单词 目前 结果只是第一个长度最大的 jumped1 而我想要它们全部 jumped1 jumped2 我该如何调整以下内容 function test str var newStr str split va
  • 同步多个 UITableView 实例的滚动位置

    我有一个项目 我需要在其中显示多个UITableViewiPad 上同一视图内的实例 它们也恰好被轮换 但我相当确定这是无关紧要的 用户应该不知道视图是由多个表视图组成的 因此 我想做到这一点 以便当我滚动一个表视图时 其他表视图也会同时滚
  • Hibernate Envers:跟踪 OneToMany 关系拥有方的修订

    我有两个经过审计的实体 A 和 B 实体 A 拥有实体 B 的集合 注释为一对多关系 将 A 的新实例插入数据库时 A 和 B 的所有行都处于同一修订版 假设为修订版 1 然后 A 上有更新 仅影响实体 B 的实例 级联类型为合并 因此 更
  • 如何使用 Puppeteer 访问 React 事件处理程序

    我不完全确定我明白我的要求 我希望有人能解释一下 我正在尝试在 NodeJS 上使用 Puppeteer 抓取网站 我已经选择了我需要的元素并访问它的属性 但是 我无法访问我需要的属性来提取我想要的信息 我想要的信息在下面的绿色框中 但是我
  • 为什么即使使用前向声明,我也不能在 BEGIN 块中调用稍后定义的 sub?

    这有效 use strict X xxxxxx sub X print shift 这会产生一个错误 use strict BEGIN X xxxxxx sub X print shift Error Undefined subroutin
  • 通过 REST 在超级账本上部署链代码时出现“获取链代码包字节时出错”

    我正在尝试通过 POST REST 在 hyperledger Bluemix 服务 上部署链码 链码 查询规范 jsonrpc 2 0 方法 部署 参数 类型 1 chaincodeID 路径 https github com romeo
  • 翻译微风验证消息

    改进我的示例 了解如何使用获得的元数据在淘汰赛中创建验证规则 http stackoverflow com questions 13662446 knockout validation using breeze utility 现在我使用微
  • 防止 GDB 单步执行函数(或文件)

    我有一些像这样的 C 代码 我正在使用 GDB 逐步执行 void foo int num void main Baz baz foo baz get 当我在main 我想步入foo 但我想跨过去baz get The GDB docs说
  • 如何推送(即刷新)发送到 TCP 流的数据

    RFC 793说TCP定义了一个 推送 函数来确保接收者收到数据 有时用户需要确保他们拥有的所有数据 提交给TCP已经传输了 为此目的一推 函数已定义 确保提交给 TCP 的数据是 实际传输的发送用户表明它应该是 推送给接收用户 推送会导致
  • 报亭应用程序需要推送通知吗?

    如果我提交一个不使用推送通知的报刊亭应用程序 而是在每次用户启动该应用程序时向我的服务器查询新内容 苹果会拒绝我的应用程序吗 IE 用户是否期望在所有报亭应用上推送 Thanks 不 Apple 的指南并不强制要求使用推送通知 并且您的应用
  • 在服务内调用 getSystemService

    我正在尝试编写一项在 Gear Live 上获取心率的服务 遵循此处的问题从 传感器 Samsung Gear Live 获取心率 如果我把这部分 Log d TAG prepare to call getSystemService mSe
  • 使用 Nodejs 和 pug 进行客户端模板化

    我正在构建一个网络应用程序 它在客户端构建了动态小部件 目前我使用nodejs和pug作为我的服务器端模板库 我喜欢pug的简单性 我希望在服务器上有一系列小的 pug 文件 客户端可以将其用作构建块来构造用户所需的小部件 我尝试使用此处找