The Enterprise Framework for JavaScript

Slides:



Advertisements
Similar presentations
3 的倍数的特征 的倍数有 : 。 5 的倍数有 : 。 既是 2 的倍数又是 5 的倍数有 : 。 12 , 18 , 20 , 48 , 60 , 72 , , 25 , 60 ,
Advertisements

7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
第十届中小学 NOC 活动 学生竞赛项目 -- 信息科技类 程序设计 培 训 讲 义 孙建华. 要点  程序设计是技术与艺术相结合的赛项。每一 个程序都来源于一种观念、一个想法、一项 创意,其实现水平有赖于技术手段,其优劣 有赖于用户检验。程序设计的过程是表达和 表现作者创造性的过程。  本赛项的要点是:用户群体需求定位恰当的.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
12年國教前哨站 談適性輔導及免試入學 12年國教前哨站 談適性輔導及免試入學 主講人:龍門國中王意蘭 校長 輔導主任 潘姿伶.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
武汉纺织大学传媒学院 cm.wtu.edu.cn
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
SVN的基本概念 柳峰
AngularJS -- 使用AngularJS进行开发
学习前的准备工作 讲师:burning.
管理信息结构SMI.
SQL Injection.
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
NAMO網頁製作教學簡報 講師:李惠茹.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第17章 网站发布.
第二章 Java语言基础.
By Sizzle引擎研究 By
❶云端下载 请根据自己的手机系统(支持IOS系统与Android系统)选择下述下载方式: 手机系统 应用搜索下载 二维码扫描下载 IOS系统
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
DevDays ’99 The aim of this mission is knowledge..
任务1-3 使用Dreamweaver创建ASP网页
实习前你需要知道的 PRESENTED BY Yisa.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
資料庫 靜宜大學資管系 楊子青.
蓝色图示 — 无动画版.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
C# 入门 2011级ACM班 张方魁.
$9 泛型基础.
Web安全基础教程
第四章 团队音乐会序幕: 团队协作平台的快速创建
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
Lightweight Data-flow Analysis for Execution-driven Constraint Solving
Web安全基础教程
第4章 Excel电子表格制作软件 4.4 函数(一).
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
Touch Github = Touch the World
郑 昀 应用开发事业部 神州泰岳 SIP多方会话消息 之实例讲解 郑 昀 应用开发事业部 神州泰岳
Delphi 7.0开发示例.
WEB321 使用ASP.NET2.0快速开发电子商务网站
28th Weekly Operation Report on DIRAC Distributed Computing
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
本节内容 结构体.
單元 理想運算放大器簡介 單元總結.
第 1 章 設計網頁的準備工作.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FrontPage 2000.
第十七讲 密码执行(1).
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Presentation transcript:

The Enterprise Framework for JavaScript Opa The Enterprise Framework for JavaScript

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.

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.

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

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

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

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

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

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

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

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

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

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

编码效率

Reference Opalang.org http://en.wikipedia.org/wiki/Opa_(programming_language)