一直以来,我都仅仅将JavaScript视为一种前端技术,由客户端的浏览器解释并执行,这种观念在心中已经根深蒂固。直到Node.js的出现,这种观念才被彻底地击碎。通过Node.js技术,JavaScript能实现服务器端应用。带着强烈的好奇心,我决定试图了解Node.js。说干就干,在Google上搜了一圈,发现了很多关于Node.js的资料,Node.js社区非常的活跃,最后找到了《Node入门》这本书。简单浏览了下,发现这本书挺适合像我这样的Node.js新手,所以我决定仔细把这本书读完(看完大概花了10小时,看的慢)。下面就是我做的读书笔记:
1,JavaScript从诞生至今,其存在形态经历了三个阶段:一是,上世纪90年代作为对DHTML进行增强的小工具;二是,jQuery这样严格意义上的前端技术;三是,由于Node.js的出现,作为服务端技术。
2,要实现在服务器端运行JavaScript代码,代码需要先被解释然后正确的执行。Node.js的原理正是如此,它使用了Google的V8虚拟机(即:Chrome浏览器使用的JavaScript运行环境),来解释和执行JavaScript代码。
3,Node.js事实上既是一个运行时环境,同时又是一个库。
4,我们还要对此(一个实际的使用Node.js的应用)进行抽象,来寻找一种适合构建更为复杂的Node.js应用的方式。
5,使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器。
6,使用JavaScript编写的一个简单的HTTP服务器原型:
// Version 1 var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(8888); console.log("Server has started."); // Version 2 var http = require("http"); function onRequest(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started.");
7,在JavaScript中,一个函数可以作为另一个函数的参数进行传递。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。
8,用Node.js构建的HTTP服务器是单进程的,但请求任何时候都可能到达,所以需要对请求进行异步处理。
9,这个就是回调(Call Back)。我们给某个方法传递一个函数,这个方法在有相应事件发生时调用这个函数进行回调。
10,构建一个简单Node.js外部模块示例:
// Server模块 var http = require("http"); function start() { function onRequest(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started."); } exports.start = start;在主文件main.js中使用Server模块:
var server = require("./server"); server.start();
11,为了让服务器将不同的请求路由到相应的代码,我们需要为路由提供请求的URL和GET及POST参数。因此,我们需要查看HTTP请求,从中提取出请求的URL以及GET/POST参数。
12,就像这样,我们传递一个东西,然后服务器利用这个东西来完成一些事情。但是,服务器其实不需要这样的东西,它只需要把事情做完就行,为了把事情做完,你根本不需要东西,你需要的是动作。
13,Node.js在不新增额外线程的情况下,依然可以对任务进行并行处理。实际上,Node.js是单线程的,它通过事件回圈(event loop)来实现并行操作。因此,我们要充分利用这一点,尽可能的避免阻塞操作,而多使用非阻塞操作。要实现非阻塞操作,我们需要使用回调函数,通过将函数作为参数传递给其它需要花时间处理的函数。
不得不说,像这样通过构建一个不太难但却是真正的实际应用,一步一步分析其所运用技术及其具体细节,最后构建出应用的方式,非常适合初学者的入门。通过《Node入门》这本书,相信你能快速的进入Node的奇妙世界。
最后,贴上《Node入门》这本书的中文网上地址和书中源码在Github上地址。
中文地址:http://www.nodebeginner.org/index-zh-cn.html
Github地址:https://github.com/ManuelKiessling/NodeBeginnerBook/tree/master/code/application
(完)
相关推荐
《Node入门书原始码》是针对Node.js初学者的一份宝贵资源,包含了作者对Node.js基础知识的个人理解和学习笔记。这个开源项目不仅提供了书中部分关键代码的实现,还展现了作者在学习过程中的思考路径,这对于那些希望...
在网上搜刮到了41页的《node入门》,自己学着搭建了一个Web应用。并且在刷新成就感后,就抱读《了不起的node.js》。现准备看完这本书后再回读《深入浅出node.js》。 2.搭建环境 运行git上的例程(3次报错) 在官网...
这个名为“VUE入门学习项目资料与学习笔记.zip”的压缩包包含了一份详细的学习资源,帮助初学者深入理解Vue.js的核心概念和技术。以下是对这些资源的详细解读: 1. **Vue环境搭建**:Vue的安装通常有两种方式,一种...
Express是基于Node.js平台的高性能...通过阅读《express入门笔记》和实践以上示例,你将逐步掌握Express的基本用法,并能构建自己的Node.js Web应用。继续学习和实践,探索Express的更多可能性,提升你的Web开发技能。
JavaScript,也被称为JS,是一种广泛应用于网页和网络应用的脚本语言。它是Web开发的核心技术之一,用于...在阅读"JavaScript入门课堂随堂笔记"的过程中,建议结合实际项目进行练习,以便更好地理解和运用所学知识。
Node.js是一种基于Chrome...通过阅读这份学习笔记,你将能够系统地学习Node.js开发,从基础概念到实际应用,逐步成为一名熟练的Node.js开发者。无论是搭建Web服务器、处理数据库交互,还是实现实时通信,都能游刃有余。
通过阅读《jBPM-jPDL学习笔记.pdf》,你可以深入了解这些概念,并学会如何使用jPDL编写和部署流程定义,从而在实际项目中实现灵活、可扩展的业务流程管理。这份资料对于初学者来说是一份很好的入门指南,能够帮助...
TypeScript入门教程是由xcatliu编写,他根据自身学习TypeScript的经历,整理出了一系列的学习笔记。这本教程从JavaScript程序员的角度出发,帮助初学者循序渐进地理解TypeScript,并提供了一个与官方手册不同的视角...
通过阅读这些资源,可以加深对各种页面常见布局、知名网站实例的理解,并在实践中不断提升前端开发技能。 #### 总结 文档《vue项目总结和前端学习笔记-***.pdf》为前端开发者提供了系统的学习指南,从Vue基础到...
技术为主,读书笔记,随笔,理财为辅,做一个终身学习者。 收获不止技术,还有财富。 专栏 目录 文章 文章版权为夜尽天明所有,允许允许,不得转载;如要转载文章,请联系笔者。 Vue3.x 打字稿 软技能 前端工程师的...
- **阅读笔记**:用户可以通过ID或搜索关键词获取笔记内容,应用程序负责从存储中读取并显示。 - **列出笔记**:应用程序遍历存储的所有笔记,将它们以列表形式展示给用户。 2. **天气应用**: - **API使用**:...
学习笔记都在这里了 好好学习,天天向上!生命不息,阅读不止! 本仓库参考以下书籍或资料 JavaScript高级程序设计(第三版) You don't know JS 系列 ES6 标准入门 Node.JS深入浅出 图解HTTP HTTP权威指南 Head First...
这份"JavaScript1小时快速上手笔记快速复习"旨在帮助已有编程基础的学习者迅速掌握JavaScript的基本概念和常用技巧,以便在短时间内入门并进行有效的复习。 1. **变量与数据类型**:JavaScript支持七种数据类型,...
在学习Node.js的过程中,有很多在线资源可以帮助你快速入门和提升技能。MDN Web文档提供了详尽的JavaScript参考,而Node.js官网则有详细的API文档和教程。除此之外,像Stack Overflow、GitHub和各种技术博客也是获取...
Python以其易读性强、语法简洁而闻名,是初学者入门的理想选择。其主要知识点包括: 1. **基础语法**:变量、数据类型(如整型、浮点型、字符串、列表、元组、字典、集合)、流程控制(条件语句、循环语句)、函数...
总的来说,这份"JavaScript学习笔记"旨在帮助初学者快速入门,并为有经验的开发者提供参考。通过深入学习,你可以掌握JavaScript的核心原理,运用到实际项目中,从而成为一名熟练的前端开发者。
而“综合资源”则暗示了笔记中可能包含了各种类型的资料,如代码示例、教程链接、阅读材料、视频教程等,这些都为全面理解和应用IT知识提供了丰富的素材。 【压缩包子文件的文件名称列表】:“OneNote 笔记本”通常...
Nodebeginner -Node.js入门书 教程D3 NodeJSKoans 中级JS笔记 高级JS注释 现在使用JavaScript 互动课程:关闭或关闭 学习AngularJS-这样的列表,但重点是AngularJS。 网站/博客 特定JavaScript NodeHispano ...
JavaScript,简称JS,是一种广泛应用于Web开发的轻量级编程语言,主要负责网页的动态效果和用户...通过阅读这样的笔记,可以快速理解和掌握JavaScript的核心概念,同时也能看到实际应用中可能遇到的问题和解决方案。