nodejs学习笔记---1

1.初识NodeJs

什么时候NodeJS

能做什么

NodeJS环境搭建和运行

2.webstorm的使用

工程创建

webstorm的NodeJs配置

NodeJs代码提示

3.Node和JS的异同

基本语法

内置对象

全局对象

作用域

4.模块的使用

全局作用域

global对象

模块

模块概念

模块作用域

模块对象module

5.模块加载机制

模块的加载

require()

模块路径处理

模块文件查找机制

6.模块-module和exports

模块的创建

module对象

module.exports对象

exports对象

7.global对象

模块对象

__filename

__dirname

全局对象

setTimeout

setInterval

clearTimeout

clearInterval

Date

8.process对象

概念

属性和方法

argv

execPath

env

version

versions

pid

title

arch

platform

cwd()

chdir(directory)

memoryUsage()

exit(code)

kill(pid)

9.process对象-输入输出流

stdin、stdout:标准输入输出流(IO)

标准输入设备

标准输出设备

process.out.write()

输出流

process.in.resume()

恢复输入流

process.in.on(‘data‘)

接收输入流数据事件

10.Buffer-1

概念

Buffer类

new Buffer()

创建Buffer对象

Buffer对象数据的基本操作

bf[index] : 获取下标对应数据

bf.length : buffer长度

字符串和字节的区别

11.Buffer-2

Buffer对象的一些常用属性和方法

write()

toString()

toJSON()

slice()

copy()

12.Buffer-3

Buffer类的一些常用属性和方法

isEncoding()

isBuffer()

byteLength()

concat()

1、初识NodeJs

javascript是由三部分组成的

Ecmascript  定义了这门语言的一些基础,语法、数据类型、结构 还有一些常用的对象

BOM  基于Ecmascript扩展出来的用于页面操作元素的方法

DOM 基于Ecmascript扩展出来用于操作浏览器的一些方法

NodeJS也是基于Ecmascript扩展出来的一些操作非浏览器的一些方法,比如操作OS操作系统、file文件系统、database数据库、net网络

安装及环境配置(windows系统)

2、编辑器使用webstrom

可以直接右键run查看

使用setting配置nodejs的提示

3、node和js的区别

/*在ecmascript部分,nodejs和js其实是一样的,比如数据类型的定义,语法结构,内置对象
* 在js中的顶层对象 window
* 在node中的顶层对象 global
*   注意:在node中也没用什么window
*
* */
var a=100;
console.log(a); //100

var d=new Date();
console.log(d.getFullYear()); //2045
console.log(d.getMonth()+1); //10

var arr=[1,2,3];
arr.push(4);
console.log(arr); //[1,2,3,4]

function Person(name){
    this.name=name;
}
Person.prototype.run=function(){
    console.log(this.name+‘ running‘)
}

var p1=new Person(‘leo‘);
p1.run(); //leo running

4、模块的使用

在node中定义一个a,使用global不能访问到,是因为a是一个局部变量

var a=100;
console.log(global.a); //undefined

在node中有这样一个规定:

  1. 在node中,文件和模块是一一对应的,也就是一个文件就是一个模块
  2. 每个模块都有自己的作用域
  3. 我们使用var来申明的一个变量,它并不是全局的,而是属于当前模块作用域下的
var a=100;
console.log(a); //100
global.a=200;
console.log(a); //100
console.log(global.a);//200

说明此时定义的a和global.a是两个变量

//__filename:当前文件被解析后的绝对路径
console.log(__filename); //d:\wamp\www\nodejs\node1.js

以上可以得出结论:每个文件都有自己的模块,每个模块都有这个的属性

5、模块加载系统

定义一个node2.js的文件

console.log("这是node2.js");

要想在node1.js里面引用可以用

require(‘./node2.js‘)//这是node2.js

模块加载机制的两个问题

1.加载路径

require(‘模块加载的路径‘)

路径可以写相对路径或者绝对路径

2.文件查找特点:

  1. 首先按照加载的模块的文件名称进行查找
  2. 如果没有找到,则会在模块文件名称后加上.js的后缀,进行查找
  3. 如果还没有找到,则会在文件名称后加上.json的后缀,进行查找
  4. 如果还没有,则会在文件名称后加上.node的后缀,进行查找
  5. 如果还没有,会抛出错误

文件名称> .js >.json>.node >错误

6、模块-module和exports 

在一个模块中通过var定义的变量,其作用域范围是当前模块,外部不能够直接的访问
如果我们想在一个模块中能够访问另外一个模块中定义的变量,可以

  1. 把变量作为global对象的一个属性 ,但是这种做法不推荐
  2. 使用模块对象module

把变量作为global对象的一个属性

global.a=100;

使用模块对象module

module:保存提供和当前模块有关的一些信息,可以通过

console.log(module)

来查看都有哪些属性

在这个module对象,又一个子对象,exports 对象,我们可以通过这个对象把一个模块中的局部变量对象进行提供访问

在node5.js中写入

var a=100;
module.exports.a=a;

在node4.js中引入

var m5=require(‘./node5‘);//这个方法的返回值,其实就是被加载模块中的module.export
console.log(m5);//{ a: 100 }

在模块作用域内,除了module.exports还有一个内置模块对象,exports, 他其实就是module.exports

console.log(module.exports==exports)//true

返回值是true

所以也可以写为

exports.a=a;

输入结果一样

定义的一些细节尽量不去破坏它们的引用关系,

module.exports=[1,2,3]//如果不是赋值,而是重新定义,exports和module.exports的指向关系已经断开了
exports=[1,2,3]//这种定义也会断开

7.global对象

时间: 2024-12-08 16:46:19

nodejs学习笔记---1的相关文章

nodejs学习笔记(基于v7.4.0)

nodejs学习笔记 一.buffer: 全局对象(单例   Buffer.from   Buffer.alloc   Buffer.allocUnsafe ) 编码类型 描述 ascii 仅仅用于7位ascall数据编码,速度快,如果设置了将会剥离高位 utf8 多字节的编码的Unicode字符,网页文档大部分默认都为它. utf16le 小端编码的Unicode字符,2或者4个字节 ucs2 utf16le的别名 base64 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之

nodejs学习笔记_nodejs和PHP在基础架构上的差别--共享状态的并发

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明确node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,:共享状态的并发. node採用一个长期执行的进程 而php在apache中会产生多个进程 例如以下图所看到的: 代码验证: PHP: <?php $i = 0; $i++; echo $i nodejs: var http = require('http'); var i=0; http.creat

nodejs学习笔记之安装、入门

由于项目需要,最近开始学习nodejs.在学习过程中,记录一些必要的操作和应该注意的点. 首先是如何安装nodejs环境?(我用的是windows 7环境,所以主要是windows 7的例子.如果想看linux下的安装可以参考http://www.cnblogs.com/meteoric_cry/archive/2013/01/04/2844481.html) 1. nodejs提供了一些安装程序,可以去官网(http://nodejs.org/download/)按照自己的机器进行下载,下载完

Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)

目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子 上传功能命名用formidable实现,示例很简单! PS:最近比较忙,距上一次更新已经比较久了^_^! formidable简介 nodejs原生实现上传还是比较麻烦,有兴趣的自已去参考一下网上有网友写的代码 这里选择了formidable,也是githu

Nodejs学习笔记(三)——一张图看懂Nodejs建站

前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试Nodejs>之后,代码编写环境就从Sublime转战到Eclipse下,感觉顺手多了.于是就跟着Scott老师学起了Nodejs建站的课程(推荐大家点进去看看),踏上了未爬先走的路子. 作为一个白里透白的小白来说,今天主要记录下如何用Nodejs搭建一个小小的网站,以及自己对于这种Nodejs建站的运

NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证

JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器.每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情.例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象.而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS就相应提供了fs.http等内置对象.E

nodejs学习笔记_nodejs和PHP在基础架构上的区别--共享状态的并发

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明白node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,:共享状态的并发. node采用一个长期运行的进程 而php在apache中会产生多个进程 如下图所示: 代码验证: PHP: <?php $i = 0; $i++; echo $i nodejs: var http = require('http'); var i=0; http.createSer

Nodejs学习笔记(一)——初识Nodejs

前言:目前工作的分内之事相对较为单一,希望可以通过工作之余的时间给自己充充电,只是没有一个学伴或大神带,只能说是摸索着前进.起初准备好好研究下Spring这个框架,下载了源码,结合书籍准备一探究竟,看到了Spring如何加载bean,又如何转换成自己的数据格式等等,虽尚未涉及实战,倒算是对之前工作中遇到的一些困惑有所帮助.合计准备写一篇博客以示我的“大数据小世界”的博客还不至于长草太深,只是后来机缘巧合,想了解下关于爬虫一类的东西,Spring就先做搁置. 在度娘上搜索爬虫,铺天盖地的各色技术引

Nodejs学习笔记(一)--- 简介及安装Node.js开发环境

目录 学习资料 简介 安装Node.js npm简介 开发工具 Sublime Node.js开发环境配置 扩展:安装多版本管理器 学习资料 1.深入浅出Node.js http://www.infoq.com/cn/minibooks/nodejs 2.Node.js开发指南 简介(只捡了我觉得重要的) Node.js是让Javascript脱离浏览器运行在服务器的一个平台,不是语言: Node.js采用的Javascript引擎是来自Google Chrome的V8:运行在浏览器外不用考虑头

Nodejs学习笔记(十)--- 与MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门

目录 简介 MongoDB安装(windows) MongoDB基本语法和操作入门(mongo.exe客户端操作) 库操作 插入 查询 修改 删除 存储过程 nodejs操作MongoDB 插入 查询 修改 删除 调用存储过程 写在之后... 简介 MongoDB 开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序:高伸缩性: NoSQL毕竟还处于发展阶段,也有说它的各种问题的:http://coolshell.cn/articles/5826.html  官网地