讨论一下 ES6 vs CoffeeScript vs typescript es6哪个更好

From Wikipedia, the free encyclopedia
This article may require
for grammar, style, cohesion, tone, or spelling. You can assist by . (November 2016) ()
CoffeeScript is a programming language that
to . It adds
inspired by ,
in an effort to enhance JavaScript's brevity and readability. Specific additional features include
CoffeeScript support is included in
version 3.1 and . In 2011,
referenced CoffeeScript as an influence on his thoughts about the future of JavaScript.
On December 13, 2009,
made the first
commit of CoffeeScript with the comment: "initial commit of the mystery language." The compiler was written in Ruby. On December 24, he made the first tagged and documented release, 0.1.0. On February 21, 2010, he committed version 0.5, which replaced the Ruby compiler with a
version in pure CoffeeScript. By that time the project had attracted several other contributors on , and was receiving over 300 page hits per day.
On December 24, 2010, Ashkenas announced the release of stable 1.0.0 to , the site where the project was announced for the first time.
Almost everything is an expression in CoffeeScript, for example if, switch and for expressions (which have no return value in JavaScript) return a value. As in , these control statements also h for example, if can also be written after the conditional statement.
Many unnecessary parentheses and b for example, blocks of code can be denoted by indentation instead of braces, function calls are implicit, and object literals are often detected automatically.
To compute the , one may do (here in ):
var mass = 72
var height = 1.78
var BMI = mass / (height * height)
if (18.5 & BMI && BMI & 25) alert('You are healthy!')
With CoffeeScript the interval is directly described:
height = 1.78
BMI = mass / height**2
alert 'You are healthy!' if 18.5 & BMI & 25
To compute the
of two integers with the , in JavaScript one usually needs a while loop:
function gcd(x, y) {
} while (y != 0)
Whereas in CoffeeScript one can use until and pattern-matching instead:
gcd = (x, y) -&
[x, y] = [y, x%y] until y is 0
Any for loop c so that to compute the squares of the positive odd numbers smaller than ten (i.e. numbers which remainder modulo 2 is 1), one can do:
alert n*n for n in [1..10] when n%2 is 1
Alternatively, there is:
alert n*n for n in [1..10] by 2
You can implement a
with a one-liner using the when keyword:
names = ["Ivan", "Joanna", "Nikolay", "Mihaela"]
linearSearch = (searchName) -& alert(name) for name in names when name is searchName
The for ... in syntax allows you to loop over arrays while the for ... of syntax allows you to loop over objects.
You can use the ? keyword to quickly check if a variable is null or undefined :
personCheck = -&
if not person? then alert("No person") else alert("Have person")
person = null
personCheck()
person = "Ivan"
personCheck()
This would alert "No person" if the variable is null or undefined and "Have person" if there is something there.
A common JavaScript snippet using the
library is:
$(document).ready(function() {
// Initialization code goes here
Or even just:
$(function() {
// Initialization code goes here
In CoffeeScript, the function keyword is replaced by the -& symbol, and indentation is used instead of curly braces, as in other
languages such as Python and Haskell. Also, parentheses can usually be omitted, using indentation level instead to denote a function or block. Thus, the CoffeeScript equivalent of the snippet above is:
$(document).ready -&
# Initialization code goes here
# Initialization code goes here
Ruby-style string interpolation is included in CoffeeScript. Double-quoted strings allow for interpolated values, using #{ ... }, and single-quoted strings are literal.
author = "Wittgenstein"
= "A picture is a fact. -- #{ author }"
sentence = "#{ 22 / 7 } is a decent approximation of π"
The CoffeeScript compiler has been
since version 0.5 and is ava however, the core compiler does not rely on Node.js and can be run in any
environment. One alternative to the
utility is the , a plugin for the popular
build system. The plugin uses the
JavaScript engine written in .
The official site at CoffeeScript.org has a "Try CoffeeScript" bu clicking it opens a modal window in which users can enter CoffeeScript, see the JavaScript output, and run it directly in the browser. The js2coffee site provides bi-directional translation.
Source maps allow users to de-bug their CoffeeScript code directly, supporting CoffeeScript tracebacks on run time errors.
CoffeeScript
a form of , using the .coffee.md or .litcoffee file extension. This allows CoffeeScript source code to be written in . The compiler will treat any indented blocks (Markdown's way of indicating source code) as code, and ignore the rest as comments.
On September 13, 2012,
announced that their browser-side code base has been rewritten from
to CoffeeScript.
's internal style guide once said "write new JS in CoffeeScript", and while it no longer does, all the advice in the style guide references how to write good CoffeeScript, and their
is also written in the language.
, an open-source, strict superset of Javascript language from
, a translator with a more Pythonic syntax
, which offers additional type checking and syntactic sugar for common JS patterns such as inline callbacks
"CoffeeScript borrows chained comparisons from Python"
Heller, Martin (18 October 2011). . JavaWorld. InfoWorld.
Alex MacCaw (January 2012). The Little Book on CoffeScript. .  .
on Apr 13, 2011
Eich, Brendan. ""
Eich, Brendan. ""
Hacker News.
posted by Jeremy Ashkenas on Dec 24, 2010
Hacker News.
posted by Jeremy Ashkenas on Dec 24, 2009
. . Retrieved on .
Sta Cruz, Rico.
Wheeler, D Mahkovec, Z Varenhorst, Chris (13 September 2012).
from the original on .
. . Retrieved on .
. Atlassian Bitbucket. 3 Apr .
Lee, Patrick (May 14, 2014).
(First ed.). : 432.  .
Grosenbach, Geoffrey (May 12, 2011).
(First ed.). .
Bates, Mark (May 31, 2012).
(First ed.). : 350.  .
MacCaw, Alex (January 31, 2012).
(First ed.). : 62.  .
Burnham, Trevor (August 3, 2011).
(First ed.). : 138.  .
to highlight your CoffeeScript code in Crucible of Atlasssian by Tomás Corral
: Hidden categories:2005年的时候大多数网页长这样:
现在的网页一般是这样的:
前端工程师的发展之路和前景是怎么样的?
前端是一个相对比较新的行业,互联网发展早期(1995年~2005年)是没有专业的前端工程师的。随着互联网的发展,大约从2005年开始,正式的前端工程师角色被行业认可,到了2010年,互联网开始全面进入移动时代,前端工程师的地位越来越重要,前端领域的技术发展也越来越快,各种新的思想、设计模式、工具和平台都快速发展,对前端工程师的技能要求也越来越高。
有一些数据可以说明前端行业的发展迅速。
在2010年之后最流行的新编程语言中有相当部分和前端有关,比如 Dart、Clojure、CoffeeScript 和 TypeScript。
作为前端最重要的编程语言 JavaScript,在最近几年里不论是代码量还是关注数都稳居 Github 平台热门编程语言榜。
行业对前端需求量持续增加,前端程序员薪水在行业里面处于较领先的位置。
近年来最流行的编程语言很多都是JavaScript替代语言
JavaScript在最热编程语言 TOP10
近几年互联网公司前端团队每年扩张一倍
JavaScript工程师平均薪水排名在程序语言工程师收入前10
前端工程师需要什么样的知识和技能?
有人说前端工程师的技术栈是这样的:
还有人说是这样的:
实际上前端工程师最核心的技能还是:
在一个典型的互联网公司的产品研发流程中,前端工程师和其他角色的关系大致上是这样的:
前端是最接近产品和设计的工程师,起到衔接产品和技术的作用,前端为用户可以看到的部分负责,所以也是最接近用户的工程师。
在多终端的时代,如果一个产品同时支持PC、移动端,前端工程师还需要和更多的角色打交道:
JavaScript 对于前端是最重要的技能,所以优秀的前端工程师要有扎实的JavaScript基本功。而JavaScript这门编程语言也是目前程序设计领域炙手可热的宠儿,如今的它不仅仅只是用来开发Web,还可以用在各个方面。
JavaScript 可以用在“树莓派”这类智能硬件芯片开发
前端工程师也是软件工程师,所以软件工程师的基础知识也是非常重要的,这些基础知识包括:
计算机体系
数据结构和算法
HTML和CSS也是前端工程师非常重要的基本功,很多同学,尤其是喜欢写代码的同学容易忽视 Markup Language,实际上 ML 也是 UI 相关的领域里面很重要的内容,不应该被忽视。
有同学问说:“前端工作需求很多,老是改来改去,实际的技术点并没有多少,产品决定业务逻辑,从事底层基础服务会不会更有挑战和职业未来?”
的确,越贴近业务和产品层面上的工作,需求差异性越大,可能改动越频繁。不仅仅是前端改来改去,PHP服务端做业务的同学也面临这样的问题,业务逻辑改来改去。越底层通用性越强,改动相对较少。
不过事情都是有两面性的,首先可以这么想想,是底层基础服务的市场大还是互联网业务和产品的市场大。其次,基础服务的通用性很容易达成,而产品层面上如何通用化,如何在业务驱动的产品研发中利用工程化和工具化提升开发效率,这其实是一个很难的问题。丰富的互联网产品已改变和正在改变着我们的生活,然而作为产品的创造者,工程师们怎样让自己过得更好,这个领域值得研究。
另外,不要觉得实际的技术点没有多少,举几个例子:实现曲线和曲面动画,计算地图的最短路径,让png静态图片类似于gif图一样做局部的运动,抽奖游戏,物理效果的HTML5游戏,3D图表,增强现实的WebGL视频流处理等等,这些都是在前端领域中遇到的实际问题。
就 JavaScript 来说,在实际项目中设计最合适的模型高效率解决现实问题本身就很有挑战。作为一种典型的新生代编程语言,JavaScript 特性丰富,使用灵活,性能优良。面向对象、函数式编程、各种设计模式、MVC 和 MVVM,这些本身就有足够的吸引力。
前端要解决界面和交互问题,实际上UI层面上的问题一直是软件工程方面的一个难题,因为UI不停地在变化。浏览器各个版本的兼容性、Web 标准、移动设备、多终端适配,给了前端工程师很大的挑战,对前端工程师的能力也有很高的要求。许多UI问题有不只一种解决方法,许多问题有非常巧妙的思路和精彩的解决办法,前端在工程师群体里是属于非常有创造力的一个群体,因为这个行业需要丰富的创造力和想象力。
前端工程师还是Web标准的制定者、实践者和推动者,而现在的W3C标准不仅仅局限于浏览器,还包括各种手持智能设备,车载设备、智能家居等等。在未来万物互联的时代,前端将不仅仅是网页上的工程师,而是所有人机交互领域的工程师。
前端工程师的学习和成长
前端领域发展很快,各种新技术新思想不断涌现,这是一个好现象。但是前端发展太快也带来一些问题,比如有同学就问到我究竟应该学些什么,Angular.js、React、Node.js、ES6、ES7、CoffeeScript、TypeScript……似乎永远有太多东西需要学习,有些东西好像还没学明白就被另一些新的技术取代而“过时了”。
其实还是那句话,前端工程师首先是软件工程师,基础是最重要的,如果基础不扎实,一切应用技能就都是“浮云”。前端的基础是什么?HTML、CSS、JavaScript基本功,数学、算法、数据结构、操作系统、编译原理基本功。
一个优秀的前端工程师必须要有自己擅长的领域,并且钻研得足够深入,同时要有眼界,能“跨界”。可以以前端作为职业,但千万不要把自己的技能限制在前端领域,因为有很多东西,只有站在前端之外,才能看得更清晰,更透彻。
学东西千万别盲目更风,大家都在谈AngularJS就立即跑去学习,过几天大家都谈React了,就又放下AngularJS去学习React。前端领域知识点很多,值得学的东西也很多,聪明的同学懂得花时间学习成体系的知识并且研究得足够深入,因为只有这样才能从中总结出规律,形成方法论,这样才能最大化学习的价值。
知识的正确用法 —— 一个领域里面的大师永远不会是另一个类似领域的菜鸟
这次前端星计划布置的一个实现带有农历和节气的万年历,有些同学卡在农历计算上,大约70%的同学懂得去网上找代码,但只有不到1%的同学真正弄明白农历计算的原理。
在面试的时候,面试官问到如何做前端性能优化,有的同学能够拿雅虎的性能优化军规回答得头头是道,反复强调使用工具压缩静态资源,但是自己搭建的博客的nginx服务却没有开启gzip。都知道说要合并静态资源,要减少HTTP请求,然而为什么要减少HTTP请求,减少请求之后预计能改善多少性能,获得多少收益呢?需要弄明白这些问题,也需要深入了解HTTP协议本身。
还有一个更有趣的问题,大家都说写HTML的关键是语义化,那么到底什么是语义化呢?这个问题难住了不少同学。标签要符合语义,这个答案看似简单标准,但什么样的标签才是符合语义?强调用 strong 不用 b?那如果有个外星文明,它们的语言里 strong 相当于地球的 bold,bold 相当于地球的 strong,那么它们究竟该用 strong 还是用 b?我们说 i 标签是斜体的意思,那为什么
拿它做 icon font 的标签,这是不是“反语义”的?
过去很多地方农村有一种民间的染坊,制作染布的染料。这种染房里面有一口很大的铁缸,通常都要有一个身体非常强壮的工人拿一根很长的铁棒在染缸里面用力地敲击,敲得越响,制作出来的染料颜色越鲜艳。 为什么越用力敲打铁缸染料就越好?染坊的人说这是祖祖辈辈传下来的经验,而事实上也是如此,真的染料的颜色和敲打用力有很大关系。直到有一天,一位从村里走出去学化学的大学生,弄明白了原来只需要在染料中加适当比例的铁屑,就能让染料和含铁元素氧化物产生化学反应而变得更鲜艳。原来祖祖辈辈传下来的“仪式”实际上在真实原理面前只是一种信仰和宗教。同样,如果我们不去了解技术的本质而止步于应用,那么我们就只是技术宗教的信徒。所以在周爱民老师的《JavaScript 语言精髓与编程实践》中说,计算机语言如同祭司手中的神杖,神杖换了,祭司还是祭司,世人还是会把头叩得山响。祭司掌握了与神交流的方法,而世人只看见了神杖。
由兴趣选择前端
在我学程序设计的最初,我学习的是C语言,然而整整一本书除了教我如何在黑洞洞的控制台上输出 Hello World 和各种其他字符或者用键盘输入一些什么然后依然是字符输出外,就没有什么其他的内容了。学习了一段时间之后,我的内心一度是崩溃的,因为我觉得这和我想得不一样,学了那么多知识,我都不知道自己究竟算不算是“学会”了C语言,因为在我看来,那些丰富多彩的操作系统和各种应用软件和黑洞洞的控制台之间明显还有着非常巨大的鸿沟。
事后回想起来,当时的想法当然是幼稚可笑的,那时候的我并不知道程序语言和运行环境之间的区别,对操作系统、用户API、硬件接口、网络服务等等都完全不了解。然而这并不能怪我,因为C语言的教程并没有任何一言半语来告诉我这一点,我也不知道学习了C语言的语法之后接下来还应该学习些什么。
相对来说,Web开发更吸引我,因为不需要安装任何环境,只需要在文本编辑器里面输入一些字符,保存后打开浏览器,马上就能看到丰富的视觉效果,这就是前端的优势,你所做的努力立即就能看得见。
相对于死板的输入输出,Web开发在界面可见的一层要丰富多彩得多,这一点吸引了我,如果这一点也能吸引你,让你着迷,那么你就适合学习前端。
在选择前端作为职业之前,要明确判断自己对前端开发的确感兴趣,选择做前端,应该是确认自己喜欢和适合做前端,而不是为了一份看起来体面而且薪水不菲的工作。如果你对构建丰富多彩的界面、处理各种交互逻辑不感兴趣,甚至厌烦,那么最明智的选择是放弃成为前端工程师的想法 —— 因为选择一个自己不喜欢的职业,为之忍受数十年直到退休,实在是一件很悲催的事情。
对在校学生,我们看重哪方面能力?
有同学问,360前端是否一定要求实际经验的学生,在这里我可以回答:否。
对于学生,我们比较关心的是:
基础:包括数学、算法、数据结构、计算机相关基础的掌握。
学习能力和学习方法:如何学的前端,学了多久,学到什么程度,遇到过什么问题,是如何尝试解决这些问题。
兴趣:对前端的兴趣如何,这一点可以体现在很多细节上。有一个反面的例子比较常见,一般来说我会问学生最近在关注什么前端新知识,有的学生会说我关注某某某,但当我再问他究竟关注到什么程度,会发现他实际上根本没有在这项新知识上花费多少时间。如果你对感兴趣的问题都不花费时间,如何证明你自己对前端的“兴趣”呢。
解决问题的能力:遇到难题如何解决的,遇到没接触过的问题是如何思考和最终解决的。从这里可以判断出同学有没有前端思维,这些问题没有标准答案,我们不追求某些“官方思路”,看重过程而不是结果。
关于简历,有同学提到说现在似乎很多公司都希望学生会点 Node.js,会点 React,我自己不会该怎么办。
我想说的是,我们并不要求学生必须会这些。相反,我个人更鼓励学生利用时间打好基础。简历上写自己真正擅长的内容即可,我们不会因为在你的简历上看不到 Node.js 或者 React 就忽略你。只要你真心热爱前端并用心学了,你应该明白如何用前端基础来打动我。有的学生喜欢在简历上堆砌词汇,实际上这一点不见得好,因为如果你写了一个你自己一知半解的东西,最后在面试中被面到了,一定会得负分的。
技术本身是有深度的,A 同学说“我知道React但没用它做过东西”, B 同学说“我用AngularJS写过一些个人的小项目”, C 同学说“我上个月使用弹性布局的思路来写我的博客,结果在Android系统4.1版本的Webkit浏览器下出现了一个显示bug,最后我是这样这样解决的”。你们说 A、B、C 三个同学我们会选择哪个同学?
面试是一个彼此交流的过程,我们希望看到大家在前端领域的能力和潜力,“知道”一件事,并不是一种有价值的能力,尤其是在知识廉价的互联网时代。我们的同学千万不要像背书一样去死记硬背一样东西,而应该真正用心去学。我们的高等学校不仅仅教授大家知识,还有如何真正学习和做研究,不是吗?
如果你对前端真的感兴趣并有潜力,花点小心思,你该知道如何学习它。
最后,祝愿大家都能成为优秀的前端工程师。
本文链接: -- EOF --OSChina.net的一些小问题收集整理 - 开源中国社区
当前访客身份:游客 [
当前位置:
由于近期忙,只能先做问题整理。可能有些问题也未必能给出合理建议。
1、搜索,昨日搜索AsyncHttpClient,居然久久未能寻获,单独搜索Async,搜索出来了,居然叫做Async Http Client。关键词的库貌似不足,或是算法问题。
2、看帖子回帖的时候,我想不引用任何内容回帖,找不到入口,点击帖子标题处的发表回复大按钮,飞去页底回复,要点击主贴回复此话题方能进入。(链接换换即可。)
3、转帖标识不够明显,现在转帖链接出现在正文内容底部,但底部下面是相关问题列表和广告,很容易被忽视。开源还是更加要尊重文章来源于出处,博客可以挪到文章标题底部,讨论区可以挪到正文开始之前。
4、转帖库,这里可能说得比较飘,看过就罢。这个其实是我以前给自己设计博客时的思路,当然博客最终流产,但思路留下了。
后台增加所有转载库的记录,当然以host为索引,第一次发布转摘的时候,用抓取器去抓取该host,取得该站点的主title和当前文章的title,尤其针对博客类型的源作者,发转帖的时候,自动列出:xxx站点:yyyyyyy,yyyyyyy自动设置为该文章的链接。这是第一步。
第二步,根据转载库设定抓取器,除非那些刷SEO的人,连文章的源出处都懒得去找,但凡这种转载,往往能一抓一把原创文章。(抓取器的设计就忽略不谈了,只是一个思路。)
第三步,设置白名单黑名单,其实很多空壳网站,比如这些垃圾山寨,手动添加到黑名单。白名单,是为了第四部。
第四步,开源是一个广大的范畴,需要更多更大量的文档资源。可以有针对性和个人博客进行相关性的合作,例如允许oschina.net转载该博客的文章,并且邀请他们针对相关的开源软件的资讯进行维护(包括发布他们自己的开源软件,以及邀请他们自己为自己的开源软件进行文档维护)。
以上纯熟YY,无责任飘过。
5、搜索真的得调调,我始终不太会用,得搜索一次进到内页,才能找到新闻、软件、讨论的区分,找到空结果很崩溃。
还有一些零碎、散乱的想法,已记录在别处,就不在这里噪啯了。
共有2个回帖
回应一下:
1. 这个问题看似简单,实则高精尖,我也常遭遇此问题,但实在无能为力,而且你提的只是个例,还有各种各样的一些搜索细节2. 已修改3. 略过,再议4. 同上5. 针对大家之前提的:找不到新闻、讨论区的搜索,因此专门做的调整,现在看来还不如不改呢,期待改进建议。
了解,慢慢来吧!
问题5,可以先简单的做个下拉暂时实现着。
更多开发者职位上
有什么技术问题吗?
曾建凯的其它问题The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.}

我要回帖

更多关于 typescript es6 的文章

更多推荐

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

点击添加站长微信