我正在开发一个项目,基本上会产生类似javascript的“源到源编译器”。实际上这只是一个问题,它是否会导致某种编译器。这就是我想要做的事情:
我以通用方式编写Web应用程序,并将其转换为特定于移动设备的应用程序。所以基本上它就像:
|Generic call| ====transformed to====> Device Specific Call
所以我有一组我定义的泛型调用(例如Foo.locateByGPS
),它们将被转换为特定于设备的本机调用的代码。所以订单如下:
编写应用程序:javascript与自己定义的通用代码混合
选择目标设备并将此应用程序提供给创建混合应用程序的“编译器”(带有Web部件的本机部分)。
在通用代码下面,所有其余内容都是在所有设备上运行的标准javascript代码(分别是这些设备上的所有浏览器/ Web视图)。
我是否为此转换构建了一个(源到源)编译器?
我是这个话题的新手,所以我非常感谢一些提示。
答案 0 :(得分:0)
我不会。如果使用函数,则可以正确封装所有特定于平台的代码。
现在你有两种可能性:
创建两个仅包含平台相关代码的脚本文件。 - >您编写两次平台特定功能。优点是,如果您只对一个平台感兴趣,则无需为两个平台加载代码。
或在每个函数中使用if子句。理想情况下,您可以使用feature-detection。这种方法似乎更具有前瞻性(超过2个平台?),并且更容易维护代码。 (对于一个地方的所有代码,小的更改更容易应用。)另一个优点是只有部分不同的函数可以共享一些代码。
function locateWithGPS() {
if (navigator.geolocation) {
// do something
} else {
// use a work-around
}
}