node.js - 如何使用jquery或angularjs在jade模板中创建弹出窗口

标签 node.js express pug

我正在使用带有 Jade 模板的 Express 框架。我的问题是我想添加一个弹出窗口。我有 jQuery 和 Angular。我尝试过nodejs的npm弹出窗口,但它不符合我的要求。我想在单击按钮时显示弹出窗口。

最佳答案

在我最近正在进行的一个项目中,需要一个确认弹出窗口来确认用户是否想要删除某些内容。由于这是唯一的客户端 UI 交互,因此迁移到 browserify 和 watchify 的开销远远大于所需的任务。 所以这不是使用 Angular 或 jquery,而是使用基于 NPM 的插件。

然而,它实现了使用 Node Express 和 Jade 创建服务器端 poups 的任务。

首先,在 npm 存储库中选择了一个弹出窗口插件。选择的是popupS,一个基于NPM的插件,它使用browserify来编译和使用。

该插件可以从以下位置获取: 对于 Node.js + Browserify 安装:

npm install popupS --save

但是目前使用 browserify 超出了范围,因此该插件是从 gitHub 存储库获取的。以下步骤说明如何使用 Jade、Express 和 Node 在服务器端代码中包含弹出窗口:

在 Node 应用程序根文件夹中找到 app.js 文件并确保存在如下代码片段:

var express = require('express');
var path = require('path');
var app = express();
app.use(express.static(path.join(__dirname, 'public')));

该行代码使用express.static 设置静态文件的文件夹。然后在Node应用程序根文件夹的public目录中,创建一个js文件夹。

然后:

cd /public/js
wget https://raw.githubusercontent.com/ChiefORZ/popupS/master/dist/popupS.min.js
cd ../css
wget https://raw.githubusercontent.com/ChiefORZ/popupS/master/css/popupS.min.css

然后在包含 Jade 文件的应用程序 View 中,找到应用程序的 index.jade 或 layout.jade 文件,即 bodyhead 标记所在的位置。 假设头部位于 layout.jade 中,在其中添加以下行:

link(rel='stylesheet', href='/stylesheets/popupS.min.css')
script(src="/js/popupS.min.js")

然后在需要出现弹出窗口的 Jade 文件中添加一个按钮,其中的 onClick 事件调用 js 函数,该函数又创建弹出窗口。以下代码显示了这一点:

script.
     function popup() {
         popupS.confirm({
             content: 'Do you want to delete #{user.userName}?',
             labelOk: 'Yes',
             labelCancel: 'No',
             onSubmit: function() {
                 window.location.href = "/users/removeUser/#{user._id}"
             },
             onClose: function() {
                 console.log(':(');
             }
        });
     }
td
button(onclick="popup()") Delete with conf

当用户单击“Delete with conf”按钮时调用该函数,然后显示一个弹出窗口,要求用户确认。如果用户确认浏览器被重定向到删除用户对象的路由,否则什么也不会发生。 弹出窗口如下所示: enter image description here

尽管 UI 逻辑不应该在 Jade 中,但现在只需要 20 行代码,应用程序中就可以弹出窗口,而无需使用 browserify 的开销!

我创建的原始博文在这里:Node Express Jade popups

关于node.js - 如何使用jquery或angularjs在jade模板中创建弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33799561/

相关文章:

javascript - 正文解析器不从表单读取数据

javascript - 带有 sqldb 服务的 Bluemix : Node. js 示例(VCAP_SERVICES 凭证)

javascript - 如何创建临时写入流?

javascript - 一旦在 node.js Web 服务器上生成图像(使用 express),显示图像的最简单方法是什么?

node.js - NodeJS - .save() 不是一个函数。无法通过 Mongoose 创建集合

templates - 从现有的 JS Node 上下文中编译 Jade

node.js - 使用 Node.js 复制和转换文件

node.js - 如何修复 expressJS 上的 UNMET DEPENDENCY 错误

express - 使用无服务器框架(AWS Lambda/网关)、Express、Mongoose/MongoDB Atlas 的应用程序频繁超时

javascript - 将值从 Node JS 转移到 Jade