学习node.js是否需要先学习Javascript?

chasears
  • 77

最近和朋友要做一个项目,本来打算用java来做,但感觉学习曲线太大,所以决定采用node.js,想问一下学习node.js是否需要先学习Javascript?然后求推荐点入门书籍或资料。

回复
阅读 33.9k
27 个回答

浏览器端完整的JavaScript实现是由以下3个不同部分组成的:ECMAScript、文档对象模型、浏览器对象模型。

对于服务器端,以上三部分你就只需要看ECMAScript相关的内容就行了,剩下的东西是Node.js独有的知识点,看官方文档即可。

只说初级的学习曲线,以做一个 Web 项目为考量范围,Node.js 的学习曲线未必为会比 Java 平缓,特别是你还不会 Javascript 的前提下。我个人不推荐这么选,如果当前的紧急目标是实现一个 Web 项目,那么 Ruby 的 Rails 框架和 Python 的 Django 框架还有 PHP 的 Laravel 框架都是比较容易上手的,Java 的 Play 也可以一试。

如果问我的推荐?Rails(因为别的我不熟……)

肯定的啊 因为node.js 就是在服务器端执行的javascript

Node 的曲线未必比 Java 要平缓, Javascript 必须是基础,浏览器部分不必看,但是想学好,犀牛书是一定要看的。

要说快速上手,Python 或 PHP 吧,不说提高,只论快速做出东西, 这俩对付起来速度还挺快。

楼上说的很有道理,java太麻烦,用了python以后不爱再用java了,ruby on rails web项目已经完美了。php的laravel可以说事php 的ror,CI更简单,但是理念没有Laravel先进。要是连javascript还要现学的话还不如学一下php,再用个mvc框架呢。js想写好真不太简单,更别说nodejs 在express框架

答案是肯定的,而且你还必须非常精通js...我就是死在这个上面的...祝你好运

如果我说不用是不是会被吐槽。因为我是几乎0基础上手nodejs的。不过如下知识是必备的:
1、一门其他语言的使用经验,如php,c++等
2、熟悉面向对象思想,还有js的面向对象和模块化的编程思想
3、熟悉nodejs的异步模型,其实说白了就是异步回调的基本原理。
4、熟悉json的使用

如果是做web开发,恐怕要从express开始,一些url解析的知识也是必备的。

mpr0xy
  • 4
新手上路,请多包涵

我在只会写alert("hello world!")时,开始了写nodejs,nodejs入门并不难.
照着一些案例代码写,开始可能很不习惯异步的写法,于是就使用async库.
传统数据库设计不够简介,于是就使用levelup.
当然javascript的特性不了解难免会
采坑,边采边写吧,理解和记忆都会很深刻.
比如在异步里不小心用了全局变量,就使用变量时少写了var,就悲剧了.

Javascript编程精粹
Node.js编程指南

Selveskii
  • 4
新手上路,请多包涵

以我个人的经历来看,不需要。

前端的 JavaScript 教程很多时候有很多奇怪的关注点,比如说 undefined 与 null 有哪些区别啊,为什么 == 不如 === 啊(我观察了一下,我写的所有小 Node.js 项目这两者毫无区别),或者莫名其妙的东西相加起来的和是什么。相反,我在 Node 里遇到的几乎所有对象都是……我也不知道叫啥了,对应 C 的 POD?

而且现在后端用 Traceur 那么方便,transpile 一下 ES6 就可以上了,都不需要看原型链就能写 class,多好。

需要注意的几个点大概有:

  • 异步概念本身,数据真的只能在回调函数里用啊。这个看似很好理解,但是要形成直觉要不少时间。
  • 对必包理解的要好。看看 SICP,做做 2.2.4 那章节,或者用 JavaScript 写个 parser combinator?我没写成就是了……
  • 知道 this 的实现方法:func.call(thisPtr, ...),这样你给对象写异步函数就不会死了。
  • 熟悉一下 ES6 的 Generator,如何用它解决 callback-hell。我现在想通了,千万不要看什么教程,你直接对着 Generator 撸,搞懂了基本的语法自己去构造解法。提示:generator 是可以通过 yield 暂停的。检验搞没搞懂的方法?suspend.js v0.5.0 有个 bug,题主能看出来对 Node 这坨乱七八糟的东西就有个大概的了解了……

那个 bug 真坑爹啊……

需要学前面的ECMAScript。看完之后,后面的dom和bom就不用看了,直接看node的官方api文档就好。

是这样:
学javascript,
不要学DOM

JIE_ZDOK
  • 5
新手上路,请多包涵

可以使用typescript,或者coffeescript,来开发nodejs,适合之前写 类 形式语言(java)的同学,能很快上手。

可以先把javascript的基础语法看了,因为node.js是构建在javascript基础之上的,盖房子不能没有砖吧~

然后可以看看现成的一些demo,熟悉一下,找找感觉。

说是找找感觉,其实是让你适应node.js的异步编程模式,等你这个适应了,那node.js上手的速度就快的飞起。

学写文章之前是否需要先学认字?

AntSworD
  • 5
新手上路,请多包涵

要学js,但是浏览器内的js可以不学

这是肯定的,Node平台需要用javascript语言来实现程序,所以对于楼主所问,javascript的基础是要有的,还要有HTML、CSS、勤看API的能力与基础。javascript的基础可以参考书籍《Javascript高级编程 第三版》进行恶补基础。

需要,nodejs 就是基于 javascript 开发的。

其实你想问的是项目初的架构选型问题, 如果不给出具体的业务需求,很难给出具体的建议。

php, java, nodejs, ruby, python 都可以。

但是平心而论, nodejs 的学习曲线真的不适合新手。
nodejs 小坑大坑太多,这跟 javascript 有关系。

许多 nodejs 在社区还在讨论的问题,在 java 里已经很成熟了。

我的建议还是不要轻易尝试,nodejs 不适合新人玩。

如果你科研能力极强,以上当我没说,nodejs 真的很有趣。

必须学,要不然一头雾水

不用,是两种不同的语言