node基础

## Node简介

### 客户端的JavaScript是怎样的

- 什么是 JavaScript?
+是一个脚本语言
+运行在浏览器(浏览器的js解析内核 v8)
+实现用户的交互 (interactive)
+ 变量 赋值 循环 逻辑 判断 分支 对象 函数。。。。(语言自带的)
+ dom 操作 (平台赋予的)
+ bom 操作 (平台赋予的)
+ 操作本地文件 (技术可以实现 安全层面禁止)
+ ajax
- JavaScript 的运行环境?
+浏览器内核解析内核 es6

- 浏览器中的 JavaScript 可以做什么?


- 浏览器中的 JavaScript 不可以做什么?(不安全)
+访问数据库
+不能对文件进行操作
+对os 进行操作
+原因 是不安全 和浏览器运行机制有关
- 在开发人员能力相同的情况下编程语言的能力取决于什么?

+cordova hbuilder 平台 platform
+java java虚拟机 (运行平台)
+php php虚拟机
+c# .net framework mono
+js 解析内核 chrome v8
- JavaScript 只可以运行在浏览器中吗?
+不是



### 什么是Node
+node.js 一个框架 一个库 一门语言
+node 是一个平台
### 为什么是JavaScript
+node js 不是因为js 产生的
+node 选择了js
+Ryan dahl
+2009 2 月份 node有想法
+2009 5 月份 githup 开源
+2009 11月份 jsconf 讲解推广node
+2010年底 被xxx公司收购
+2018 发布有重大bug
+npm
+githup 世界上最大的同性交友网站 码云

 
### Node在当下Web开发领域的应用
1. node 作为服务器来使用
2. node 高并发中间层使用

### 哪些公司在用
+lindin node 领英 脉脉
+天猫 node +java+传统
+neteasy 西山居
### 重点理解

- Node是一个JavaScript的运行环境(平台),不是一门语言,也不是JavaScript的框架;
- Node的实现结构;
- Node可以用来开发服务端应用程序,Web系统;
- 基于Node的前端工具集 npm node插件包管理工具
 
### node 简介
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,是全球最大的开源库生态系统。
官网 http://nodejs.cn/
npm 插件官网:https://www.npmjs.com/
*****

## 环境配置

### 安装包的方式安装

- 安装包下载链接:
+ Mac OSX: [darwin](http://npm.taobao.org/mirrors/node/v5.7.0/node-v5.7.0.pkg)
+ Windows:
* [x64](http://npm.taobao.org/mirrors/node/v5.7.0/node-v5.7.0-x64.msi)
* [x86](http://npm.taobao.org/mirrors/node/v5.7.0/node-v5.7.0-x86.msi)
- 安装操作:
+ 一路*Next*


### 相关版本

- node版本常识
+ 偶数版本为稳定版 (0.6.x ,0.8.x ,0.10.x)
+ 奇数版本为非稳定版(0.7.x ,0.9.x ,0.11.x)
+ LTS(Long Term Support)
+ [LTS和Current区别](https://blog.csdn.net/u012532033/article/details/73332099)
- 操作方式:
+ 重新下载最新的安装包;
+ 覆盖安装即可;
- 问题:
+ 以前版本安装的很多全局的工具包需要重新安装
+ 无法回滚到之前的版本
+ 无法在多个版本之间切换(很多时候我们要使用特定版本)



### NVM工具的使用

> Node Version Manager(Node版本管理工具)

由于以后的开发工作可能会在多个Node版本中测试,而且Node的版本也比较多,所以需要这么款工具来管理


#### 安装操作步骤

1. 下载:[nvm-windows](https://github.com/coreybutler/nvm-windows/releases/download/1.1.0/nvm-noinstall.zip)
2. 解压到一个全英文路径
3. 编辑解压目录下的`settings.txt`文件(不存在则新建)

+ `root 配置为当前 nvm.exe 所在目录`
+ `path 配置为 node 快捷方式所在的目录`
+ `arch 配置为当前操作系统的位数(32/64)`
+ `proxy 不用配置`

4. 配置环境变量 可以通过 window+r : sysdm.cpl

+ `NVM_HOME = 当前 nvm.exe 所在目录`
+ `NVM_SYMLINK = node 快捷方式所在的目录`
+ `PATH += %NVM_HOME%;%NVM_SYMLINK%;`
+ 打开CMD通过`set [name]`命令查看环境变量是否配置成功
+ PowerShell中是通过`dir env:[name]`命令

5. NVM使用说明:

+ https://github.com/coreybutler/nvm-windows/

6. NPM的目录之后使用再配置


### 配置Python环境

> Node中有些第三方的包是以C/C++源码的方式发布的,需要安装后编译
> 确保全局环境中可以使用python命令




### 环境变量的概念

> 环境变量就是操作系统提供的系统级别用于存储变量的地方

- Windows中环境变量分为系统变量和用户变量
- 环境变量的变量名是不区分大小写的
- 特殊值:
+ PATH 变量:只要添加到 PATH 变量中的路径,都可以在任何目录下搜索



### Windows下常用的命令行操作

- 切换当前目录(change directory):cd
- 创建目录(make directory):mkdir
- 查看当前目录列表(directory):dir
+ 别名:ls(list)
- 清空当前控制台:cls
+ 别名:clear
- 删除文件:del
+ 别名:rm

> 注意:所有别名必须在新版本的 PowerShell 中使用

###npm 使用入门

官网:[https://www.npmjs.com/](https://www.npmjs.com/)

安装:无需安装

查看当前版本:

```
$ npm -v
```

更新:

```
$ npm install npm@latest -g

```
初始化工程

```
$ npm init

$ npm init --yes 默认配置
```

安装包

使用npm install会读取package.json文件来安装模块。安装的模块分为两类
dependencies和devDependencies,分别对应生产环境需要的安装包和开发环境需要的安装包。

```
$ npm install

$ npm install <package_name>

$ npm install <package_name> --save

$ npm install <package_name> --save-dev
```
更新模块
 
```
$ npm update
```
卸载模块

```
$ npm uninstall <package_name>

$ npm uninstall --save lodash
```

配置npm源

* 临时使用, 安装包的时候通过--registry参数即可

  $ npm install express --registry https://registry.npm.taobao.org

* 全局使用
  ```
   $ npm config set registry https://registry.npm.taobao.org
   // 配置后可通过下面方式来验证是否成功
   npm config get registry
   //
   npm info express
  ```

* cnpm 使用
```
   // 安装cnpm
     npm install -g cnpm --registry=https://registry.npm.taobao.org

     // 使用cnpm安装包
     cnpm install express
```
##模块,包 commonjs

### commonjs规范

前端模块化:AMD,CMD,Commonjs

Node 应用由模块组成,采用 CommonJS 模块规范。

##### 定义module

每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。

##### 暴露接口

CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

```javascript
 var x = 5;
  var addX = function (value) {
   return value + x;
  };
  module.exports.x = x;
  module.exports.addX = addX;
```
##### 引用

require方法用于加载模块。

```
 var example = require('./example.js');
  console.log(example.x); // 5
  console.log(example.addX(1)); // 6
```
### 模块的分类

* 内置模块
```
  const process = require('process')
  const path = require('path')
  console.log(process.version)
  console.log(path.resolve('../'))
```
* 第三方模块
```
const request=require("request");
  console.log(request)
  request.get('http://api.douban.com/v2/movie/in_theaters', (err, response, body) => {
   if (!err) {
   // console.log(body);
   console.log(JSON.parse(body))
   } else {
   console.log(err);
   }
  })
```
* 自定义模块
  

 

posted @ 2019-02-18 12:08  格尔尼卡ぃ  阅读(288)  评论(0编辑  收藏  举报