node第二天

node第二天

1.0各种shell:

1.1什么是shell:

就是系统内核的一层壳,作用是保护内核同时传递人与计算机交互的信息。它只是系统的一个工具,我们可以使用它来操作计算器。

1.2常用的shell:

1)CMD:

windows + r  打开面板中输入cmd回车

特点:很多都是window下面的指令

2)powerShell:

特点:它能够兼容windows和 (linux ,uinx)下面的指令

Osx -> unix

3)git bash:

特点:它能够兼容windows和 *inux (linux ,uinx)下面的指令

1.3常用的shell指令:

1) cd:用于改变路径,在三种形式

(1) cd ./=》当前目录,

(2) cd ../=》回到上级目录,

(3) cd a=》在当前目录下去找有a文件夹

注意点:

a)如果要改变盘符,在cmd中要先转换到对应的盘符上去,再进入子文件夹;如果是powershell可以直接跨盘符。

b)如果要改变盘符,在cmd中不用加上cd

2) clear/cls:清屏,清除当前shell中的内容

(1) cmd中清屏只能用cls

(2) powershell中清屏既可以用clear,又可以用cls

3) dir/ls 列出当前目录下所有的文件

(1) cmd中列出目录只能用dir

(2) powershell中列出目录既可以用dir,又可以用cls

4) tree 使当前目录下所有的文件结构(只包含文件夹)以树状显示出来

1.4 shell的其它作用:打开应用程序

步骤:

1. 在shell转到要打开应用程序所在的路径,

2. 在shell中输入".\"加上应用程序的名字

2.0环境变量:

2.1作用

用于指定系统文件的默认打开路径,当在cmd/powershell/运行中打开文件时会,除了在当前目录下面去找对应的文件以外还有会环境变量对应的目录下面去文件。

2.2分类

用户变量:只有当前登录的用户才能使用

系统变量:所有的用户都能使用到

3.0Nodejs的安装

3.1方法一:直接使用nodejs的安装包

使用注意点:不建议使用。因为nodejs更新换代太快,如果出了新的版本就重新安装一次太浪费时间。

3.2方法二:使用nvm来安装:

优点:

1)可能同时管理多个nodejs版本

2)更新了新的nodejs只需要知识版本号就可以通过nvm来下载了

安装步骤:

1)下载nvm工具,并安装(设置两个路径:一个是nvm存放的路径,另一个是nodejs存放的路径)

2)打开nvm,通过指令来安装node:

nvm install nodejs的版本号 + 回车 可以下载对应版本的nodejs.

3.3nvm,nodejs,npm之间的关系:

nvm:nodejs的版本管理工具,可以下载nodejs以及改变正在使用的nodejs的版本

nodejs:提供node环境,其中集成大量的核心模块

npm:每个版本的nodejs都自带的一个工具,他们以帮助nodejs去上传和下载新的第三方包

4.0nvm的常用指令:

1)nvm list

-查看当前已安装的所有nodejs版本

2)nvm install nodejs的版本号

-安装指定版本的nodejs

3)nvm uninstall nodejs的版本号

-卸载指定版本的nodejs

4)nvm use nodejs的版本号

-将指定的nodejs版本设定为当前使用的nodejs环境

注意问题:

1)如果直接安装nvm的话是没有nodejs版本的,所以一般安装完nvm以后要通过nvm指令再次安装需要的nodejs版本。

2)nvm安装nodejs其实就是从互联网上将nodejs对应的版本下载到nvm所在的目录下的文件夹下,当文件下载完成以后文件中的nodejs的小图标会变成nodejs的六边形图标,如果不是,并且下载也停止了,说明下载失败,请卸载后重新下载。

3)版本下载完成之后需要通过nvm use 指令来使用对应的nodejs版本,使用版本的本质上将下载好的文件拷贝到安装nodejs的目录下面。

4)通过node -v可以查看使用的node的版本

5)如果用的是苹果的osx系统请使用tnvm(淘宝出的一款在苹果电脑上安装nodejs的版本工具)

5.0什么是nodejs

5.1定义:

Node.js是一个Javascript除浏览器之外可以运行的另一个环境(runtime)。

5.2特点:

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

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

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

4)开源并且跨平台。

5.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)

6.0node的使用:

nodejs运行有两种模式:

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

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

REPL环境中的常用指令:

  • ctrl + c 两次:退出REPL环境
  • ctrl + d 一次:退出REPL环境
  • .exit 退出REPL环境
  • ↑↓:查看RPEL的历史操作记录
  • _: 得到上一次操作的结果
  • 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文件去执行,再写一个服务器去给大家访问

7.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文件的中定义的变量,只要不是定义在全局对象上,是不会加载到全局环境中。

时间: 2024-10-07 19:04:11

node第二天的相关文章

node学习 process笔记

如果你是node大神好了可以关闭此页面了因为接下来游览会白白浪费你许多时间,最近一直学习node.js今晚看到 alsotang 在 github上的node教程 https://github.com/alsotang/node-lessons.其中有一段代码不太明白其含义process.argv[2] 具体代码如下: //当前文件main.jsvar fibonacci = function(n){ //这是一个斐波那契数列 if(n === 0 || n === 1){ return n;

Cocos2d-X3.0 刨根问底(五)----- Node类及显示对象列表源码分析

上一章 我们分析了Cocos2d-x的内存管理,主要解剖了 Ref.PoolManager.AutoreleasePool这三个类,了解了对象是如何自动释放的机制.之前有一个类 Node经常出现在各种场合,不是做为参数就是做为返回值,那么这一章节我们就去看看这个Node类到底在Cocos2d-x里处于一个什么样的地位. 直接进入主题,我们打开CCNode.h文件.我去,这个文件有1500行,这么长怎么看啊,放松一下整体看过一遍,松了一口气,还好,还没那么糟,文件虽然大,注释占了有90%的篇幅,代

10.Node.js核心模块

1.全局对象2.常用工具3.事件机制4.文件系统访问5.HTTP服务与客户端 一.全局对象(Global Object), 与window对象一样 process ==> 全局变量, 描述当前Node.js进程状态的对象, 提供了一个操作系统的简单接口 1.process.argv ==> 命令行参数数组, 第一个元素是node, 第二个元素是脚本文件名, 第三个元素开始每个元素是一个运行参数2.process.stdout ==> 标准输出流,通常我们使用的 console.log()

Nodejs开发指南-笔记

第三章 异步式I/O与事件编程3.1 npm install -g supervisor supervisor app.js 当后台修改代码后,服务器自动重启,生效修改的代码,不用手动停止/启动3.2 单线程异步I/O 减少了多线程的开销,对于操作系统,创建线程的开销很大,需分配内存.列入调度.同时线程切换时 需要内存换页,CPU的缓存被清空,切换回来时,需要重新从内存中读取信息,破坏了数据的局部性. 异步读取文件: var fs = require('fs') fs.readFile('tes

二叉树的java实现

import java.util.Arrays; import java.util.Stack; // 链式存储的二叉树 public class BSTree { private TreeNode root = null; public TreeNode getRoot() { return root; } public BSTree(TreeNode root) { this.root = root; } public boolean isEmpty() { return root == n

二叉树,约瑟夫,多项式合并!

2015.2.9星期一 晴 树的基本概念: 度数:一个节点的子树的个数为该节点的度数,一颗数的度数是指该树中节点的最大度数树叶或者终端节点:度数为0的节点高度或者深度:节点的层数等于父节点的层数加1,根节点的层数定义为1,树中节点层数最大值称为该树的高度或者深度有序树:若树中每个节点的各子树的排列为从左到右,不能交换,即兄弟之间是有序的,则称该树为有序树满二叉树:深度为K时有2^k-1个节点的二叉树完全二叉树:只有最下面两层就度数小于2的节点,且最下面一层的叶节点集中在最左边的若干位置上. 对于

Java内存泄漏问题

1:java中垃圾回收机制主要完成下面两件事情: 跟踪并监控每个java对象,当某个对象处于不可达状态时,回收该对象所占的内存 清理内存分配,回收过程中产生的内存碎片 2:对于JVM的垃圾回收机制来说,是否回收一个对象的标准是: 是否还有引用变量引用该对象? 只要还有引用变量引用该对象,立即回收机制就不会回收它. 3:基本上,可以把JVM内存中对象引用理解成一种有向图,把引用变量,对象都当成为有向图的顶点,将引用关系当成图的有向边,有向边总是从引用端指向被引用的对象. 因为java所有对象都是由

广义表(线性表的推广)

广义表的定义 广义表是线性表的推广. 广义表一般记作LS=(d0,d1,...dn-1) 其中,LS是广义表(d1,d2,...dn)的名称,n是它的长度.在线性表的定义中,ai(1<=i<=n)只限于是单个元素.而在广义表的定义中,di可以是单个元素.也可以是广义表,分别称为广义表LS的单元素和子表.习惯上,用大写字母表示广义表的名称,用小写字母表示单元素.当广义表LS非空时,称第一个元素d0为表头(Head),称其余元素组成的表(d1,d2,...dn-1)是LS的表尾(Tail). 显然

编译器架构的王者LLVM——(7)函数的翻译方法

LLVM平台,短短几年间,改变了众多编程语言的走向,也催生了一大批具有特色的编程语言的出现,不愧为编译器架构的王者,也荣获2012年ACM软件系统奖 -- 题记 版权声明:本文为 西风逍遥游 原创文章,转载请注明出处 西风世界 http://blog.csdn.net/xfxyy_sxfancy 函数的翻译方法 前面介绍了许多编译器架构上面的特点,如何组织语法树.如果多遍扫描语法树.今天开始,我们就要设计本编译器中最核心的部分了,如何设计一个编译时宏,再利用LLVM按顺序生成模块. 设计宏 我们