码迷,mamicode.com
首页 > Web开发 > 详细

nodejs学习笔记---1

时间:2015-10-08 18:17:48      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

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对象

nodejs学习笔记---1

标签:

原文地址:http://www.cnblogs.com/eveblog/p/4861674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!