- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
此题只适用于Haxe <2.10
我知道 haxe 有一段时间了,但直到昨天才真正接触过它。出于好奇,我决定移植 showdown.js , markdown.pl 的 javascript 端口, 哈克。这非常简单,它生成的 javascript 似乎运行良好(编辑:如果您想实际查看它,请查看 here)。
但是,我注意到生成的代码会在全局命名空间中转储大量内容……更糟糕的是,它通过为未声明的标识符 赋值而不使用 var
关键字,所以它们是全局的,即使你用闭包包装整个东西。
例如……
if(typeof js=='undefined') js = {}
...
Hash = function(p) { if( p === $_ ) return; {
...
EReg = function(r,opt) { if( r === $_ ) return; {
...
我设法用 sed 清理了大部分,但我也被这样的东西困扰:
{
String.prototype.__class__ = String;
String.__name__ = ["String"];
Array.prototype.__class__ = Array;
Array.__name__ = ["Array"];
Int = { __name__ : ["Int"]}
Dynamic = { __name__ : ["Dynamic"]}
Float = Number;
Float.__name__ = ["Float"];
Bool = { __ename__ : ["Bool"]}
Class = { __name__ : ["Class"]}
Enum = { }
Void = { __ename__ : ["Void"]}
}
{
Math.__name__ = ["Math"];
Math.NaN = Number["NaN"];
Math.NEGATIVE_INFINITY = Number["NEGATIVE_INFINITY"];
Math.POSITIVE_INFINITY = Number["POSITIVE_INFINITY"];
Math.isFinite = function(i) {
return isFinite(i);
}
Math.isNaN = function(i) {
return isNaN(i);
}
}
这是一些非常讨厌的 javascript。
是否有不污染全局的 haxe 的分支或克隆?是否值得修改 haxe 源以获得我想要的东西,或者有人已经解决了这个问题?谷歌搜索并没有出现太多。我愿意接受任何建议。同时,我很想看看这东西会生成什么样的 PHP 代码...:D
以下是我尝试过的一些想法:
后处理
这是我简陋的构建脚本;它在剥离内容方面做得很好,但并没有捕捉到所有内容。我犹豫要不要删除对内置构造函数原型(prototype)的修改;我敢肯定那会破坏事情。修复所有问题可能有点困难,如果有人已经完成了这项工作,我不想开始...
haxe -cp ~/Projects/wmd-new -main Markdown -js markdown.js
echo "this.Markdown=(function(){ var \$closure, Float;" > markdown.clean.js;
sed "s/^if(typeof js=='undefined') js = {}$/if(typeof js=='undefined') var js = {};/g ;
s/^\([ \x09]*\)\([\$_a-zA-Z0-9]* = \({\|function\)\)/\1var \2/g ;
/^[ \x09]*\(else \)\?null;$/d ;
" markdown.js >> markdown.clean.js
echo "return Markdown}());" >> markdown.clean.js;
java -jar closure/compiler.jar --js markdown.clean.js \
--compilation_level SIMPLE_OPTIMIZATIONS \
> markdown.cc.js
--js-namespace 开关挽救局面
感谢 Dean Burge 指出 namespace 转换。这几乎解决了我的问题,只需要一点点帮助。这是我当前的构建脚本。我认为这捕获了所有全局变量...
NS=N\$
haxe -cp ~/Projects/wmd-new -main Markdown --js-namespace $NS -js markdown.js
# export our function and declare some vars
echo "this.markdown=(function(){var \$_,\$Main,\$closure,\$estr,js,"$NS"" > markdown.clean.js;
# strip silly lines containing "null;" or "else null;"
sed "/^[ \x09]*\(else \)\?null;$/d ;" markdown.js >> markdown.clean.js
# finish the closure
echo "return "$NS".Markdown.makeHtml}());" >> markdown.clean.js;
最佳答案
我使用 namespace switch on the compiler清理那些全局根类型。
关于javascript - 没有全局命名空间污染的 javascript 的 Haxe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3828423/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!