V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
FrankFang128
V2EX  ›  JavaScript

在 2016 年学 JavaScript 是一种什么样的体验?

  FrankFang128 · 2016-10-06 02:18:21 +08:00 · 76003 次点击
这是一个创建于 3005 天前的主题,其中的信息可能已经有所发展或是发生改变。

原文

译者:方应杭

嘿,我最近接到一个 Web 项目,不过老实说,我这两年没怎么接触 Web 编程,听说 Web 技术已经发生了一些变化。听说你是这里对新技术最了解的 Web 开发工程师?

准确地说,我是一名「前端工程师」。不过你算是找对人了。我对今年的技术别提多熟了,前端可视化、音乐播放器、能踢足球的无人机,你尽管问吧。我刚去 JS 大会和 React 大会逛了一圈,没有什么新技术是我不知道的。

厉害。是这样的,我要开发一个网页,用来展示用户的最新动态。我想我应该通过后端接口获取数据,然后用一个 table 来展示数据,用户可以对数据进行排序。如果服务器上的数据变化了,我还需要更新这个 table 。我的思路是用 jQuery 来做。

可别用 jQuery !现在哪还有人用 jQuery 。现在是 2016 年了,你绝对应该用 React 。

哦,好吧, React 是什么?

React 是一个非常厉害的库, Facebook 的牛人写的。它能让页面更可控,性能极高,而且使用起来很简单。

听起来确实不错。我能用 React 展示服务器传来的数据吗?

当然可以,你只需要添加两个依赖,一个是 React ,一个是 React DOM

额,等下,为什么是两个库?

React 是我说的库, React DOM 是用来操作 DOM 的。因为这些 DOM 是用 JSX 写的,所以需要一个专门的库来操作。

JSX ? JSX 是什么?

JSX 是对 JS 的扩展,它看起来跟 XML 差不多,可以用来写 HTML ,你可以认为 JSX 是一种更优雅的 HTML 写法。

为什么不用 HTML 了……?

现在可是 2016 年啊,没有直接写 HTML 的。

对哦。好吧,加了这两个依赖,是不是就可以开始用 React 了?

不行哦。你需要添加 Babel ,然后才能用 React 。

Babel 是另一个库?

嗯, Babel 是一个转译工具, Babel 能把你写的 JS 转译成任意版本的 JS 。你不一定非要用 Babel ,但是如果你不用的话,你就只能写 ES5 的语法了。你知道的,现在是 2016 年,你怎么能不使用 ES2016+ 的语法呢? ES2016+ 多么酷啊。

ES5 是啥? ES2016+ 又是啥?我有点晕。

ES5 就是 ECMAScript 5 。大部分人都会使用 ES5 ,因为大部分浏览器都支持 ES5 。

ECMAScript 是啥……

你晓得的, JS 是 1995 年诞生的,而 JS 的标准是 1999 制定出来的。那时候 JavaScript 还叫做 Livescript ,只能运行在网景的浏览器里。那时真是混乱的年代,现在好了,我们有了 JS 的 7 个版本的规范。

7 个版本?那 ES5 和 ES2016+ 是?

分别是第 5 个版本和第 7 个版本。

诶,那第六个版本呢?

你说的是 ES6 。每个版本都是上一个版本的超集,所以你直接使用最新的 ES2016+ 就好了。

对哦。为什么不用 ES6 呢?

好吧,你可以用 ES6 ,但是你就用不到 async 和 await 这么酷的语法了。用 ES2016+ 比较好。用 ES6 的话你就只能用 generator 来控制异步任务流了。

不知道你在说什么……你说了太多我听不懂的名词了。我只是想从服务器取点数据,我以前用 jQuery 挺好的,从 CDN 引入 jQuery ,我就能用 AJAX 获取数据了,现在不能这样做吗?

大哥,都 2016 年了,没人用 jQuery 好吗。所有人都知道用 jQuery 只会造出「意大利面条」一样的代码(不可维护)

好吧,所以我现在要加载三个库才能获取并展示数据。

对的,其实你可以用「模块管理器」把这三个库「打包」成一个文件。

哦,什么是模块管理器……

不同平台的模块管理器不同啦。前端的模块管理器一般指管理 AMD 或者 CommonJS 模块的东西。

好……吧,什么是 AMD 和 CommonJS ?

是两个定义。我们有很多方式来描述 JS 中多个库或类的交互方式,比如 exports 和 requires 。你可以按照 AMD 或者 CommonJS 的 API 来书写 JS ,然后用 Browserify 将它们打包。

听起来很有道理。不过,什么是 Browserify ?

是一个工具,用来将 CommonJS 形式的 JS 文件打包起来,放到浏览器里运行。用 npm 仓库的人发明了 CommonJS 。

npm 仓库是什么……

是一个公开的仓库,用于放置可依赖的模块。

就像一个 CDN 么?

不太一样。它更像是一个数据库,每个人都能在上面发布代码,也能下载上面的代码。你可以在开发的时候将这些代码下载到本地来使用,必要的时候也能上传到 CDN 。

听起来像是 Bower !

是的,不过现在是 2016 年了,没有人用 Bower 了……

好吧,我知道了,所以我应该用 npm 来安装依赖。

对的。我举个例子吧,如果你要使用 React ,你直接用 npm 安装 React ,然后在代码里导入 React 就可以了。大部分 JS 库都能这么安装。

嗯, Angular 也可以。

Angular 是 2015 年的事情了。不过今年 Angular 还没死,还有 VueJS 和 RxJS 等等,你想学一学么?

还是用 React 吧。我刚才已经学了够多东西了。所以我用 npm 安装 React 然后用 Browerify 来打包就好了?

是的。

这么做看起来有点过于复杂啊。

确实。这就是为什么你应该使用 Grunt 、 Gulp 或者 Broccoli 这样的任务管理工具,它们能自动运行 Browserify 。不对,你现在可以用 Mimosa 。

你在说什么……

任务管理工具。不过我们现在已经不用了。去年我们还在用,后来改成了 Makefiles ,但是现在我们用的都是 Webpack 。

我以为只有 C/C++ 项目才会用 Makefiles 。

是的,不过显然我们做 Web 开发的,喜欢先把事情搞复杂,然后回归到最朴素的状态。每年我们都是这么搞的。你就看着吧,过不了两年,我们就可以在网页上写汇编了。

唉,你刚才说的 Webpack 是什么?

另一种模块管理工具,同时也是一个任务管理工具。你可以认为它是 Browserify 的加强版。

哦,好吧,为什么 Webpack 是加强版?

额,可能并没有加强吧。 Webpack 告诉你应该如何管理你的依赖, Webpack 允许你使用不同的模块管理器,不只是 CommonJS ,甚至支持 ES6 模块。

这都是哪跟哪啊,我都被绕晕了。

大家都被绕晕了,不过等 SystemJS 出来了就好了。

天呐,又一个 JS 库,这是什么鬼?

呵呵,不像 Browserify 和 Webpack 1.x , SystemJS 是一个动态的模块加载器。

等下,刚才不是说应该把所有依赖打包成一个文件吗?

话是这么说,但是等 HTTP/2 普及之后,不打包反而更好。

那为什么我们不直接在页面里添加 React 的三个依赖文件呢?

不行。你可以从 CDN 加载这些文件,但是你还是要在本地用 Babel 转译。

唉,这么鹾?

是的,你不能在生产环境上运行 babel ,你应该在发布到生产环境之前,运行一系列的任务,包括压缩、混淆、内联化 CSS 、延迟加载 script ……

我懂了我懂了。既然我不能直接用 CDN ,那么我应该怎么做?

我会考虑用 Webpack + SystemJS + Babel 来转译 Typescript 。

Typescript ?我们不是在说 JavaScript 吗?!

Typescript 也是 JavaScript 呀,它比 JS 更好用,是 JS 的超集,它是基于 ES6 的,就是我们刚才谈论的 ES6 ,你还记得吧。

ES2016+ 已经是 ES6 的超集了,怎么又冒出来一个 Typescript ?

是这样的, Typescript 能让我们写出「强类型」的 JS ,从而减少运行时的错误。 2016 年,我们应该让 JS 支持强类型了。

显然 Typescript 可以做到。

Flow 也可以做到,区别是 Typescript 需要编译,而 Flow 只是检查语法。

唉, Flow 是?

是一个静态类型检查器,就是 Facebook 的人写的。使用 OCaml 写的,函数式编程很叼的。

OCaml ?函数式编程?

如今大牛都用这些东西,都 2016 年了,你懂的,函数式编程、高阶函数、柯里化、纯函数这些概念。

不知道你在说什么。

一开始大家都不知道。这么说吧,你只需要知道函数式编程比面向对象编程厉害, 2016 年我们就指着函数式编程了。

等下,我大学里学过面向对象编程,当时我觉得它还不错。

Java 在被 Oracle 买下来之前也挺不错啊。我的意思是,面向对象以前是不错,现在依然有人用它,但是现在所有人都发觉状态变换是很难维护的,所以大家都开始用「不可变对象」和函数式编程了。 Haskell 的人已经用这套东西用了很久了,不过幸运的是 Web 开发领域里有 Ramda 这样的库,让我们用 JS 就可以进行函数式编程了。

你刚刚是不是又抛出了几个名词? Ramnda 又是什么?

不是 Ramnda ,是 Ramda ,跟 Lambda 表达式有点像。是 David Chambers 写的库。

谁?

David Chambers ,大神一个。 blablabla

我不得不打断你一下了。这些东西看起来都不错,但是我觉得它们都太复杂,而且没必要。我只是想获取数据然后展示,我很确定这种情况下我不需要掌握这些知识。

回到 React 吧,用 React 我怎么从服务器获取数据?

额, React 没有提供这个功能,你只能用 React 展示数据。

服了啊。那我怎么获取数据?

你用 Fetch API 就可以了。

啥玩意?这个 API 的名字很烂啊。

我也觉得是啊。 Fetch API 是浏览器提供的异步请求接口。

哦,那不就是 AJAX 。

AJAX 只是使用 XMLHttpRequest 对象,但是 Fetch API 可以让你用 Promise 风格来发起异步请求,帮你摆脱「回调地狱」。

回调地狱?

是的,每次你发起一个异步请求,就得等待它响应。这时你就得在函数里使用一个函数,这种嵌套调用就是回调地狱。

好吧。 Promise 解决了这个问题么?

是的。用 Promise 来管理回调,你就可以写出更易读的代码,更容易测试的代码。甚至可以同时发起多个请求,然后等待它们全部返回。

Fetch 也能做到吗?

是的。但前提是你的用户使用了新版的浏览器,不然的话你就需要加一个 Fetch 的 「 polyfill 」,或者使用 Request 、 Bluebird 或者 Axios 这些库。

天呐我到底需要多少个库?

这是 JS ,同一件事情有上千个库在做。我们了解库,而且我们有最好的库,我们有海量的库,要什么有什么。

你刚才说的几个库都是干什么的?

这几个库操作 XMLHttpRequest 然后返回 Promise 对象。

好像 jQuery 的 ajax 方法做的是同样的事吧……

从 2016 年起我们就不用 jQuery 了。用 Fetch ,大不了加个 Polyfill ,要不然用 Bluebird 、 Request 或者 Axios 都行。然后用 await 和 async 管理 Promise ,这样才能控制好异步任务。

这是你第三次说 await 了,那是什么东西?

await 能让你拦住一个异步调用,让你更好地控制异步返回的数据,大大增强了代码的可读性。 await 非常好用,你只需要在 Babel 里添加 stage-3 配置,或者添加 syntax-async-functions 和 transform-async-to-generator 插件就可以了。

听起来像是疯了。

没疯。为了使用 await ,把 Typescript 编译之后再用 Babel 转译一道的人才是疯了。

啥玩意? Typescript 不支持 await ?

下个版本就支持了。

我已经无话可说了。

你看其实很简单。用 Typescript 写代码,用 Fetch 发起异步请求,所有代码编译成 ES6 ,然后用上 Babel 的 stage-3 配置项,把 ES6 转译成 ES5 。所有代码用 SystemJS 加载。如果你用不了 Fetch ,就加个 polyfill ,或者用 Bluebird 、 Request 或者 Axios ,这样你就可以用 await 来处理 Promise 了。

看了我们对于「简单」的理解是不同的。好吧,有了这些,我终于可以获取数据然后用 React 展示数据了,对吧?

你的网页需要处理状态变更吗?

唔,不用吧。我只是想展示数据。

那就好,不然我就得跟你解释 Flux ,以及 Flux 的一些实现,比如 Flummox 、 Alt 、 Fluxible 。不过说真的你应该用 Redux 。

你说的这些我就当耳旁风了。再说一次,我只想展示数据。

这样啊,如果你只是想展示数据,其实你不需要 React 。你只需要一个模板引擎。

你逗我呢?

我只是告诉你你可以用什么技术。

别说了,真的。

我想说,即使只是用一个模板引擎,我还是会用 Typescript + SystemJS + Babel 的。

我只是想在页面上展示数据,你就告诉我用哪个模板引擎就好了。

有很多,你用过哪一个?

额,太久没用了,不记得了。

jTemplates 、 jQote 还是 PURE ?

额,不记得,还有别的么?

Transparency? JSRender? MarkupJS? KnockoutJS? 这一个支持双向绑定。

还有吗?

PlatesJS? jQuery-tmpl? Handlebars? 还有些人在用。

有点像。有哪些跟最后一个比较像的?

Mustache, underscore? 我记得连 Lodash 都有一个模板引擎,不过这是 2014 年的事情了。

额,也许是再新一点的库?

Jade? DustJS?

没用过

DotJS? EJS?

没用过。

Nunjucks? ECT?

没用过。记不起来了,要是你的话,你用哪个?

我应该会用 ES6 原生的模板字符串

我猜猜,只有 ES6 支持。

对的。

需要用 Babel

对的。

需要用 npm 安装

对的。

需要用 Browserify 或者 Webpack ,或者 SystemJS

对的。

如果没用 Webpack 的话,我还需要一个任务管理工具。

对的。

但是由于我要用函数式编程和强类型语言,所以我首先要用上 Typescript 或者 Flow 。

对的。

如果我要用 await ,那我就必须用 Babel 转译。

对的。

然后我就能用上 Fetch 、 Promise 和各种炫酷的东西。

嗯,别忘了加上 Fetch 的 Polyfill ,因为 Safari 不支持 Fetch 。

你猜怎么着,我们就聊到这吧。我不做了,我不做 Web 了,我也不想再碰 JS 了。

没事,过不了几年,我们都会用 Elm 或者 WebAssembly 了。

我要回后端去了,我受不这些变动、版本更新、编译和转译了, JS 社区如果觉得有人能跟上它的脚步,那这个社区就是疯了。

我理解你。我建议你去 Python 社区。

为什么?

听说过 Python 3 吗?

原文

译者:方应杭

第 1 条附言  ·  2016-10-07 20:55:11 +08:00
平时想跟我交流的话,可以加前端交流群: 392054247 ,加群暗号: 2016JS
第 2 条附言  ·  2018-04-10 10:24:20 +08:00
之前的 Q 群已经满了,新群:566475505
第 3 条附言  ·  2019-05-17 02:40:06 +08:00
上面的群全都满了,直接加微信吧 frank_fang,暗号 v2ex
153 条回复    2022-03-22 22:16:40 +08:00
1  2  
ericls
    1
ericls  
   2016-10-06 02:20:39 +08:00 via iPhone
Elm 真的很好!
bugmenein
    2
bugmenein  
   2016-10-06 02:46:29 +08:00
> Oh my god no, no one uses jQuery anymore. You should try learning React
lxy
    3
lxy  
   2016-10-06 02:58:34 +08:00
差不多就是这样。原本我只想稍微了解一下前端,结果发现技能树多到复杂,每发现一项新技能都忍不住在心里卧槽。于是到了现在也只是泛泛了解了一些概念,都没实际用过,自己写还是用 jQuery ……
sadaharu09
    4
sadaharu09  
   2016-10-06 03:44:03 +08:00
主要是新的 JS 库发展太快,各种坑都出来了。
lwbjing
    5
lwbjing  
   2016-10-06 04:24:08 +08:00   ❤️ 4
不管框架类库怎么变化,,, jQuery 永远是你大爷。。。
Borden
    6
Borden  
   2016-10-06 04:25:10 +08:00
对的,这就是为什么我坚持使用汇编的原因。
abnerchou
    7
abnerchou  
   2016-10-06 04:32:35 +08:00
太对了……
lixiaoyaoslove
    8
lixiaoyaoslove  
   2016-10-06 04:56:22 +08:00 via Android
得看公司项目。说下我的感受吧,由于 JavaScript 本身十分灵活,在多人参与下的前端大中型项目就会变得十分难以维护,基本的业务组件无法做到高内聚模块化,组件代码质量依赖于前端开发人员,这本身就是不可接受的。所以需要许多新技术去规避这些问题。
v9ox
    9
v9ox  
   2016-10-06 05:09:08 +08:00
和在 2015 , 2014 年学 JavaScript 有啥区别?
peneazy
    10
peneazy  
   2016-10-06 07:09:29 +08:00 via Android
@v9ox 区别挺大的, 2015 年用到的东西,到 2016 就淘汰了,被更先进的代替了。反正就是要不断学习,追赶前端的变化。
cuebyte
    11
cuebyte  
   2016-10-06 07:19:33 +08:00
所以直接用 jQuery 多好
MrJing1992
    12
MrJing1992  
   2016-10-06 07:25:28 +08:00
红红火火恍恍惚惚
beginor
    13
beginor  
   2016-10-06 07:37:00 +08:00 via Android
直接用原生吧
18600491593
    14
18600491593  
   2016-10-06 07:38:29 +08:00
现在学正是赶上好时候。
g0thic
    15
g0thic  
   2016-10-06 07:44:02 +08:00 via iPhone
不学这破前端了
zhaohui318
    16
zhaohui318  
   2016-10-06 08:07:43 +08:00
哈哈,这两天在看 Angular2 , 有点这样的感觉
SilentDepth
    17
SilentDepth  
   2016-10-06 08:21:15 +08:00
有点矫情,不过大概作者就是要这种效果。
只是都知道 Angular 了,其他的都不知道有点诡异
FrankFang128
    18
FrankFang128  
OP
   2016-10-06 08:31:44 +08:00
@SilentDepth 用 NG 1.x 的时候,并不需要知道这些玩意。
reallarry
    19
reallarry  
   2016-10-06 08:39:34 +08:00 via Android
前端变化得很快啊
SilentDepth
    20
SilentDepth  
   2016-10-06 08:42:22 +08:00
@FrankFang128 是不需要,我是说与 Angular 同时期的热门库那么多,居然一个都没听说有点不可思议,除非是「听说 Angular 能做这件事,那我就只看它的文档就好了!」这样的思路,而且还需要异常的专注力(手动滑稽)
blacklee
    21
blacklee  
   2016-10-06 09:06:42 +08:00
那么看来我还只是在用 jQuery 是挺落伍的了
Gheng
    22
Gheng  
   2016-10-06 09:16:56 +08:00
不要为了得出一个结论,就到处找论据支持,稍微有点辩证思维吧。
angelface
    23
angelface  
   2016-10-06 09:34:35 +08:00
哈哈, 太牛了, 一字不落看完, 我终于大概知道这些东西都干什么的了,之前一直没时间研究这些到底干嘛的。
kingcos
    24
kingcos  
   2016-10-06 09:40:37 +08:00 via iPhone
看哭了。。(; ̄ O  ̄)

有没有什么前端学习路线…
zhangbohun
    25
zhangbohun  
   2016-10-06 09:42:51 +08:00 via Android
Python 躺枪(-.-)
wolfan
    26
wolfan  
   2016-10-06 09:43:32 +08:00 via Android
@kingcos 找准一个,就只干它一个,嗯就这样,要不会学傻的。
xcv58
    27
xcv58  
   2016-10-06 09:56:35 +08:00   ❤️ 1
哈哈。
光有 Redux 是不够的, Redux 并不是 Flux 。不,也不能这么说 Facebook 的人说 Yes and No. 巴拉巴拉巴拉……

Redux 本身并不复杂,就是 Actions, Reducers, Store 结合起来管理你的 React 组件的状态。
但为了更好的使用 Actions, Reducers 你需要用 Redux-act 或者 Redux-actions 来避免大量的字符串常量。
你还需要使用 Redux Thunk 来控制异步 Reducers ,不过 redux-saga 更加强大。
Reudx 还有很多 debug 工具你一定要在开发过程中使用……

……
……
……

L3ve
    28
L3ve  
   2016-10-06 10:06:30 +08:00
Python 3 是什么东西,我只知道 Python 2.7...
upczww
    29
upczww  
   2016-10-06 10:08:06 +08:00 via Smartisan T1
贵圈真乱
SuperMild
    30
SuperMild  
   2016-10-06 10:10:33 +08:00 via iPad
不断有更新更好的东西出来不是很好吗?难道一成不变吃老本过日子才好?
Joway
    31
Joway  
   2016-10-06 10:12:00 +08:00
Python3 如果能有一个 babel 工具就屁事都没有了 ......
nikoukou
    32
nikoukou  
   2016-10-06 10:14:30 +08:00
@L3ve 梗是 python2 更新到 python3 大改,很多不兼容,然后 python3 的社区就是文章里提到一直追新技术帮着更新各种库的群体。。。
toloric
    33
toloric  
   2016-10-06 10:31:56 +08:00
哈哈哈,我做课程的时候就是这样, Babel Webpack ES2015 全讲了,附上地址: https://github.com/hugojing/web-lessons
Hyperion
    34
Hyperion  
   2016-10-06 10:39:07 +08:00
讲道理,现阶段成套工具真的完全靠谱的还是少数,再怎么组件化最终目的不往 Web Components 靠的都是棒槌。

感觉这个行当为了减低工程师自己的可替代性,牺牲了太多和自己工资没有关系的东西。
Technetiumer
    35
Technetiumer  
   2016-10-06 10:48:08 +08:00   ❤️ 1
补充:

后端?
你可以试试 Node.js
deeporist
    36
deeporist  
   2016-10-06 10:50:35 +08:00
看标题一股知乎风 内容倒是很讽刺很好玩啊哈哈哈哈
visonme
    37
visonme  
   2016-10-06 10:51:16 +08:00
前端更新太快
技术还是那个技术,同类化的框架和库太多了,加上各种层出不穷的概念,以及实验性的作品,以及大牛,大公司都想着立新,所以项目中容易出现选择难问题。
sitin
    38
sitin  
   2016-10-06 10:55:10 +08:00
[It ’ s the future – Medium]( https://medium.com/@boopathi/it-s-the-future-7a4207e028c2#.tml0tns5d) 之前看到一篇类似文章
yangtze
    39
yangtze  
   2016-10-06 11:15:46 +08:00 via iPhone
Oracle 之于 Java 的例子, 2333
zxhy
    40
zxhy  
   2016-10-06 11:23:23 +08:00
是啊,都 2016 年了,,,泪奔。。
caixiexin
    41
caixiexin  
   2016-10-06 11:32:38 +08:00 via Android
作为 Java 码农,真真看吐了。。😂
dxcqcv
    42
dxcqcv  
   2016-10-06 11:53:27 +08:00
什么 angular 没人用了?
n6DD1A640
    43
n6DD1A640  
   2016-10-06 11:53:51 +08:00
Python :我趟这么远。。
palmers
    44
palmers  
   2016-10-06 11:58:32 +08:00
和久必分啊 哈哈哈 现在是百花齐放 百家争鸣的时候
liuxu
    45
liuxu  
   2016-10-06 12:01:20 +08:00
@Borden 这个梗可以 233
abcdGJJ
    46
abcdGJJ  
   2016-10-06 12:03:06 +08:00
果然 PHP 是世界上最好的语言
ilovesusu
    47
ilovesusu  
   2016-10-06 12:05:16 +08:00
吓得我都不打算碰前端了.
beilun
    48
beilun  
   2016-10-06 12:10:35 +08:00
都是弄潮儿╮(╯▽╰)╭
Rocko
    49
Rocko  
   2016-10-06 12:14:36 +08:00 via Android
不过显然我们做 Web 开发的,喜欢先把事情搞复杂,然后回归到最朴素的状态。每年我们都是这么搞的。你就看着吧,过不了两年,我们就可以在网页上写汇编了。
adv007
    50
adv007  
   2016-10-06 12:30:48 +08:00 via iPhone
不用纠结于各种库,框架,做到与时俱进信手拈来即可
rapospectre
    51
rapospectre  
   2016-10-06 12:30:59 +08:00 via Android
作为一只后端狗,今年看前端的知识树时就和文中一模一样,一直处于一脸懵逼的状态
FrankFang128
    52
FrankFang128  
OP
   2016-10-06 13:07:04 +08:00
@Livid 楼上是在拉皮条么……
tmy1995hflc
    53
tmy1995hflc  
   2016-10-06 13:14:18 +08:00 via iPhone
vivagonna
    54
vivagonna  
   2016-10-06 13:14:38 +08:00
@Aaronqin 你怎么知道键盘后面不是猥琐大叔
Geeker
    55
Geeker  
   2016-10-06 13:16:22 +08:00
果然 @FrankFang128 来凑热闹了,哈哈哈。 前端现在已是面向 issues 编程
FrankFang128
    56
FrankFang128  
OP
   2016-10-06 13:16:55 +08:00
@Geeker 不是我凑热闹啊,我就是热闹啊,大家来凑我。哈哈
TZ
    57
TZ  
   2016-10-06 13:34:53 +08:00
前端技术如洪水猛兽般呀
FrankFang128
    58
FrankFang128  
OP
   2016-10-06 13:40:13 +08:00
@TZ 还好吧,大部分工具都停留在字符串替换上面。
yhxx
    59
yhxx  
   2016-10-06 13:46:09 +08:00
有种去写两年后端等前端不那么疯狂了再回来干的冲动。。。
boro
    60
boro  
   2016-10-06 14:05:16 +08:00 via iPhone
要想切底杀死一门语言就应该这样。
gladuo
    61
gladuo  
   2016-10-06 14:10:49 +08:00
tabris17
    62
tabris17  
   2016-10-06 14:19:25 +08:00
一群妖艳的贱货啊
feehey
    63
feehey  
   2016-10-06 14:28:58 +08:00
已累死在路上。。。
dreamtrail
    64
dreamtrail  
   2016-10-06 14:45:06 +08:00
还在用 jQuery 的飘过,短短几年有落伍了十年的感觉
sdzbzyc
    65
sdzbzyc  
   2016-10-06 14:57:43 +08:00
正打算学,快阻止我...
FrankFang128
    66
FrankFang128  
OP
   2016-10-06 15:00:18 +08:00
@sdzbzyc 像我一样,学完再来喷。
solar
    67
solar  
   2016-10-06 15:02:48 +08:00
JavaScript 从入门到放弃 或者 Web 开发从入门到放弃
zylaputa
    68
zylaputa  
   2016-10-06 15:10:20 +08:00
WEB 开发从入门到入院
fengyuanzemin
    69
fengyuanzemin  
   2016-10-06 16:28:50 +08:00
看着这些东西我竟沉默了
xavierskip
    70
xavierskip  
   2016-10-06 16:36:45 +08:00
所以我还是只会用 jQuery
XYZHShea
    71
XYZHShea  
   2016-10-06 16:46:32 +08:00
前端的东西发展真是快。
Rabbit52
    72
Rabbit52  
   2016-10-06 16:47:30 +08:00 via Android
都是泪。。。
irrigator
    73
irrigator  
   2016-10-06 17:00:46 +08:00
“我对 JavaScript 疲劳感到疲劳”
与其浪费时间抱怨,不如去做点有意思的东西。
mudkip
    74
mudkip  
   2016-10-06 19:27:13 +08:00
我觉得这篇文章可以改名为:「 2016 年前端开发最佳实践」
总结得挺好的。
wizardforcel
    75
wizardforcel  
   2016-10-06 19:32:55 +08:00
“从学会到重学”
zhidian
    76
zhidian  
   2016-10-06 20:15:52 +08:00
我挺 Makefile 和 Typescript 。 JS 的工具链太复杂了!
saberlily
    77
saberlily  
   2016-10-06 20:58:22 +08:00
TS 和 FLOW 用哪个比较好?
ferrum
    78
ferrum  
   2016-10-06 21:20:11 +08:00 via iPhone
SystemJS 和 Webpack 哪个诞生更早?

最近在看 Angular 2 ,文档的 quickstart 还是用着 SystemJS ,而 angular-cli 却转到 Webpack 去了,有点乱。
sunnysign
    79
sunnysign  
   2016-10-06 21:41:42 +08:00
使用最广泛的才是王道,那些新的、奇的、小众的最终还是经不住时间考验。能站住脚的一定是凤毛麟角
Sasasu
    80
Sasasu  
   2016-10-06 21:59:01 +08:00 via Android
偷偷的告诉你,其实后端也不再手写 makefile 了,现在一般用 cmake 或者 qmake🤣🤣🤣
isundust
    81
isundust  
   2016-10-06 22:29:42 +08:00 via Android
@Technetiumer 这很好
ByZHkc3
    82
ByZHkc3  
   2016-10-06 22:39:54 +08:00
前端到处都是坑,但是 jQuery 依旧是你大爷
murmur
    83
murmur  
   2016-10-06 22:41:56 +08:00
@ferrum ng2 换编译引擎可以大幅降低 bundle 尺寸 而且扔掉 systemjs 的依赖 一定要换 而且这是趋势
fhefh
    84
fhefh  
   2016-10-06 22:48:32 +08:00
现在做的东东 基本上还要管 IE7 IE8 /(ㄒoㄒ)/~~ 每次版本低的浏览器出问题还得解释半天(非开发人员,用户)
Majirefy
    85
Majirefy  
   2016-10-06 22:52:10 +08:00 via iPhone
这他妈的就是我自学前端遇到的!一摸一样的疑惑
murmur
    86
murmur  
   2016-10-06 22:58:23 +08:00   ❤️ 1
@zhidian ts 真的没什么卵用, js 本身的弱类型就是优势,如果强类型能解决代码质量问题的话,那 c#和 java 应该是最好的语言,项目质量也应该是最高的
实际上并不是如此,代码质量的好坏只跟工程师的水平、责任心和代码审查有关,一个缺少管理的团队,也就第一周写的代码最好看,后面赶工写出来的代码娘亲都不认
如果强制定义变量类型有用,为什么项目依然要设计要写文档? java 的组件也少不了文档
太神话 ts 真不好,这东西我感觉就是将挺活的 js 复杂化了,如果你的项目非要强类型才做的下去,不如招一些更靠谱的工程师来
zhuangzhuang1988
    87
zhuangzhuang1988  
   2016-10-06 23:20:46 +08:00 via iPad   ❤️ 1
@murmur 瞎扯
ygmpkk
    88
ygmpkk  
   2016-10-06 23:27:44 +08:00 via iPhone
如果你爱一个人就让他去学前端,因为那里是天堂;如果你恨一个人就让他去学前端,因为那里是地狱。
murmur
    89
murmur  
   2016-10-06 23:54:39 +08:00
@zhuangzhuang1988 看清现实吧,什么叫瞎扯,这就是国内很多软件公司的现状,一个新人来公司,第一个项目,他如果没接触过这个团队,最安全的一定是抄其他人的代码,抄文档中给的例子,因为这样容易过第一个阶段的代码审查。等牛逼了,就敢自己写了,敢对着 api 猜参数不去看文档,对于那种悟性好一点的,甚至敢直接硬肛 framework ,直接 hack 里面的东西了。 private 和 public 有用么?有用,那是写给君子的, mybatis 很多例子都是直接用反射肛掉 private 然后自己把东西换进去,没办法,再灵活也比不上需求的灵活是不是?

也许是我见识少,还没见过一个最先设计为弱类型的语言,演化演化就成了强类型,如果真这样,别折腾 js 了好么,你们需要 csharpscript ,这个语言有你想要的所有语法糖和特性
qdwang
    90
qdwang  
   2016-10-07 00:05:01 +08:00
@murmur 真是不知者无畏啊 真敢说 哈哈
jiyinyiyong
    91
jiyinyiyong  
   2016-10-07 00:19:13 +08:00
ClojureScript 发来贺电 http://clojurescript.org/
zhuangzhuang1988
    92
zhuangzhuang1988  
   2016-10-07 00:21:52 +08:00 via iPad
@jiyinyiyong http://fable.io fable 也发下。
laobubu
    93
laobubu  
   2016-10-07 00:23:30 +08:00
哈哈哈太现实了,前端的各种乱七八糟的东西,现在就像洪水一样根本停不下来。

不知道大水何时退去。
chengzi
    94
chengzi  
   2016-10-07 00:34:55 +08:00
论注释,我只服微软那一套,注释确实写得不错,用着舒服。
jiyinyiyong
    95
jiyinyiyong  
   2016-10-07 00:41:32 +08:00
@zhuangzhuang1988 诶, 这个不错哦, F# 牛逼
Thiece
    96
Thiece  
   2016-10-07 03:15:01 +08:00 via Android
一大篇文章来给 Python
Thiece
    97
Thiece  
   2016-10-07 03:15:38 +08:00 via Android
黑 Python
abcfyk
    98
abcfyk  
   2016-10-07 09:55:18 +08:00
@murmur 深感赞同
CtrlSpace
    99
CtrlSpace  
   2016-10-07 10:04:25 +08:00
哈哈哈哈哈哈哈哈哈哈哈
qihboy
    100
qihboy  
   2016-10-07 10:12:06 +08:00
我大 python 躺枪躺得够深,笑死我了。

前端界们现在在做的事,真的是为了前端而前端。
前端现在的状态是把后端解放了,但却把自己又绕进去了。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   956 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 22:43 · PVG 06:43 · LAX 14:43 · JFK 17:43
Developed with CodeLauncher
♥ Do have faith in what you're doing.