Qt QJSEngine导入js文件
Qt QJSEngine import js files
是否可以在 QJSEngine (QT 5.6) 中导入 javascript 文件?
示例 1:
plainTextEdit 中的文本:
.import "./jsimport.js" as Test
var x = Test.y;
console.log(x);
c++:
void MainWindow::on_pushButton_clicked()
{
QJSEngine engine;
engine.installExtensions(QJSEngine::AllExtensions);
QJSValue result = engine.evaluate(ui->plainTextEdit->toPlainText());
qDebug() << "isError:" << result.isError();
qDebug() << "resultString:" << result.toString();
if(result.hasProperty("lineNumber"))
qDebug() << "property lineNumber:" << result.property("lineNumber").toInt();
}
jsimport.js 文件中的文本:
var y = 42;
结果:
isError: true
resultString: "ReferenceError: Test is not defined"
property lineNumber: 2
示例 2:
PlainTextEdit 中的文本:
.import "./jsimport.js"
相同的 C++ 代码
结果:
isError: true
resultString: "SyntaxError: File import requires a qualifier"
property lineNumber: 1
由于最后一个错误,似乎有一些导入功能。
.import 语句不适用于 QJSEngine。
QJSEngine 只是一个简单的解释器,如果你想拥有一些 "import" 功能,你可以切换到 QQmlEngine,它建立在 QJSEngine 之上:
http://doc.qt.io/qt-5/qtqml-syntax-imports.html#qml-import-path
使用 QJSEngine,您基本上需要手动填充 js 全局对象(并且 QtCreator 语法检查器无法识别您在不同文件中使用的语句)。
是否可以在 QJSEngine (QT 5.6) 中导入 javascript 文件?
示例 1:
plainTextEdit 中的文本:
.import "./jsimport.js" as Test
var x = Test.y;
console.log(x);
c++:
void MainWindow::on_pushButton_clicked()
{
QJSEngine engine;
engine.installExtensions(QJSEngine::AllExtensions);
QJSValue result = engine.evaluate(ui->plainTextEdit->toPlainText());
qDebug() << "isError:" << result.isError();
qDebug() << "resultString:" << result.toString();
if(result.hasProperty("lineNumber"))
qDebug() << "property lineNumber:" << result.property("lineNumber").toInt();
}
jsimport.js 文件中的文本:
var y = 42;
结果:
isError: true
resultString: "ReferenceError: Test is not defined"
property lineNumber: 2
示例 2:
PlainTextEdit 中的文本:
.import "./jsimport.js"
相同的 C++ 代码
结果:
isError: true
resultString: "SyntaxError: File import requires a qualifier"
property lineNumber: 1
由于最后一个错误,似乎有一些导入功能。
.import 语句不适用于 QJSEngine。 QJSEngine 只是一个简单的解释器,如果你想拥有一些 "import" 功能,你可以切换到 QQmlEngine,它建立在 QJSEngine 之上: http://doc.qt.io/qt-5/qtqml-syntax-imports.html#qml-import-path
使用 QJSEngine,您基本上需要手动填充 js 全局对象(并且 QtCreator 语法检查器无法识别您在不同文件中使用的语句)。