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. flex控件总结

    Flex基本控件总结 一.flex控件的分类:文本控件(text controls).数据源控件(data provider controls).菜单控件       (menu  controls) ...

  2. 连连看的原生JS实现

    那天闲来无事,便想找个小游戏来打发时间,后来便找到了连连看, 玩了一会儿感觉无聊,想到各位高手用JS做的各种小游戏,便想自己也来做一个,于是便有了这几天的成果. 代码是用 原生JS 实现的,只是用来学 ...

  3. iOS 图形编程总结

    iOS实现图形编程可以使用三种API(UIKIT.Core Graphics.OpenGL ES及GLKit). 这些api包含的绘制操作都在一个图形环境中进行绘制.一个图形环境包含绘制参数和所有的绘 ...

  4. 深入探讨 CSS 特性检测 @supports 与 Modernizr

    什么是 CSS 特性检测?我们知道,前端技术日新月异的今天,各种新技术新属性层出不穷.在 CSS 层面亦不例外. 一些新属性能极大提升用户体验以及减少工程师的工作量,并且在当下的前端氛围下: 很多实验 ...

  5. Omi教程-插件体系

    插件体系 Omi是Web组件化框架,怎么又来了个插件的概念? 可以这么理解: Omi插件体系可以赋予dom元素一些能力,并且可以和组件的实例产生关联. omi-drag 且看这个例子: 点击这里→在线 ...

  6. MySQL备份说明

    第一次发布博客,发现目录居然不会生成,后续慢慢熟悉博客园的设置.回正文--- 1 使用规范 1.1 实例级备份恢复 使用innobackupex,在业务空闲期执行,考虑到IO影响及 FLUSH TAB ...

  7. 《深入理解Java虚拟机》学习笔记之内存回收

    垃圾收集(Garbage Collection,GC)并不是Java语言的半生产物,事实上GC历史远比Java久远,真正使用内存动态分配和垃圾收集技术的语言是诞生于1960年的Lisp语言.经过半个世 ...

  8. Web前端与移动开发学习路线图

    文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 这里整理的Web前端与移动开发学习路线图包含初中级两个部分,你可以通过百度云盘下载观看对应的视频 链接: http://pan.ba ...

  9. Unity Shader 知识点总结(二)

    紧接着上一篇文章的shader入门知识的总结,本文主要总结shader中的纹理贴图.透明度混合.顶点动画.后期特效处理等操作.如果有什么地方有错,请指出更正,谢谢.本文的代码主要来自开源书:unity ...

  10. 跨专业学习编程的苦逼生活 QWQ嘤嘤嘤

    一串串小小的代码,竟然可以做出辣么多的东西,彻底颠覆了我的世界观.人生观.价值观. 话不多说,一个例子证明一切>>>> <!DOCTYPE html> <ht ...