Presentation is loading. Please wait.

Presentation is loading. Please wait.

The Enterprise Framework for JavaScript

Similar presentations


Presentation on theme: "The Enterprise Framework for JavaScript"— Presentation transcript:

1 The Enterprise Framework for JavaScript
Opa The Enterprise Framework for JavaScript

2 What is Opa? Opa is an advanced application framework for JavaScript. All aspects are directly written in Opa: Frontend code, backend code, database queries and configuration. And everything is strongly statically typed.

3

4 Why Opa? Opa features unmatched, state-of-the-art code automation and verification algorithms. With Opa, you write applications faster and they run better from the first version. In particular, Opa provides high levels of safety and security - while running on the standard JavaScript stack: Node.js and MongoDB.

5 单一的语言 OPA是开发web应用的一种单一语言。也就是说,服务端和客户端的代码都是采用OPA语言编写的。 你可以在不用考虑客户服务端差异的情况下写出一个完整的web应用,OPA编译器会自动地为你发布代码并且管理所有的通讯。有时,你可能需要去调整编译器的选项(例如达到增强应用的性能的目的),在这种情况下,只需要使用诸如“client”、“server”这样的关键字就可以了。 数据库的代码也可以直接使用OPA语言编写,OPA支持主要的NoSQL数据库MongoDB和CouchDB,并且具有自己的内部数据库。内部数据库不需要进行任何的配置,因此尤其推荐初学者使用。

6 Hello world Server.start(Server.http, { title: "Hello" , page: function() { <>Hello, web!</> } } )

7 Opa的语法 Opa的语法源自于流行的编程语言:c,javascript

8 静态类型 OPA最重要特性之一是其类型系统。虽然OPA看起来像很多动态编程语言,但其实它是编译性语言,并且依赖于state-of-the-art类型系统。 OPA在编译阶段就进行类型检查,这表明在运行阶段不会出现类型错误。例如,下面的代码: 在编译阶段会报如下错误:

9 然而,不像C和Java,你不需要在任何地方都去注明变量的类型,因为OPA几乎可以推断出所有的应该属于的类型

10 在大多数情况下,即使你不提供类型信息,Opa也可以推断出应当的类型。然而,在某些情况下,如果你不提供类型信息,Opa编译器会给出“value restriction error”并拒绝编译。除了优化、注释说明、更强的类型检查之外,唯一需要提供类型信息的情况是数据库定义和值约束定义。 我们简单地说值约束是一种既安全有安全的方法,用于提醒你某个值没有足够的类型信息,来保证这个值不会被误用或者受到攻击。Opa编译器会检查这些可能存在的安全或安全漏洞并拒绝编译,直到你提供更为精确的类型信息。

11 return语句在哪? 在Opa中,使用最后语句返回的方式,也就是说,方法所执行的最后一个表达式即为方法的返回值。 这一点是Opa借鉴了函数式语言(实际上,Opa的大部分都是函数式的)。最初你可能会觉得这样会有所限制,但你很快就能适应它,甚至会开始考虑return语句所带来的很多弊端,就如同臭名昭著的goto语句一样。

12 添加样式 在Opa中,所有的样式都是通过层叠样式表(CSS)来进行定义的。 当然,你肯定会需要一些特定于应用的自定义的CSS。但是,你也可以使用一些标准的CSS来进行快速开发,这些CSS是预定义好的,并且也十分美观。在Opa中,只需要下面的语句就可以完成这个工作: import stdlib.themes.bootstrap

13 聊天室room在何处? 好问题,我们创建了一个名为room的网络,但并没有给出任何位置信息,所以到底聊天室在哪?在服5务器上?在某个客户端上?还是在数据库里面? 由于room被所有的用户所共享,因此,它当然在服务器上。但这个问题最好的回答是:你根本不需要知道它在哪。Opa回去处理这样的问题,并经过分析来决定什么放在服务器,什么放在客户端。后面的章节我们会看到Opa是如何从你写的的代码中提取和获取到这些信息的。

14 Wiki的安全问题 开发复杂Wiki的一个难点就是保证不受安全攻击。的确,由于一个用户编辑的内容可能会在另一个用户的浏览器上展示,因此就存在有用户在页面中隐藏JavaScript代码(或者Flash,Java代码),而被别的用户执行的可能。这就是著名的盗取验证的技术。 底层的Web技术是不区分JavaScript代码,文字和结构化数据的,然而Opa会区分,此外Opa还保证一个用户提供的数据是不能够被另一个用户解析的。 只要开发者不引入带有插入内容的<script>标签,那么就不会被恶意用户利用插入任意代码.

15 编码效率

16 Reference Opalang.org


Download ppt "The Enterprise Framework for JavaScript"

Similar presentations


Ads by Google