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. Spark源码分析之Spark-submit和Spark-class

    有了前面spark-shell的经验,看这两个脚本就容易多啦.前面总结的Spark-shell的分析可以参考: Spark源码分析之Spark Shell(上) Spark源码分析之Spark She ...

  2. win8命令行

    Win8运行命令.快捷键大全合集 目前看来,Win8还不错,好的产品就是能在短时间改变你使用习惯的产品,首先来给大家讲下windows8 运行命令在哪?其实你可以用Win+R或者你用 WIN+Q再在A ...

  3. BZOJ 3653: 谈笑风生(DFS序+可持久化线段树)

    首先嘛,还是太弱了,想了好久QAQ 然后,这道题么,明显就是求sigma(size[x]) (x是y的儿子且层树小于k) 然后就可以发现:把前n个节点按深度建可持久化线段树,就能用前缀和维护了 其实不 ...

  4. linux CentOS 权限问题修复(chmod 777 -R 或者chmod 755 -R问题修复)

    我个人曾经有一次经历: 就是在修改文件夹权限的时候,本来该执行: #chmod 777 -R ./ 结果我漏掉了那个".";执行的命令是chmod 777 -R /. 这个命令一定 ...

  5. 蔡勒(Zeller)公式:根据日期推算是星期几

    Zeller's Congruence: w=y + [y/4] + [c/4] - 2c + [26(m+1)/10] + d - 1 公式中的符号含义如下:w:星期: w对7取模得:0-星期日,1 ...

  6. 【Java基础】String StringBuffer StringBuilder

    String String是不可变的 我们都知道String不是基本数据类型,而是一个对象,并且是final类型的,不可变的.(public final class String) 查看以下代码: S ...

  7. scss 学习笔记

    由于没有办法在网络上找到适合顾客的模板,同时之前自己写css也没有很好的管理方式,最终选择了scss. Nested #main p { color: #00ff00; width: 97%; .re ...

  8. 每天一个linux命令(26)--用SecureCRT来上传和下载文件

    用SSH管理Linux 服务器时经常需要远程与本地之间交互文件,而直接使用 SecureCRT 自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmod ...

  9. [POJ1028]Web Navigation(栈)

    这题是01年East Central North的A题,目测是签到题 Description Standard web browsers contain features to move backwa ...

  10. java开发之阿里云对象存储OSS和云数据库Memcache的使用

    web开发中标配:aliyun ECS(阿里云服务器),aliyun RDS(阿里云数据库),aliyun OSS(阿里云对象存储),aliyun Memcache(阿里云缓存数据库). 今天就介绍下 ...