Programming languages 现有的哪些语言与LunaScript最相似?
自从LunaScript发布()以来,我一直对它很好奇,我想在这里调查一下现有的哪些工具与它类似,特别是积极开发/维护的软件。从博客帖子: Lunascript应用程序指定从模型到视图或用户界面的数据模型和函数,并使用从用户输入到模型的处理程序函数进行注释。由此,Lunascript编译器生成了一个运行正常的Web 2.0应用程序——客户端JavaScript、服务器端SQL以及介于两者之间的一切——并完成了实时双向数据同步。无需编写单独的代码来帮助服务器确定哪些值需要发送给客户端:服务器可以通过模拟UI来完成这一任务。由于Lunascript应用程序仅指定在给定当前数据的情况下UI的外观(而不是在发生更改时UI的更新方式),因此不可能编写一个正确加载但在进行更改时不保持正确的UIProgramming languages 现有的哪些语言与LunaScript最相似?,programming-languages,Programming Languages,自从LunaScript发布()以来,我一直对它很好奇,我想在这里调查一下现有的哪些工具与它类似,特别是积极开发/维护的软件。从博客帖子: Lunascript应用程序指定从模型到视图或用户界面的数据模型和函数,并使用从用户输入到模型的处理程序函数进行注释。由此,Lunascript编译器生成了一个运行正常的Web 2.0应用程序——客户端JavaScript、服务器端SQL以及介于两者之间的一切——并完成了实时双向数据同步。无需编写单独的代码来帮助服务器确定哪些值需要发送给客户端:服务器可以通
感兴趣的主要功能是反应式编程/增量评估/双向数据绑定/你想叫它什么都行,它跨越了浏览器、应用服务器和关系数据库管理系统,很长一段时间以来,Rebol当然是从一个单一的高级程序为这些平台生成代码,但他们不知道在现实世界中如何使用它。不过,您可以在rebol中找到一个包含websocket实现的Web服务器。2011年10月7日更新:请参阅底部的我的外卖 概述
- ,直接受Lunascript的启发。这是我从你那里学到的。来自(有点老): 首先,在应得的地方赊账!本项目的概念灵感来源于与Justin Rosenstein的对话,他与Asana的Dustin Moskovitz和团队一起构建的语言脚本,以及与Misko Hevery的对话,他在谷歌构建的HTML编译器
- 大多数客户端JavaScript程序都必须修改页面内容,但Ur/Web是基于函数式反应式编程的。程序分配数据源,然后将页面描述为这些数据源的纯函数。当源更改时,页面将自动更改
- :来自Philip Wadler的团队 链路通过为所有三层提供单一语言,简化了阻抗失配问题。系统为每一层生成代码;例如,为浏览器将一些代码转换为Javascript,为服务器将一些代码转换为字节码,为数据库将一些代码转换为SQL
- : 在Swift方法中,应用程序代码是用Jif语言编写的,这是一种基于Java的语言,包括信息安全策略。源代码被自动划分为在浏览器中运行的JavaScript代码和在服务器上运行的Java代码。为了实现交互式性能,尽可能将代码和数据放在客户端。安全关键代码放在服务器上,用户界面代码放在客户端上。代码放置受到高级声明性信息流策略的约束,这些策略强烈地加强了服务器端信息的机密性和完整性。Swift编译器还可以选择在客户端和服务器上复制代码和数据,这对安全性和性能都有好处
<form l:onkeyup="{handler!Suggest(s)}">
Search: <input type="text" l:name="s" autocomplete="off"/>
</form>
<div id="suggestions"/>
<h3>New definition</h3>
<div id="add">
{addForm(handler)}
</div>
所以handler!建议
向处理程序发送建议
消息。请注意NewDef
处理程序也需要记住更新完成列表(通过调用suggest
,就像suggest
处理程序一样),以保持完成与数据库中的内容同步
suggest
函数要求服务器查询数据库,然后强制更新DOM:
fun suggest(s) client {
replaceChildren(format(completions(s)), getNodeById("suggestions"))
}
fun completions(s) server {
if (s == "") []
else {
query [10] {
for (def <-- defsTable)
where (def.word =~ /^{s}.*/)
orderby (def.word)
[def]
}
}
}
fun建议(s)客户端{
替换子项(格式(完成项)),getNodeById(“建议”))
}
趣味综合
<form l:onkeyup="{handler!Suggest(s)}">
Search: <input type="text" l:name="s" autocomplete="off"/>
</form>
<div id="suggestions"/>
<h3>New definition</h3>
<div id="add">
{addForm(handler)}
</div>
var handler = spawn {
fun receiver(s) {
receive {
case Suggest(s) -> suggest(s); receiver(s)
case NewDef(def) ->
newDef(def);
replaceChildren(addForm(self()), getNodeById("add"));
if (s <> "") suggest(s) else (); receiver(s)
}
}
receiver("")
};
fun suggest(s) client {
replaceChildren(format(completions(s)), getNodeById("suggestions"))
}
fun completions(s) server {
if (s == "") []
else {
query [10] {
for (def <-- defsTable)
where (def.word =~ /^{s}.*/)
orderby (def.word)
[def]
}
}
}