我正在尝试以 JavaScript 代码的形式获取一些用户输入,这些输入将包含在另一个页面中。但我面临的问题是,如果js代码中有任何语法错误,页面加载将突然停止。给最终用户留下损坏的页面。所以我打算停止将js代码嵌入到页面中,如果它有任何语法错误。
为此,我需要验证 php 脚本中的 js 代码,并根据语法错误决定是否在页面中包含 js 代码。
所以我的问题是,是否有任何其他方式/库可以离线运行并且在服务器中占用空间最小,以便我将其包含在我的 php 脚本中。类似 JS Lint 但不太冗长,也许它有 PHP 或任何现有 PHP 库的包装器。它只需要告诉我传递给它的字符串是否具有有效的 js 代码,没有语法错误。
欢迎提出任何建议以及实施指南。我是新手,所以非常欢迎任何指导。
我发现的一种方法是使用 Node js 命令
node -c script.js
仅当脚本中存在任何语法错误时,才会向控制台打印一条消息。但这又需要我将 node.js 安装到服务器中。因此,如果可能的话,我不想依赖任何额外的安装程序。我认为即使是本地二进制文件也可能会这样做。
为了满足在 PHP 环境中验证 JavaScript 代码的要求,而又不引入 Node.js 等严重依赖项,您可以考虑使用基于 PHP 的 JavaScript linter 或解析器。以下是一些您可能会觉得有用的方法和工具:
实施:
通过 Composer 安装:composer 需要 tedivm/jshrink 在 PHP 脚本中使用:
use JShrink\Minifier;
try {
$minifiedJs = Minifier::minify($yourJsCode);
// If no exception, the JS code is syntactically correct
} catch (Exception $e) {
// Handle syntax error
}
实施:
通过 Composer 安装:composer 需要 mck89/peast 在 PHP 脚本中使用: 使用 Peast\Peast;
try {
Peast::latest($yourJsCode)->parse();
// If no exception, the JS code is syntactically correct
} catch (Exception $e) {
// Handle syntax error
}