在 ejs 中使用节点模块/.js函数

Using node modules/.js functions in ejs

本文关键字:模块 js 函数 节点 ejs      更新时间:2023-09-26

我最近开始使用JavaScript和Node,我在处理.ejs文件时遇到了麻烦。

我正在尝试在我的页面中实现一个按钮,该按钮在文本区域中插入一个字符串并运行一个函数来评估该字符串是否是 xml 代码(更准确地说是 Vast Tag,但这不是重点。

所以,我有这样的东西:

<div class="clear vastClass">
    <h3> Vast Tag </h3>
<div class="vastClass" hidden>
    <div>
        <p>Please validate your code!</p>
        <input type="button" id ="buttonVast" value="Validate">
    </div>
    <textarea id="vastTag" name="vastTag" class="form_creatives" value="">Insert you Vast Tag</textarea>
</div>
</div>
<script>
    $("#buttonVast").click(function(){
        // TODO
    }
</script>

所以这里有几个问题:

我正在尝试使用节点模块 xml2js 查看检查文本,我已经在线阅读了一些内容(我不知道他们是否正确)。 例如:

  • 浏览器正在运行 .ejs 文件,所以如果我尝试要求('xml2js'),它将无法理解
  • 我尝试使用浏览器化包,但我看不到让它工作
  • 我只能调用一个文件.js如果该文件在我的公共资产文件夹中。(实际上,我尝试访问的任何文件都会收到404页面未找到异常)

所以,我的问题是,如果有人对一种方法有任何提示,我可以在我的脚本中使用节点模块,或者 If 可以在文件中定义一个函数.js然后将这个函数调用到脚本中,或者如果有人知道浏览器是如何工作的,以及它是否可以用来解决我的问题。

要检查文本区域中的字符串是否为 xml,您可以使用正则表达式。这将检查输入是否以

这是一个工作小提琴:http://fiddle.jshell.net/mikemjharris/j1nL8rz0/

要检查 xml 的特定代码:

function checkXML () {
  var textToCheck = $('textarea').val();
  if( textToCheck.match(/'<'?xml /) ) {
    alert('this is xml!');
  } else {
    alert('not xml');
  }
}

感谢您@mikemjharris回复,但它并没有真正解决我的问题。

经过几天的搜索,我找到了如何使用浏览器,所以我会自己回答。

首先,我必须创建一个.js文件,比如main.js,在其中声明并定义了我想使用的所有函数,例如

主.js:

var xml2js = require('xml2js')
validateVast = function(vast){
    var parser = xml2js.Parser()
    parser.parseString(vast, function(err, result){
        if(result && !err){
            console.log(result)
        }
        else{
            console.log(err.toString())
        }
    })
} 

然后,在终端中,我使用以下命令将捆绑文件添加到我的公共资源文件夹中:

browserify folder/main.js -o public/js/xml2jsBundle

然后,在我的 html 文件中,我添加了该行

<script src="js/xml2jsBundle.js"</script>

然后能够在 html 的主体中调用我的函数,如下所示:

<body>
    <script src="js/xml2jsBundle.js"</script>
    <input type="button" value="Validate" class="bt_Add" onClick="validate()">
    <textarea id="vastTag" name="vastTag" class="form_creatives" value=""></textarea>
    <script type="text/javascript">
        function validate(){
            var vast = $("#vastTag").val()
            validateVast(vast)
        }
    </script>
</body>

嗯,我想就是这样。感谢您的帮助,再见