Node.js基础学习笔记(1)

版权声明:本文为博主原创文章,转载请注明出处,谢谢大家O(∩_∩)O https://blog.csdn.net/Stripeybaby/article/details/81007181

Node.js安装

安装教程可参考菜鸟教程的文档,链接如下:
https://www.runoob.com/nodejs/nodejs-install-setup.html

Node.js基础-搭起一个web服务器

在电脑上创建项目文件夹,并建立一个server.js文件,例子来源于官网nodejs.org

通过“win+R”,输入cmd打开命令行,定位到所在的项目路径,可以看到有日志信息打印出来:

在浏览器端访问这个http,可以看到有hello World打印出来:

这样,通过简单的几行代码一个简单的web服务器就搭建好了。
对代码进行解释:

var http=require('http');
//加载一个http模块,这个模块是由JavaScript来编写的,
//它的主要职责时负责创建web服务器及处理HTTP相关的任务等等
http.createServer(function(req,res){
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end('Hello World\n');
}).listen(1337,'127.0.0.1');
//通过createServer来创建一个服务器,通过listen让服务器在指定端口1337监听请求,
//服务器准备好了,就能收到任何来自端口的请求。
//当请求进来之后,我们需要告诉nodejs下一步需要做什么,
//通过一个匿名函数来执行相应的操作,它包含了两个参数,一个请求体req和一个响应体res

当我们将res.end里的信息改变之后,需要重启服务器在浏览器端才会信息更新。
通过createServer创建的服务器,我们可以定义一个变量来接受,然后通过这个变量去调用相关操作

这种写法所呈现的效果是一样的。

Node.js的模块与Commonjs规范

在Javascript里面,通过var或者function可以定义一个全局访问的变量或函数,但当批量的js文件引入同一个页面时,很容易出现变量被覆盖、方法被重写的情况,特别是当存在依赖关系时,很容易导致页面出错。Javascript缺少一种模块管理机制来隔离实现一些js片段。通常是采用命名空间的方式,把变量和函数限定在某个特定的作用域内,人为约定一套命名规范来约束代码,从而保证代码的安全执行。
像jQuery就封装了很多变量和方法,是直接访问不到的,通常需要用$来调用,commonjs不同于jQuery,它是一套规范,包括了模块、包、系统、二进制等等来约束js如何去组织和编写代码,大部分标准也是在拟定和讨论之中的。

首先是把这些执行不同任务的特定的代码块或者代码文件看作是一个独立的模块,每个模块可以看作是一个独立的作用域,但并不是孤立的,可能存在一定的依赖关系,每个模块都可以分为三个部分:模块的定义、标识和引用。

commonjs对很多开源产品产生了很大的推动作用,比如Nodejs、Couchdb,它们都是对这个规范的实现,虽不是百分百的实现,但它的反馈又反过来促进了commonjs规范的进一步优化,形成了一个良性循环。

Nodejs基于commonjs的理念,实现了自己的一套模块管理系统,它的每一个js文件都可以看作一个独立的模块,不需要又命名空间,不用担心变量和污染和方法使用的隔离。这些独立的模块或文件通过彼此的依赖和引用,可以组合形成更强大完整的模块。

模块的分类

在Nodejs里面,文件和模块是一一对应的。模块有几种不同类型,大概可以分为:核心模块、文件模块和第三方模块。根据模块的类型,nodejs可以通过路径、通过模块名引用,如果用名称引用非核心模块,nodejs会把名称映射到对应的模块的路径,那些包含了核心函数的核心模块会在node启动时被预先加载。非核心模块包括通过npm安装的第三方模块以及自己或他人创建的本地模块。

简单的Nodejs模块

模块的流程:

首先是创建模块,也就是一个入口的js文件,里面加入了一些特定的功能,导出模块就是把这个功能和文件也就是模块名建立关系,加载模块就是在其它文件里加载这个模块,Nodejs是使用require来完成这个工作的,最后就是使用模块,直接调用模块中定义好的方法来做一些特定的逻辑处理,完成某种功能。

[未完待续。。。。。。]

猜你喜欢

转载自blog.csdn.net/Stripeybaby/article/details/81007181