在 ejs 中使用节点模块/.js 函数
Using node modules/.js functions in ejs
我最近开始使用 JavaScript 和 Node,但在使用 .ejs 文件时遇到问题。
我正在尝试在我的页面中实现一个按钮,该按钮将一个字符串插入文本区域并运行一个函数来评估该字符串是否是 xml 代码(更准确地说是 Vast 标签,但那是不是重点。)
所以,我有这样的东西:
<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 文件,所以如果我尝试 require('xml2js') 它不会理解
- 我尝试使用 browserify 包,但我看不到它能正常工作
- 如果该文件在我的 public 资产文件夹中,我只能调用 file.js。 (实际上,我尝试访问的任何文件都会出现 404 页面未找到异常)
所以,我的问题是,是否有人对我可以在我的脚本中使用节点模块的方法有任何提示,或者如果可以在 file.js 中定义一个函数,然后调用此函数到脚本中,或者如果有人知道 browserify 是如何工作的以及它是否可以用来解决我的问题。
要检查文本区域中的字符串是否为 xml,您可以使用正则表达式。这将检查输入是否以
这是一个有效的 fiddle: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 的回复,但它并没有真正解决我的问题。
又找了几天,终于找到了browserify的使用方法,自己来解答一下吧。
首先,我必须创建一个 .js 文件,比如说 main.js,我在其中声明并定义了我想使用的所有函数,例如
Main.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())
}
})
}
然后,在终端中,我使用下面的命令将 Bundle 文件添加到我的 public 资源文件夹中:
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>
好吧,我想就是这样了。
谢谢你的帮助,再见
我最近开始使用 JavaScript 和 Node,但在使用 .ejs 文件时遇到问题。
我正在尝试在我的页面中实现一个按钮,该按钮将一个字符串插入文本区域并运行一个函数来评估该字符串是否是 xml 代码(更准确地说是 Vast 标签,但那是不是重点。)
所以,我有这样的东西:
<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 文件,所以如果我尝试 require('xml2js') 它不会理解
- 我尝试使用 browserify 包,但我看不到它能正常工作
- 如果该文件在我的 public 资产文件夹中,我只能调用 file.js。 (实际上,我尝试访问的任何文件都会出现 404 页面未找到异常)
所以,我的问题是,是否有人对我可以在我的脚本中使用节点模块的方法有任何提示,或者如果可以在 file.js 中定义一个函数,然后调用此函数到脚本中,或者如果有人知道 browserify 是如何工作的以及它是否可以用来解决我的问题。
要检查文本区域中的字符串是否为 xml,您可以使用正则表达式。这将检查输入是否以
这是一个有效的 fiddle: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 的回复,但它并没有真正解决我的问题。
又找了几天,终于找到了browserify的使用方法,自己来解答一下吧。
首先,我必须创建一个 .js 文件,比如说 main.js,我在其中声明并定义了我想使用的所有函数,例如
Main.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())
}
})
}
然后,在终端中,我使用下面的命令将 Bundle 文件添加到我的 public 资源文件夹中:
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>
好吧,我想就是这样了。 谢谢你的帮助,再见