Dart、深入浅出coffeescriptt、TypeScript 和 JavaScript 哪种最适合专门...

当前位置: >
TypeScript 强类型 JavaScript
Rafy Web 框架选型(2)
时间: 14:20
作者:哲学驱动设计 - 胡庆访
注意到,为了更好地解决开发过程中的上述问题。我们不得不人为地添加了一个《Javascript 类库开发规范》。该文档中的内容其实还是约定了一些封装、继承、多态的编写约定(ExtJS 给出的面向对象类型系统同样不完美)、以及一些代码的规范。这些问题,其实完全可以从语言、工具的角度解决,但是我们不得不人工约定、人工检查!
虽然 ExtJs4 大体上解决了面向对象设计的问题。但是由于重构困难,编写低效,导致 Rafy.js 的第一个版本只写了几千行,就已经感觉到维护起来很吃力了。
TypeScript
上面说了这么多,无非就是想表达:强类型很重要、重构很重要、工具很重要。而这些正是 TypeScript 语言设计的主要目标:“As we look to the 2.0 release, we 're focusing on two goals in addition to our main goal of bringing good tooling to JavaScript development. The first is to align with ES6…….“
先来说明一下,TypeScript(强类型 JavaScript)的优势:
更好的开发工具:支持重构、代码自动完成、代码导航、编译检查(静态代码分析:显示警告和错误)、程序包管理……
更好的语言特性:类型指定、泛型、面向对象支持。
兼容原生的 JavaScript 。
这正是我想要的东西,也是开发大型 JS 项目的利器。
但是,TypeScript 并不适应于所有的开发人员、所有的项目,下面是 TypeScript 适应的场景:
适应较大、复杂的项目。例如 SinglePageApplication、大型 JS 框架、前端游戏。
需要支持面向对象设计、高可重用性、组件化开发的 JS 代码。
下面是 TypeScript 不适应的场景:
一些简单的、不需要 OOD、灵活性高、动态性高的代码就不适合选择 TypeScript。例如一般性的 Web 应用或站点的前端开发,这种页面级的逻辑往往编写在页面中,即简单,也不需要 OOD;再如,JQuery 框架的开发,这种框架的目标是灵活、方便、动态,而不是面向对象,所以也不太适合,所以 JQuery 框架应该不会使用 TypeScript 来重写。
目前,TypeScript 已经发布了 1.4 版本。打开 Visual Studio 2013 的扩展管理器,即可安装:
接下来的计划
接下来,我将使用 TypeScript 来把 Rafy.js 重新编写。在正式改 Rafy.js 之前,我还会把之前做的这个 Web 游戏《Javascript 坦克游戏》改造一下试试。
敬请期待。
相关文章:
《TypeScript MSDN Blog》
《TypeScript 官网》
《TypeScript 在线试用》
《Dart、CoffeeScript、TypeScript 和 JavaScript 哪种最适合专门学习?》
《为何TypeScript是任何事情的答案?》
下一篇:没有了TypeScript 强类型 JavaScript – Rafy Web 框架选型
今天看到了
的消息。与同事们对 TypeScript 展开了讨论。本文记录一些个人的想法。
理想的 JavaScript 开发模式
其实早在 TypeScript 发布早期的时候,我就已经开始关注这个语言。因为在2012年初时,我需要为 Rafy/OEA 平台选型编写 Web 端自动界面生成框架:Rafy.js。而这个客户端框架需要基于一些流行的 JS 库来进行开发,当时选型的重点就是选择哪一个基础框架。
当时,我期望能找到一种可以编写大型 JavaScript 框架程序的开发模式。理想情况下,这种开发模式需要:
支持面向对象设计。无疑,面向对象设计方法依然是当下最重要的设计方法。.NET、Java、C++ 等都是面向对象的语言。封装、继承、多态,大大的提高了程序的可重用性、可维护性、灵活性。所以,支持面向对象是大规模框架开发的必要条件。
支持快速重构。我认为重构是高级开发者必备的一个非常重要的能力。没有不变的完美设计,只有不断进步的设计。框架中的依赖关系、调用关系往往比较复杂,虽然外部的接口要尽量保持稳定、兼容,但是框架内部的接口却会经常变动。而框架中动辄上万行、不重复的代码,如果没有对重构的支持,很难想象如何维护好这么多的代码。
编译时错误检查、程序包管理、高效的代码提示&&一说到代码的可维护性,可能我们都是在说程序本身的设计。但是开发工具的提升,也能大大提升开发者的开发效率,以及对程序代码的维护成本。所以上述的这些提升开发效率的功能,对于开发大型程序来说,也是必要的。
上面说的这些要求,对于强类型的 .NET、Java 开发来说,其实都是最基本的。但是,对于弱类型的动态语言 JavaScript 来说,却不是易事。弱类型、动态的特性,导致如果不到运行时,就很难确定一个变量的具体类型,所以也就很难提供代码提示、重构等。从我开发 JavaScript 的第一天开始,我就一直被这些问题困扰,希望未来有一天能有技术解决它们。
Rafy.js 的基础框架选型
当时在编写 Rafy Web 前端框架时,为了解决上述的问题,我挑选了几个方案。其中一个就是 TypeScript!我经过试用后发现,强类型的 JavaScript,确实可以解决这些困扰。但无奈的是,当时的 TypeScript 只是一个刚出生的婴儿,版本号 0.8,连第一个正式版本都没有发布,实在不敢用在真实项目上,由于项目的时间要求,所以不得不放弃了这个语言。
此外,我也考察了几个 JS 框架,最终选定了 ExtJs 4。一是因为我要做的是 SinglePageApplication 的 Web 界面框架,而 ExtJs 4 中带了大量的界面控件,非常方便使用;其次,ExtJs 4 提供了客户端的实体模型,这可以与 Rafy 服务端实体可以更好地结合起来。更重要的是,ExtJs 4 带来了全新的,这解决了面向对象设计的基础设施问题。虽说如 prototype.js 等其它框架也或多或少地支持了部分的面向对象设计,但是 ExtJs4 的类型系统,无疑是支持得最全面的:命名空间、封装、继承、接口、静态、单例、类型引用管理。所以,Rafy.js 最终是基于 ExtJs4 来构建的。
下面是当时 Rafy.js 开发完成后的框架类截图:
注意到,为了更好地解决开发过程中的上述问题。我们不得不人为地添加了一个《Javascript 类库开发规范》。该文档中的内容其实还是约定了一些封装、继承、多态的编写约定(ExtJS 给出的面向对象类型系统同样不完美)、以及一些代码的规范。这些问题,其实完全可以从语言、工具的角度解决,但是我们不得不人工约定、人工检查!
虽然 ExtJs4 大体上解决了面向对象设计的问题。但是由于重构困难,编写低效,导致 Rafy.js 的第一个版本只写了几千行,就已经感觉到维护起来很吃力了。
TypeScript
上面说了这么多,无非就是想表达:强类型很重要、重构很重要、工具很重要。而这些正是 TypeScript 语言设计的主要目标:&As we look to the 2.0 release, we 're focusing on two goals in addition to our main goal of bringing good tooling to JavaScript development.& The first is to align with ES6&&.&
先来说明一下,TypeScript(强类型 JavaScript)的优势:
更好的开发工具:支持重构、代码自动完成、代码导航、编译检查(静态代码分析:显示警告和错误)、程序包管理&&
更好的语言特性:类型指定、泛型、面向对象支持。
兼容原生的 JavaScript 。
这正是我想要的东西,也是开发大型 JS 项目的利器。
但是,TypeScript 并不适应于所有的开发人员、所有的项目,下面是 TypeScript 适应的场景:
适应较大、复杂的项目。例如 SinglePageApplication、大型 JS 框架、前端游戏。
需要支持面向对象设计、高可重用性、组件化开发的 JS 代码。
下面是 TypeScript 不适应的场景:
一些简单的、不需要 OOD、灵活性高、动态性高的代码就不适合选择 TypeScript。例如一般性的 Web 应用或站点的前端开发,这种页面级的逻辑往往编写在页面中,即简单,也不需要 OOD;再如,JQuery 框架的开发,这种框架的目标是灵活、方便、动态,而不是面向对象,所以也不太适合,所以 JQuery 框架应该不会使用 TypeScript 来重写。
目前,TypeScript 已经发布了 1.4 版本。打开 Visual Studio 2013 的扩展管理器,即可安装:
接下来的计划
接下来,我将使用 TypeScript 来把 Rafy.js 重新编写。在正式改 Rafy.js 之前,我还会把之前做的这个 Web 游戏《Javascript 坦克游戏》改造一下试试。
敬请期待。
相关文章:
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
Web框架选型思考 经过漫长的商务折磨,终于确定了自己平台规划负责人的角色,任务非常明确:采用开源技术进行组装,开发一个具备业务含义.能够进行快速开发的软件平台. 现有项目的运行情况让我认识到了一点:在持久层与业务逻辑的相对成熟的情况下,WEB层的工作最为繁重,哪怕是引入了Tiles改善布局也如此.Str ...
1.1.界面使用脚本语言有html5,php5,css3,js动态库jquery等
1.2.html采用技术为最新html5技术,html5生成的页面在phone.pad.Phablets.pc也可方便操作,配合公司云通讯的实施和开展.
1.3.关于开源php框架
1.3.1.52framework框架 http://www.52fra ...
目前,几乎所有的富Web应用程序都依赖一套UI管理,程序库或框架(或工具包),他们不仅简化了应用程序开发,他们还提供兼容的.可靠的及很强交互性的用户界面.除此之外您会请求哪些呢? 当前,广泛应用的Web用户界面框架已经覆盖了各种不同的语言 - 今天我将目标聚焦在JavaScript的Web用户界面. 并不是所有的库都适合于每一个项目,但大多数的开发者依然 ...
/art/759.htm
全 Javascript 的 Web 开发架构:MEAN 引言 最近在Angular社区的原型开发者间,一种全Javascript的开发架构MEAN正突然流行起来.其首字母分别代表的是:(M)ongoDB——NoSQL的文档数据库,使用JSON风格来存储数据 ...
基于NodeJS的14款Web框架
23:28 作者: NodeJSNet 来源: 本站 浏览: 1,399 次阅读 我要评论暂无评论 字号: 大 中 小 摘要: 在几年的时间里,Node.js逐渐发展成一个成熟的开发平台,吸引了许多开发者.有许多大型高流量网站都采用Node.js进行开发,像PayPal,此外,开发人员还可以使用它来开 ...
第四章 模板 在前一章中,你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python 代码之中. def current_datetime(request): now = datetime.datetime.now() html = &&html&&body&It is now
简介 15 年前,许多人都使用 Perl 和 ColdFusion 之类的工具构建网站.我们经常编写可以在页面顶部查询数据库的脚本,对数据应用必要的转换,以及在同一个脚本底部显示数据.这类架构适合于向网站添加简单的 &Contact us& 表单.然而,随着应用程序变得更加复杂,这种方法无法进行相应的扩展来处理更大的复杂问题.大部分 We ...
&大脚 Bigfoot&是一款基于 JEE 平台研发的 Web 框架,继承了 Java 平台的高效.安全.稳定.跨平台等诸多优势,但却摒弃了传统 SSH 企业级架构所带来的庞大和臃肿,汲取了 PHP 的简洁和方便,非常适合互联网中小型网站的应用.Bigfoot 是真正的开源.真正的免费,其代码直观.简洁,功能方面简单实用.该系统没有去做审 ...今天看到了
的消息。与同事们对 TypeScript 展开了讨论。本文记录一些个人的想法。
理想的 JavaScript 开发模式
其实早在 TypeScript 发布早期的时候,我就已经开始关注这个语言。因为在2012年初时,我需要为 Rafy/OEA 平台选型编写 Web 端自动界面生成框架:Rafy.js。而这个客户端框架需要基于一些流行的 JS 库来进行开发,当时选型的重点就是选择哪一个基础框架。
当时,我期望能找到一种可以编写大型 JavaScript 框架程序的开发模式。理想情况下,这种开发模式需要:
支持面向对象设计。无疑,面向对象设计方法依然是当下最重要的设计方法。.NET、Java、C++ 等都是面向对象的语言。封装、继承、多态,大大的提高了程序的可重用性、可维护性、灵活性。所以,支持面向对象是大规模框架开发的必要条件。
支持快速重构。我认为重构是高级开发者必备的一个非常重要的能力。没有不变的完美设计,只有不断进步的设计。框架中的依赖关系、调用关系往往比较复杂,虽然外部的接口要尽量保持稳定、兼容,但是框架内部的接口却会经常变动。而框架中动辄上万行、不重复的代码,如果没有对重构的支持,很难想象如何维护好这么多的代码。
编译时错误检查、程序包管理、高效的代码提示&&一说到代码的可维护性,可能我们都是在说程序本身的设计。但是开发工具的提升,也能大大提升开发者的开发效率,以及对程序代码的维护成本。所以上述的这些提升开发效率的功能,对于开发大型程序来说,也是必要的。
上面说的这些要求,对于强类型的 .NET、Java 开发来说,其实都是最基本的。但是,对于弱类型的动态语言 JavaScript 来说,却不是易事。弱类型、动态的特性,导致如果不到运行时,就很难确定一个变量的具体类型,所以也就很难提供代码提示、重构等。从我开发 JavaScript 的第一天开始,我就一直被这些问题困扰,希望未来有一天能有技术解决它们。
Rafy.js 的基础框架选型
当时在编写 Rafy Web 前端框架时,为了解决上述的问题,我挑选了几个方案。其中一个就是 TypeScript!我经过试用后发现,强类型的 JavaScript,确实可以解决这些困扰。但无奈的是,当时的 TypeScript 只是一个刚出生的婴儿,版本号 0.8,连第一个正式版本都没有发布,实在不敢用在真实项目上,由于项目的时间要求,所以不得不放弃了这个语言。
此外,我也考察了几个 JS 框架,最终选定了 ExtJs 4。一是因为我要做的是 SinglePageApplication 的 Web 界面框架,而 ExtJs 4 中带了大量的界面控件,非常方便使用;其次,ExtJs 4 提供了客户端的实体模型,这可以与 Rafy 服务端实体可以更好地结合起来。更重要的是,ExtJs 4 带来了全新的,这解决了面向对象设计的基础设施问题。虽说如 prototype.js 等其它框架也或多或少地支持了部分的面向对象设计,但是 ExtJs4 的类型系统,无疑是支持得最全面的:命名空间、封装、继承、接口、静态、单例、类型引用管理。所以,Rafy.js 最终是基于 ExtJs4 来构建的。
下面是当时 Rafy.js 开发完成后的框架类截图:
注意到,为了更好地解决开发过程中的上述问题。我们不得不人为地添加了一个《Javascript 类库开发规范》。该文档中的内容其实还是约定了一些封装、继承、多态的编写约定(ExtJS 给出的面向对象类型系统同样不完美)、以及一些代码的规范。这些问题,其实完全可以从语言、工具的角度解决,但是我们不得不人工约定、人工检查!
虽然 ExtJs4 大体上解决了面向对象设计的问题。但是由于重构困难,编写低效,导致 Rafy.js 的第一个版本只写了几千行,就已经感觉到维护起来很吃力了。
TypeScript
上面说了这么多,无非就是想表达:强类型很重要、重构很重要、工具很重要。而这些正是 TypeScript 语言设计的主要目标:&As we look to the 2.0 release, we 're focusing on two goals in addition to our main goal of bringing good tooling to JavaScript development.& The first is to align with ES6&&.&
先来说明一下,TypeScript(强类型 JavaScript)的优势:
更好的开发工具:支持重构、代码自动完成、代码导航、编译检查(静态代码分析:显示警告和错误)、程序包管理&&
更好的语言特性:类型指定、泛型、面向对象支持。
兼容原生的 JavaScript 。
这正是我想要的东西,也是开发大型 JS 项目的利器。
但是,TypeScript 并不适应于所有的开发人员、所有的项目,下面是 TypeScript 适应的场景:
适应较大、复杂的项目。例如 SinglePageApplication、大型 JS 框架、前端游戏。
需要支持面向对象设计、高可重用性、组件化开发的 JS 代码。
下面是 TypeScript 不适应的场景:
一些简单的、不需要 OOD、灵活性高、动态性高的代码就不适合选择 TypeScript。例如一般性的 Web 应用或站点的前端开发,这种页面级的逻辑往往编写在页面中,即简单,也不需要 OOD;再如,JQuery 框架的开发,这种框架的目标是灵活、方便、动态,而不是面向对象,所以也不太适合,所以 JQuery 框架应该不会使用 TypeScript 来重写。
目前,TypeScript 已经发布了 1.4 版本。打开 Visual Studio 2013 的扩展管理器,即可安装:
接下来的计划
接下来,我将使用 TypeScript 来把 Rafy.js 重新编写。在正式改 Rafy.js 之前,我还会把之前做的这个 Web 游戏《》改造一下试试。
敬请期待。
相关文章:
阅读(...) 评论()您所在的位置: &
回首与期待,JavaScript这一年
回首与期待,JavaScript这一年
2012年,JavaScript总体态势很好,不像HTML5一直处在风口浪尖。也未受到其它语言(Dart,CoffeeScript)的影响,仍然是开发者们最喜爱的前端编程语言。
Web技术每年都在日新月异的变化着,虽然这样,但仍然有一些语言处于屹立不倒的位置,比如本文要讨论的JavaScript。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="\" src="/files/uploadimg/1460.png" />
JavaScript自1995年诞生以来已过去17个年头,它被广泛地应用在Web开发中,随着HTML5技术的发展,JavaScript在未来还将有更大的发展和应用空间。JavaScript从过去&装饰性&的一种脚本语言转变为主流的编程语言,例如在2012年3月份发布的编程语言排行榜中,JavaScript占据第8名,超越了Perl和Python。
依旧春光明媚
2012年,JavaScript总体态势很好,不像HTML5一直处在风口浪尖。也未受到其它语言(Dart,CoffeeScript)的影响,仍然是开发者们最喜爱的前端编程语言。
那么下面让我们来简单的分析一下JavaScript为什么还会这么火。
第一简单性,JS是一门非常轻量级的语言,适合任何人学习,没有大量复杂的保留字,没有各种复杂的数据类型。难怪有人[探讨]JavaScript是性价比最高的技术?
第二速度,Google的V8 JS引擎让开发者可以在客户端和服务端更好的执行JS代码,这就给复杂的JS程序提供了基础。
第三与服务器交互较少,JS是运行在客户端的脚本语言,这就节省了Web服务器的请求时间。另外,可以再提交页面到服务前对用户输入的内容进行验证。这样减少了服务器的通信量,就意味着节约了金钱。
第四跨平台,JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可以正确执行。
第五让Web界面更丰富,尤其是一些带UI的JavaScript框架,不仅简化Web操作,还可以构建非常漂亮的用户界面,例如ExtJS,其提供了非常丰富的UI组件,包括高性能的数据表格、图表、选项卡、弹窗、工具条和菜单等等,可以帮助你构建用户体验良好的Web应用。
除了这些优点外,JS还非常地灵活,作为JavaScript程序员,只要你愿意,可以把程序写得很简单,当然,也可以写得很复杂。此外,它还支持多种不同的编程风格。你既可以采用函数式编程风格,也可以采用更复杂一点的面向对象编程风格。
十全九美 劲敌来袭
当然,世上并没有十全十美的东西,对JS来说,也存在一些缺点,比如其单线程机制,决定了其性能不佳等。于是各种想代替或者优化它的新语言就悄然出现。比如Google发布的Dart,就是想解决所有JavaScript不能修复的根本性问题,后来CoffeeScript的出现更煽动了这场取代JavaScript的战争。然而就在这种战争愈发激烈时,微软发布了TypeScript,让这场战争愈发激烈。然而,在编程语言领域里,貌似并不走长江后浪推前浪这条路。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="\" src="/files/uploadimg/1461.png" />
虽然编程语言之间的竞争一天也没能停歇,然而真正能日日夜夜陪伴在程序员身边或许也只有那么几个语言。还是先让我们一起来看下这几门语言吧:
Dart一个从发布起就鼓吹要替代JavaScript的编程语言,一经发布便窜到了编程语言排行榜的107位,次月居然到了63,速度惊人。可是从目前的发展来看,它很有可能陷入到和Go一样不温不火的境地。大家不妨移步过来看看:[探讨] Dart路在何方?众家评说谷歌新编程语言Dart、微软JavaScript团队向Dart语言泼冷水。
CoffeeScript是一个非常精致的语言,能编译成JavaScript。其目的是用简单的方法揭示JavaScript优秀的部分,抛弃JavaScript晦涩的,容易出问题的部分。就在今年5月份,CoffeeScript华丽的挤进GitHub热门编程语言前十。
TypeScript也是一种编译到JavaScript的语言,可以载入JavaScript代码然后运行。此外值得一提的是,TypeScrip允许加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增加开销;增加一个完整的类结构,使之更新是传统的面向对象语言。就在上个月,微软发布了TypeScript 0.81版本,其带来了源码级的调试支持。更多TypeScript精彩内容,大家不妨来看看JavaScript大师Nicholas C. Zakas谈TypeScript。
到底哪个语言能成为最终的主角呢?小编在这里引入Nicholas C.Zakas在谈TypeScript时的一段话:&我认为编译为JavaScript的语言很难达到这一目标。我们应该说服更多的人学习JavaScript,而不是提供更多的选择让他们放弃编写JavaScript。我常在想,如果所有的团队、公司都把时间和精力花在研究和探索JavaScript的替代者而非维护、传播它,那将会发生怎样的一番景象。&
原文链接:
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&&&的更多文章
HTML5和CSS3还需要JavaScript的配合才能发挥最大的作用,这节课
网友评论TOP5
作为移动开发者,WOT2016移动互联网技术峰会,绝对有你不得不来的理由。
你可以利用JavaScript轻易的做出亲切的欢迎讯息、漂亮
十年时间,可以让乔布斯透过iPad和iPhone成就苹果的再
大数据时代来临,Hadoop等已成为炙手可热的技术词汇。
这是一个最坏的年代,J2EE Web开发技术已经迟滞多年;这是一个最好的年代,J2EE Web开发技术的新变革留给勇于创新的人!
51CTO旗下网站}

我要回帖

更多关于 coffeescript 官网 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信