10天前,开始学习NodeJs,10天后的今天陷入迷茫,于是不断的这个问题“如何才能深刻的理解node 的精髓??”就一直再我脑海徘徊,请各位给我指导指导(谢谢):
之前听很多人说Node 很神奇,但是一直有其他项目再做一直没有入手,以前的学习经历告诉我,一种语言就是一种思想,编程的时候尽量用这种语言的思想去写代码逻辑。于是10天前开始学习Node ,一至认为要好好的理解node 的思想精髓再何处,于是开启学习之路:
当然,刚开始先看入门资料,网上看了一些入门资料。当然国内的真的并不是很多,有的都是一些零散的,有些翻译也是不完整,权威的还是本社区最权威。 呵呵。最终还是学习 Node 入门 上面的。个人推荐可以先直接下个那个的完整demo (网上搜还有有的)看了,分析后再去看那个入门,毕竟用的是js 语言,代码还是很好懂的。它的代码逻辑块个人觉得还是很漂亮的,呵呵,你们认为呢?好吧,之后自己觉得好像有点感觉了,于是想做个网站demo练练手。 于是就再本社区看看前辈们是怎么学习的,几乎把很社区所有的帖子看了个遍, 很多有善的前辈,都有自己的学习写demo, 然后开源共享在github 上,真的很感谢他们这种无畏的精神,于是我就找了几个,比如:
- justfly 的http://www.imjustfly.net/ 在:http://cnodejs.org/topic/50326100f767cc9a519d51a6 博客中看见
- 本社区开源的 在github 上:https://github.com/cnodejs/nodeclub/#LNaN
3.lazynight的: http://lazynight.me/2009.html
4.snoopy 的博文http://cnodejs.org/topic/5007bd684764b72902c6aec9 中提到的:http://wujb.cnodejs.net/home,
还有就是我选择下载的这个博客: 5.sumory 的http://cnodejs.org/topic/4f61ccc18a06477f520ab9e6博文中提到的:基于nodejs开发的社区系统-sumorio 该项目现在还没有体验地址, 但是博文中有截图,
主要为什么选择它,自己也不知道就选择了它,可能他是选的mysq数据库吧,好吧,就开始我代码之旅
在接下来的几天中把里面的代码全部看了一遍,边看遍学习,大概学习的知识点有: express Node的MVC框架; Async;bootstrap; coffeescript;ejs;jade;mongodb;node-markdown; validator;rrest.js… 然后就到了今天; 就出现问题了;我们先来看了一下一段代码,首先附一块代码块上: 做个范例:
`enter code here` /**
`enter code here`* 删除文章
*
* [@param](/user/param) req
* [@param](/user/param) res
* [@param](/user/param) next
*/
exports.deleteArticle = function(req, res, next) {
if (!req.session.user) {
res.render('notify/notify', {
error : '未登录用户不能删除文章'
});
return;
}
articleDao.deleteArticle(req.params.article_id, req.session.user.id, function(err, info) {
if (err) {
res.render('notify/notify', {
error : '删除文章出错,请检查您是否为该文章作者或者操作是否出错'
});
return;
}
articleCategoryDao.deleteCategoriesOfArticle(req.params.article_id, function(err, info) {
if (err) {
res.render('notify/notify', {
error : '从文章分类中删除这篇文章出错'
});
return;
}
replyDao.deleteRepliesOfArticle(req.params.article_id, function(err, info) {
if (err) {
res.render('notify/notify', {
error : '删除这篇文章的回复出错'
});
return;
}
res.render('notify/notify', {
success : '删除文章成功'
});
return;
});
});
});
};
这个sumory博客中删除博客的那一个函数, 有没有感觉这个跟java 风格很相似,由于之前学习过java, 便陷入了烦恼之中: 我是不是把Node学习偏了方向? 把node 当java 用? 这个肯定不是node 的代码风格!! 于是自己又反省起来,想重新找学习node 的学习方法或者学习思路!!! 于是发布此文,忘各位予以纠正。
我想知道node 的 特点是什么。亮点是什么? 精髓是什么? 用怎么样的思路去编程才接近node的原始思想, 都是是单线程,好吧, 队友给我说叫我看node 源码, 看看这个单线程的消息队列是怎么实现的。 比如网上有说node 的响应很块,想做一个并发测试啊,或者压力测试等等,想看看node 处理异步的漂亮逻辑实现思路… 但是现在还没有的出答案…
希望各位给予指教,谢谢…
另外给大家分享几个这几天看过的不错的相关学习资料,以算回报大家: 呵呵: 采访Node.JS的创始人Ryan Dahl - node.js专业中文技术社区 - CNodeJS.ORG:http://zoomquiet.org/res/scrapbook/ZqFLOSS/data/20110412235846/
Async详解:http://freewind.me/blog/20120518/932.html 里面有一二三,
还有就是本社区了。
我的博客链接: http://www.ginchenorlee.com/?p=260 微薄:http://weibo.com/ginchenorlee
node的特点是异步IO,和轻量级吧。。。 跟java真心不一样啊。。。 我建议看一下大牛的使用 node.js 进行服务器端 JavaScript 编程这篇文章,简单几行代码就可以完成事,你用java想一想,其中差距你自然明白了。 我以前也是做java的,后来看过这篇文章真心被node震撼啊! 一说起node总比较性能,但是编码的效率才是我喜欢它的理由,而且一般来说性能怎么也中等偏上,算是性价比很高吧。
我以前也是做java的,谈谈我对node的一点点小的见解吧。 js是一种弱语法,因此灵活,而学过oop开发思路的人,在操作js的时候,就有N多的不习惯,我以前同事就很不喜欢js,但迫于国内开发人员必须从前台到后台都贯通,只能硬着头皮凑着用。js的灵活是因为他是弱语法,而且以函数function为中心,因此很容易上手。而业内,有很多高手,将js进行了封装,使得他看似面向对象,这所谓的封装,就是按照一种规范或者约定来去编码,因此格式看上去就很oop了,但仍然逃脱不了js的函数中心理论。dojo、jq、ext-core就是按照自己的编码方式,架构出一套js的框架提供给别人使用,目的就是方便,实用性强。你提供的代码确实很像java的编程风格,那是因为你看见有dao的存在,这只是名字,而CRUD的具体操作你仔细看看,就会发现跟java的不同,这里的代码是异步的。如果你设计框架,你也能模仿其他语言,或者按照自己的操作喜好来设计,也许你的框架发布之后,有人会说,这个像php,这像c#,这像… 一定要适应他的编程风格,这是nodejs倡导的,也是他的优势,千万不能被之前学过的语言先入为主,要变通。以上个人胡言乱语,仅供个人参考。