nodejs的第二天学习

一、 Shell:
  1) 常用的shell
    a) CMD:
     window+r 打开面板中输入cmd 回车
       特点:很多都是window下面的指令

    b) powerShell:
       特点:它能够兼容window 和 (Linux,uinx)下面的指令
     Osx -? uinx

    c) git bash
     特点:它能够兼容window和*inux(linux,uinx)下面的指令
  2)常用的shell指令
  a)cd:切换路径
    (1)cd ./ 当前目录
    (2)cd ../ 回到上级目录
    (3)cd a 在当前目录下找到有a文件夹
    注意点:(1)如果要改变盘符,在cmd中要先转换到对应的盘符上去,再进入文件夹;如果是powershell可以直接跨盘符。
        (2)如果要改变盘符,在cmd中不用加上cd
  b)dir/ls:查看当前目录所有文件和文件夹
    (1)cmd中列出当前目录只能用dir
    (2)powershell总列出目录既可以用dir又可以用ls
  c)cls/clear:清屏
    (1)cmd 中清屏只能用cls
    (2)powershell中清屏既可以用clear,又可以用cls
  d)tree 使当前目录下所有的文件结构(只包含文件夹)以树状显示出来
  3)shell的气他作用:打开应用程序
  步骤:
    1. 在shell转到要打开应用程序所在的路径;
    2. 在shell中输入 ‘.\’加上应用程序的名字

二、环境变量:
  系统打开一个文件的时候会配置好的环境变量中的路径下面去寻找对应的程序(.exe)
  2.1作用:
  用于指定系统文件的默认打开路径,当在cmd/powershell/运行中打开文件时会,除了在当前目录下面去找对应的文件以外还有会环境变量对应的目录下面去文件。

  2.2分类:
  用户变量:只有当前登录的用户才能使用
  系统变量:所有的用户都能使用到

三、node安装:
  1) 使用nodejs的官网上下载的安装包来安装(一旦版本更新,需要重新安装,不推荐)
  2) 使用nvm来安装nodejs
    a) nvm仅仅只是一个nodejs的版本管理工具
    b) 优点:可能同时管理多个nodejs版本,更新了新的nodejs只需要版本号就可以通过nvm来下载了
    c) 安装步骤:
     (1) 下载nvm工具,并安装(设置两个路径:一个是nvm存放的路径,另一个是nodejs存放额路径)
     (2) 打开nvm,通过指令来安装node:
      Nvm install nodejs的版本号 + 回车 可以下载对应版本的nodejs
  3) nvm , nodejs , npm 之间的关系
    nvm :nodejs 的版本管理工具,可以下载nodejs以及改变正在使用的nodejs的版本
    nodejs:提供node 环境,其中集成大量的核心模块
    npm:每个版本的nodejs都自带的一个工具,他们以帮助nodejs去上传和下载新的第三方包

四、nvm的常用指令
  1)nvm list
    -查看当前已安装的所有nodejs版本
  2)nvm install nodejs的版本号
    -安装指定版本的nodejs
  3)nvm uninstall nodejs的版本号
    -卸载指定版本的nodejs
  4)nvm use nodejs的版本号
    -将指定的nodejs版本设定为当前使用的nodejs环境

  注意问题:
  a)如果直接安装nvm的话是没有nodejs版本的,所以一般安装完nvm以后要通过nvm指令再次安装需要的nodejs版本。
  b)nvm安装nodejs其实就是从互联网上将nodejs对应的版本下载到nvm所在的目录下的文件夹下,当文件下载完成以后文件中的nodejs的小图标会变成nodejs的六边形图 标,如果不是,并且下载也停止了,说明下载失败,请卸载后重新下载。
  c)版本下载完成之后需要通过nvm use 指令来使用对应的nodejs版本,使用版本的本质上将下载好的文件拷贝到安装nodejs的目录下面。
  d)通过node -v可以查看使用的node的版本
  e)如果用的是苹果的osx系统请使用tnvm(淘宝出的一款在苹果电脑上安装nodejs的版本工具)

五、什么是nodejs
  1)定义:nodejs 是 JavaScript 除了浏览器之外可以运行的另一个环境(runtime)。可以为我们提供开启服务功能和提供文件读写功能
  2)特点:
    a) 基于google浏览器的v8引擎
    b)事件驱动、非阻塞 I/O
    c)因为第二个特点,nodejs相比其它的后台语言要高效、轻量。
    d)开源并且跨平台
    .net:闭源,只能在window系统下面运行
    Java:开源,跨平台

  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)

六、node的使用(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文件)
    使用步骤:
    a) 写好一个js文件
    b) 在js文件所在的位置打开powershell,输入指令node fileName.js 能得到js的执行结果
    c) 也可以在sublime中安装terminal插件(ctrl+shift+p->package controll:install?terminal )
    d) 也可以在webstorm中

七、nodejs的常用API

  1) global对象
  (1)作用:全局对象。类似于javascript中的window对象
  (2)什么是全局对象:在nodejs中,所有的js都有运行在node环境下,在这个环境中可以直接使用很多方法和属性,而管理这些方法和属性的对象就叫做全局对象
  (3)golbal中的方法和属性:
    1. global.setTimeout(function(){},time); //异步执行的方法
    
    2. global.setImmeditate(function(){});    //异步执行的方法(优先级要高于setTimeout)
    
    对比:process.nextTick(function(){});      //异步执行的另一个方法(优先级比上面两个都高)
    总结:三个方法都是异步执行的代码,如果同时放在一起,nextTick优先级最高,setImmediate其次,setTimeout最低。常用的是setTimeout.
    全局对象中的方法在任何js文件中都可以直接使用,不需要通过require方法再单独导包。而其它非全局对象中的方法如果要使用的话需要导包(如:要使用http中的方法 需要require(‘http‘))

/**
 * 虽然每个nodejs中的文件都可以用到这个方法,但是它不属于全局方法(为全局对象)
 *  nextTick 在三个方法中的执行优先级是最高的
 *  setTimeout 在三个方法中是第二个执行的
 *  setImmediate最后执行
 */

//异步执行方法
process.nextTick(function(){
    console.log(‘this is nextTick‘);
})

//异步执行方法
setImmediate(function(){
    console.log(‘this is setImmediate‘);
})

//异步执行方法
setTimeout(function(){
    console.log(‘this is setTimeout‘);
},0)

    

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

var a = __dirname;
console.log(a);  //__dirname:输出当前文件的绝对路径

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

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

console.log(__filename);
//__fliename :得到当前文件所有的物理路径 + 文件名

    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-12-21 07:18:31

nodejs的第二天学习的相关文章

20155336 2016-2017-2《JAVA程序设计》第二周学习总结

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

20145301第二周学习总结

20145301第二周学习总结 教材学习内容总结 3.1 类型.变量与运算符 整数 short 2字节,int 4字节,long 8字节 字节 byte 1字节 浮点数 float 4字节,double 8字节 字符 char 2字节(包括字母.汉字) 布尔 boolean 不用在意它的存储空间(只有true/false) 注释 // 单行注释,/ / 多行注释 下图为各类型范围: 常量定义 final加在定义类型之前,表示定义的该变量将不能改变其值,如 final int a=10; 局部变量

20145326《Java程序设计》第二周学习总结

20145326<Java程序设计>第二周学习总结 教材学习内容总结 本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,java是个支持面向对象的程序语言,但在正式进入面向对象支持语法的探讨前,对于类型.变量.运算符.流程控制等,这些各种程序语言都会有的基本语法元素,还是要有一定的基础.虽然各种程序语言都有这些基本语法元素,但千万别因此而轻忽它们,因为各种程序语言都有其诞生的宗旨与演化过程,对这些基本语法元素,也就会有其独有的特性. 1. 类型 在java的世界中,并非每个东西都

2017面向对象程序设计(Java)第二周学习总结

2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为第一周学长正在家里吃西瓜吹空调.好了,闲言少叙.我先为你们介绍一下助教的职责,而后再对你们的学习情况进行总结! 身为你们本学期Java课程的助教...之一,我的任务是:指导你们学习,批改我所负责学习小组的实验作业.阅读博文并回复.其他学习小组会有另外三位助教负责.由于我们每周五都会汇总你们的情况,其

SHELL第二课学习笔记

SHELL第二课学习笔记 A.脚本规范申明信息: #!bin/bash #Date 14:00 2014-1-30 #Author xiaoping #Mail [email protected] #Function: Thsi scrits funcion is .... #version 1.1 ~ B.注意点: a.成对内容一次写出来 {}.[].''.``.""# b.[]中括号两端需要空格 c.流程控制语句一次性写完格式 d.vi多行缩进 按v进入visual状态,选择多行,

20145311 《信息安全系统设计基础》第二周学习总结

20145311 <信息安全系统设计基础>第二周学习总结 教材学习内容总结 重新学习了一下上周的一部分命令:grep main wyx.c(grep的全文检索功能)ls > ls.txt :ls内容输出到文本find pathname -mtime -n/+nfind -size -n/+n (find的功能还是比较强大) 简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分

JDBC第二次学习

脑子太笨,必须得记录下来一些文字,方便回来查询. 这是我的第二次学习JDBC的笔记,看的是传智播客——李勇老师的JDBC系列,已看到第23集. 分析在实际项目中该如何应用JDBC 一个简单用户相关的数据访问层 J2EE三层架构简介:表示层 .业务逻辑层.数据访问层,三层之间用接口隔离. 定义domain对象User,定义存取用户的接口. 用JDBC实现接口. 用配置文件(properties)和反射实现与具体类的耦合. 用图来表示: 在真实的项目开发中,我们能不能返回ResultSet对象呢?

201671010117 2016-2017-2 《Java程序设计》Java第二周学习心得

Java第二周学习心得 这一周老师在周四进行了课堂测验,完全出乎我的意料,我以为老师会在前两周上课讲一下,由于我在课前没有好好准备,反转课堂来的有的措手不及,那些题很多很多都不会,也错了很多,班上有很多表现很好的同学,他们课前准备充分,在课堂上完全没有任何压力,我也意识到了我课前没有花大量时间看书的严重性,所以我下课便去看第三章了,以后也一定要好好看书,找出不懂得问题,课上也要认真向其他优秀同学学习,不懂的问题也要想办法解决. 今天写了PPT上的任务1-9,着实也遇到了很多不会的问题,像是最后的

20145319 第二周学习总结

20145319 <Java程序设计>第二周学习总结 教材学习内容总结 本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,大致包括java语言中的类型,变量,运算符,流程以及基础语法等. 1. 类型 基本类型(每种类型都有其储存范围,如超出范围,即Overflow): 整数:可分为short整数(占2字节),int整数(占4字节),long整数(占8字节)三种,例如,int类型的十进制2其实是以000000000 00000000 00000000 00000000 000000