我正在编写一些JavaScript代码来解析用户输入的函数(用于类似电子表格的功能).解析了公式后,我可以将其转换为JavaScript并eval()在其上运行以产生结果.
但是,eval()如果我可以避免它,我总是回避使用,因为它是邪恶的(而且,无论是对还是错,我一直认为它在JavaScript中更加邪恶,因为要评估的代码可能会被用户改变).
那么,什么时候可以使用它?
通常希望浏览器缓存资源 - JavaScript,CSS,图像等,直到有新版本可用,然后确保浏览器取代并缓存新版本.
一种解决方案是在资源的文件名中嵌入一个版本号,但是将以这种方式管理的资源放在一个带有修订号的目录中也可以做同样的事情吗?该文件的整个URL是否用作浏览器缓存中的密钥,还是仅仅是文件名本身和一些元数据?
如果从获取我的代码更改/r20/example.js到/r21/example.js,我可以肯定的是修订20 example.js被缓存,但现在修订21已经不是获取它,这就是缓存?
当使用PHP命名空间时,我处理的代码使用大量的命名空间别名,例如
<?php
namespace foo;
use bar\baz\qux as bazQux;
...
$a = new bazQux();
Run Code Online (Sandbox Code Playgroud)
是否可以配置Exuberant Ctags来索引这些命名空间别名的使用,以便我可以从使用别名的行(上面的实例化)直接跳转到真正的类?如果那是不可能的,那么可以实现的最佳折衷方案是什么?
我已经在某个地方看到了一个尚未集成的ctags补丁,它使用PHP tokenizer来支持PHP,而不是当前基于regex的实现; 如果可能的话,我想继续使用stock ctags,而不是自己修补和编译版本.
我最近遇到过这段JavaScript代码:
if (",>=,<=,<>,".indexOf("," + sCompOp + ",") != -1)
Run Code Online (Sandbox Code Playgroud)
我很好奇,因为写这个测试我会做的:
if (/(>=|<=|<>)/.test(sCompOp))
Run Code Online (Sandbox Code Playgroud)
这只是一种风格差异,还是其他代码的作者对优化有所了解,我不知道?或者也许有不同的理由这样做,或者不使用正则表达式......?
在我看来,使用它String.indexOf()有点难以阅读(但是,我对正则表达式很满意),但是有没有比写同等正则表达式"更好"的情况?
通过"更好"可能更快或更有效,(虽然显然取决于浏览器的JavaScript引擎),或者其他一些我不知道的原因.任何人都可以开导我吗?
我使用Eclipse PDT,Subclipse,viPlugin和JSEclipse进行PHP和JavaScript开发.这给了我一个很好的环境,但我想知道还有什么可能会更好.
您在Eclipse中安装了哪些插件来创建使用PHP和JavaScript进行开发的出色设置?您觉得哪些功能最有用?哪个不太好,什么能解决它们?
是否有人使用比Eclipse + PDT或Netbeans更稳定和/或更全面的功能?Komodo IDE如何比较?
使用Behat子上下文类我需要从主上下文中调用一个方法,例如$this->getMainContext()->fooBar().PhpStorm相当合理地警告我fooBar()不存在,因为它期望getMainContext()返回一个ExtendedContextInterface,而不是我的具体FeatureContext.
有没有办法注释我的子类告诉PhpStorm getMainContext()实际上返回我的具体类?
一种解决方案是覆盖getMainContext()只是为了有一个方法来添加我自己的PHPDoc,从而指定一个不同的返回类型,但添加一个方法只是为了在IDE中获得更好的代码感觉是可怕的.
顺便说一下,我知道这有点太乱了,从理论上讲,我的子语境不应该依赖于具有特定具体实现的主要语境; 实际上虽然Behat没有那么实用.
javascript ×4
coding-style ×2
php ×2
annotations ×1
browser ×1
caching ×1
eclipse ×1
eval ×1
filenames ×1
ide ×1
intellisense ×1
namespaces ×1
optimization ×1
phpstorm ×1
regex ×1
url ×1
vim ×1