1.0什么是nodejs

1.1定义:

Node.js是Javascript除了浏览器之外可以运行的另一个环境(runtime)。可以为我们提供开启服务功能和提供文件读写功能

1.2特点:

1)基于google浏览器的v8引擎

2)事件驱动、非阻塞I/O

3)因为第二个特点,nodejs相比其它的后台语言要高效、轻量。

4)开源并且跨平台。

.net: 闭源,只能在window系统下面运行(非常尴尬)

java: 开源,跨平台

1.3学习网站:

1)nodejs.org

评价:nodejs的官网,主要作用是下载nodejs的版本,以及查看它的帮助文档

2)npmjs.com

评价:nodejs的开源包管理网站,将来如果某些功能在nodejs还不存在,可以直接去npm中找对应的开源包,或者自己有一些好的点子写成了代码,也可以放到npm上(缺点:是一个国外网站,而且是纯英文的)。

淘宝也通过将国外的网站所有包下载下来做了一个克隆版本(镜像地址:https://npm.taobao.org/),这个镜像版本仅仅只是为了提高国内开发人员的下载速度,并不是说它里面的内容是中文的。

3)github.com

评价:全球最大的开源托管库,可以在上面找各种程序的源代码以及分享源文件

4)stackoverflow.com

评价:全球最大的问答社区

5)google.com

评价:搜索技术文章或者解决程序上的一些问题(一般建议上google)

2.0node的使用:

nodejs运行有两种模式:

1)REPL:交互式运行环境(给开发人员的测试的模式)

在shell中直接输入node敲击回车,会进入REPL模式。可以在这个模式下面自己写一些js代码来测试效果。

REPL环境中的常用指令:

  • ctrl + c 两次:退出REPL环境
  • ctrl + d 一次:退出REPL环境
  • .exit 退出REPL环境
  • ↑↓:查看RPEL的历史操作记录
  • _: 得到上一次操作的结果
  • tab(tab键):查看nodejs中的API
  • .save fileName:以js文件的形式将当前REPL会话保存到硬盘中
  • .load fileName: 将硬盘中的js文件以REPL的形式读取出来

2)正常开发模式(执行js文件)

使用步骤:

1)写好一个js文件

2)在js文件所在的位置打开powershell,输入指令node fileName.js能得到js的执行结果。

3)也可以在sublime中安装terminal插件(ctrl+shift+p ->package controll:install -->terminal)

案例:用nodejs写一个js文件去执行,再写一个服务器去给大家访问

3.0nodejs的常用API:

1)global对象:

作用:全局对象。类似于javascript中的window对象

什么是全局对象:在nodejs中,所有的js都有运行在node环境下的,在这个环境中可以直接使 用很多方法和属性,而管理这些方法和属性的对象就叫做全局对象。

golbal中的方法和属性:

1. global.setTimeout(function(){},time);

//异步执行的方法

2. global.setImmeditate(function(){})

//异步执行的方法(优先级要高于setTimeout)

对比:process.nextTick(function(){});//异步执行的另一个方法(优先级比上面两个都高)

总结:三个方法都是异步执行的代码,如果同时放在一起,nextTick优先级最高,setImmediate其次,setTimeout最低。常用的是setTimeout.

全局对象中的方法在任何js文件中都可以直接使用,不需要通过require方法再单独导包。而其它非全局对象中的方法如果要使用的话需要导包(如:要使用http中的方法需要require('http'))

3. __dirName:得到当前文件所在的路径(这个属性虽然是列在全局对象,但是它得到的却是具体某个js文件中的路径,也就是说每个文件都有一个。每个文件中都有的对象我们把他叫做伪全局对象)

对比:process.cwd:得到当前文件的执行路径:执行路径与文件所在路径不一样

4. __fileName: 得到当前文件的全路径(物理路径+文件名),它与__dirName一样,也是一个伪全局对象。

5. process对象:

process.abort()//立即结束js代码的运行,下面的代码不再执行

process.arch() //得到当前运行环境所在平台

porcess.argv() //得到当前文件的执行参数

返回值为一个数组,数组中的第一个值,第二个值为默认值,分别为当前repl环境的执行进程,以及当前node执行的js文件的绝对路径(__fileName)

如果将来执行js文件的时候手动传入了参数,那么这些参数会按顺序被添加到argv的数组中。

应用:写一个命令行版的小型计算器

process.env //得到当前操作系统中环境变量

应用:用于区别生产环境和正式环境(通过执行时传入set 变量值=变量名 && node 运行程序来执行。注意:powershell中不认识&&指令,必须要去cmd中执行)

process.stdout.write()//输出内容

console.log的底层其实就是通过这个方法来输出的。

process.stdout.write输出的只能是字符串,并且不带换行

应用:使用这个方法完成命令行的小动画

process.stdin //监控输入的对象

process.stdin.on('readable',function(){})//当输入内容敲击回车时会触发这个事件中的回调函数

process.stdin.read();

得到在输入回车前输入的内容(以二进制的形式得到的,如果直接输出会以buffer数组的形式输出,toString以后才会转为字符串)

2) root对象

这个对象与global对象是一样的都是一个全局函数(可以理解为root是global的别名)

小练习:在不引入其它的文件的基础上在一个文件中引入另一个文件中的变量

注意点: 在REPL环境中定义的所有的变量都会加载到全局对象中,在单个js文件的中定义的变量,只要不是定义在全局对象上,是不会加载到全局环境中。

什么是node.js的更多相关文章

  1. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  2. 利用Node.js的Net模块实现一个命令行多人聊天室

    1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...

  3. Node.js:进程、子进程与cluster多核处理模块

    1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...

  4. Node.js:理解stream

    Stream在node.js中是一个抽象的接口,基于EventEmitter,也是一种Buffer的高级封装,用来处理流数据.流模块便是提供各种API让我们可以很简单的使用Stream. 流分为四种类 ...

  5. Node.js:Buffer浅谈

    Javascript在客户端对于unicode编码的数据操作支持非常友好,但是对二进制数据的处理就不尽人意.Node.js为了能够处理二进制数据或非unicode编码的数据,便设计了Buffer类,该 ...

  6. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

  7. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

  8. Node.js入门(一)

    一.Node.js本质上是js的运行环境. 二.可以解析js代码(没有浏览器安全级的限制): 提供系统级的API:1.文件的读写 2.进程的管理 3.网络通信 三.可以关注的四个网站: 1.https ...

  9. Node.js学习笔记——Node.js开发Web后台服务

    一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

  10. Node.js入门

    开始之前,安利一本正在看的书<站在两个世界的边缘>,作者程浩,上帝丢给他太多理想,却忘了给他完成理想的时间.OK,有兴趣的可以看一看. node.js如标题一样,我也是刚开始接触,大家一起 ...

随机推荐

  1. Javascript基本概念(一)

    JavaScript基本语法: ECMAScript的语法大量借鉴了C以及其他类C语言的语法. ECMAScript中的一切(变量.函数名.操作符)都区分大小写. 标识符: 含义:指变量.函数.属性的 ...

  2. JS作用域理解

    1.JS解析步骤: a.预解析 将变量声明提升: 将函数声明及函数内容提升,可以理解成原来位置的函数在解析代码时已经提到代码初始位置: 遇到重名,只留下一个: 如有重名变量和函数,留下函数: 如有两个 ...

  3. JAVA设计模式:代理模式&& 装饰模式区别

    在前面学习了代理模式和装饰模式后,发现对两者之间有时候会混淆,因此对两者进行了区别和理解: 装饰模式你可以这样理解,就像糖一样,卖的时候商家大多要在外面包一层糖纸,其实原本还是糖. public in ...

  4. 轻松理解python中的闭包和装饰器(上)

    继面向对象编程之后函数式编程逐渐火起来了,在python中也同样支持函数式编程,我们平时使用的map, reduce, filter等都是函数式编程的例子.在函数式编程中,函数也作为一个变量存在,对应 ...

  5. html5 离线存储 地理信息与本地存储

    搭建离线应用程序 ①服务器设置头信息 : AddType text/cache-manifest .manifest ② html标签加 : manifest=“xxxxx.manifest” ③写m ...

  6. linux下redis 集群配置

    redis.conf 配置文件说明 daemonize no --是否把redis-server启动在后台,默认是“否”.若改成yes pidfile /var/run/redis.pid --当Re ...

  7. Python求解数组重新组合求最小值(优酷)

    题目描述:题目:含有n个元素的整型数组,将这个n个元素重新组合,求出最小的数,如(321,3,32,) 最小数为321323 题目分析: 将数组中所有元素填充到个数相等,填充的数字为最后一位的数字,如 ...

  8. 自定义view(一)

    为什么标题会是自定义view(一)呢?因为自定义view其实内容很多,变化也很多,所以我会慢慢更新博客,争取多写的有关的东西,同时,如果我以后学到了新的有关于自定义view的东西,我也会及时写出来. ...

  9. mfc---CFileDialog的过滤器

    CFileDialog的过滤器每种类型由两部分组成“tda|*.tda”,两种类型之间用“|”隔开

  10. mac环境,搭建python+selenium遇到的问题

    安装过程: 1.下载安装pip,下载并且解压文件(默认路径即可),打开终端,执行sudo python setup.py install,系统自带python,也可以不安装 2.执行 sudo eas ...