如何在Angular控制器中使用Browserified npm包?

时间:2016-02-25 01:20:05

标签: javascript angularjs node.js pug browserify

我花了几个小时寻找一种方法来使这个(或任何东西)使用Browserify,但找不到任何对我的问题有用的教程或示例。几乎所有这些都只显示了如何屏蔽你的代码,但它们都没有显示如何在浏览器化后实际访问代码本身。也许这只是一件如此直截了当的事情,没有人费心去提及它,所以如果这实际上是一个愚蠢的问题我会道歉。

所以,我有这个应用程序实现用户名和密码验证。我使用'validator'npm包和OWASP推荐的密码复杂性包来验证节点中服务器端的输入。根据我对Browserify项目的理解,我应该能够浏览我需要这些软件包的模块,并在客户端加载它们。

我的customValidator.js模块现在看起来像这样:

var validator = require('validator')
var owasp = require('owasp-password-strength-test')

module.exports = {
  validator: validator,
  owasp: owasp,
  containsUsername: function(password, username) {
    return (new RegExp(username, 'i')).test(password)
  }
}

我也希望在客户端使用这些函数,最好是在AngularJS中,因为我使用Angular根据用户提供的当前(可能无效)输入来操作输入字段。

基本上我想要的是在客户端作为服务器端的对称输入验证,通过访问双方的相同模块,已经为客户端进行浏览化。

我运行了以下命令:

browserify --standalone customValidator.js > clientSideValidator.js

然后在我的jade模板中包含clientSideValidor.js脚本

  script(src='clientSideValidator.js')

我试图访问Angular中的函数和jade中的单独脚本,但每个函数总是返回undefined。如何在客户端代码中运行类似'validator.isAlphaNumeric($ scope.username)'的内容?

1 个答案:

答案 0 :(得分:2)

您需要为浏览器设置名称以将所有内容导出到。

尝试运行此选项并替换“myModuleName”'用你想要的名字命名

$ browserify customValidator.js --standalone myModuleName > clientSideValidator.js