nodejs 初学笔记

463 阅读5分钟

Node.Js 学习笔记

安装 :

nodejs.org/zh-cn/ 查看安装成功:node -v

运行 :

  1. vscode : 点击左侧调试图标,选择运行平台 node
  2. vscode :安装插件 run coder, 运行某 JS 文件右键 Run Code

Node 相关工具

1: NVM(Node Version Manager)

( 使用 Git 安装:)
`cd ~/` 从那时的任何地方 `git clone https://github.com/nvm-sh/nvm.git .nvm`
`cd ~/.nvm` 并查看最新版本 `git checkout v0.38.0`
 通过从外壳中获取 nvm 来激活它:`. ./nvm.sh`
现在将这些行添加到您的~/.bashrc、~/.profile 或~/.zshrc 文件中,以便在登录时自动获取:(您可能需要添加到上述多个文件中)
`cd ~/`从这个地方,查看文件`ls`,查看隐藏文件`ls -a`
`export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "\$NVM_DIR/bash_completion" # This loads nvm bash_completion`
验证安装成功:`command -v nvm`:输出:nvm
  • Windows安装:
nvm-windows
nodist

2: NPM( Node Package Manager)

  • 全局安装 package命令:
`npm install forever --global (-g)`
`forever`
`npm uninstall forever --global`
`forever`
  • 全局安装的目录 Mac: /Users/felix/.nvm/versions/node/nvm各个版本/bin。

Windows: c:\users\用户\appData\Roaming\npm\node_modules

简单教程:

1. 热身知识

(1) 请求数据

ajax示例:

 const xhr = new XMLHttpRequest();
 xhr.open('get',
            'https://aldh5.tmall.com/recommend2.htm?&appId=201602265,201602267,07055,201602266,2016030118,09044,201605170,201612221,201606279,2016062710&callback=jsonp_31960259'
            );
 xhr.send()
 <!--运行:终端: npx http-server  -->

server.js示例:

const http = require('https')
http.get('https://aldh5.tmall.com/recommend2.htm?&appId=201602265,201602267,07055,201602266,2016030118,09044,201605170,201612221,201606279,2016062710&callback=jsonp_31960259', (res) => {
    let str = ''
    res.on('data', (thunk) => { //收集流
        str += thunk
    })
    res.on('end', () => { //结束
        console.log(str)
    })
})
//运行 :右键 Run Code

(2) 文件读写(file system)

const fs = require('fs');
//写文件 :(地址,内容,回调)
fs.writeFile('./log.txt', "hello", (err, data) => {
    if (err) {
    } else {
    }
})
//运行 :右键 Run Code

(3) 进程的管理(process)

console.log(process.argv.slice(2))
// 运行:在上一层文件进入终端: node index.js argv1 argv2

(4) 网络通信(http/https)

const http = require('http')
const server = http.createServer((request, response) => { //非结构,顺序不能颠倒
    let url = request.url;
    response.write(url)
    response.end()
})
server.listen(8090, 'localhost', () => {
    console.log('localhost:8090')
})
//运行 :右键 Run Code

2. npm初始化、安装、查看依赖

(1) 初始化以及安装查看依赖

| 命令 | 作用 |
| --- | --- |
|npm init -y|初始化|
| npm list | 展示依赖的结构 | 
| npm list | grep XX| 查看XX分支依赖的结构|
| npm i XX -S |生产环境安装XX依赖|
| npm i XX -D |开发环境安装XX依赖|
| npm uninstall XX  |卸载XX依赖|
| npm i --production| 测试者只需安装生产环境下的包|
| npm view XX version |查看XX依赖版本|
| npm i XX@版本号 -S| 生产环境安装某版本的XX依赖,不写版本号是安装最新|
|npm  cache clean --force |清除缓存|
|npm outdated|检查过时的软件包,没有就没有输出|

(2) npm版本号前的符号:符号+主版本号(major)+次版本号(minor)+ patch ,列:^13.0.6

| 符号 | 作用 |
| --- | --- |
|  |锁定patch |
| ^ |锁定major |
| ~ |锁定minor |
| * |最新版本 |

3. 自己开发一个最简单的包

  • 新建文件夹01-buildings,01-buildings下新建app.js,其代码:

    //const path = require('path')
    //console.log(path.resolve(__dirname,'../')) //__dirname当前文件所在的物理路径
    
    const _=require('lodash')
    function mychunk(arr){
        let arr2=_.chunk(arr,2)
        return arr2
    }
    module.exports=mychunk
    

    ,index-text.js,其代码:

    const mychunk =require('./app.js') 
    console.log(mychunk([2,3,4,5]))
    //终端运行查看效果:node index-test.js
    

    ,01-buildings下终端命令:

    npm init -y ;
    npm install lodash;
    
  • 发布 先去npm官网创建npm用户,然后01-buildings下运行终端命令:

    npm adduser 关联用户
    npm publish 发布
    
    graph TD
    创建npm用户 --> 终端关联用户 --> 终端发布
    

4. 源

4.1 手工切换

 查看当前源:npm config get registry
 切换淘宝源:npm config set registry https://registry.npm.taobao.org
 

4.2 NRM 管理源

NRM(npm registry manager) 是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速的在npm源间切换。

4.2.1 安装 NRM

命令行执行:npm install -g nrm,全局安装NRM

4.2.2 使用 NRM

执行命令nrm is 查看当前可选的源,其中,带*的是当前使用的源,上面的输出表明当前源是官方源

4.2.3 切换NRM

切换到taobao源,执行命令nrm use taobao

5 .npm脚本

5.1 配置命名:

(1)自定义命名,示例XX --> 运行时,npm run XX

(2)规定命名:start、test、dev、eject、build --> 运行时可省略run

5.2 脚本运行

5.2.1 最简单的脚本示例

在package.json下scripts中,配置, "XX":"echo hello",运行npm run XX 即运行XX配置,此处从02-npm文件下运行终端,调用greeting配置打印hello

image.png

5.2.2 升级脚本
  • 基础:XX.js文件下终端命令执行:node XX.js即运行XX.js文件

image.png

  • 升级:在package.json下scripts中,配置, "XX":"node js1路径 & node js2路径 等 "(串行运行,顺序随机),终端运行:npm run XX,即运行js1文件,js2文件..

image.png

5.3 变量

npm脚本有一个非常强大的功能,就是可以使用npm的内部变量。

首先,通过npm_package_前缀,npm脚本可以拿到package.json里面的字段。比如,下面是一个package.json.

!注意一定要在npm脚本中运行(如:npm run view)才可以,直接在命令行中运行js(如 node view.js)是拿不到值的

错误示例:(通过 XX.js)

image.png 正确示例1:(通过 XX.js)

image.png 正确示例2:(通过 配置),补:“env”:"env" ,运行列出所有环境变量 image.png

5.4 npm安装git上的包

  • 适合安装公司内部的git服务器上的项目 npm install git+https://git@github.com:xyy-github/react_note.git
  • 或者以ssh的方式 npm install git+ssh://git@github.com:xyy-github/react_note.git

5.5 cross-env使用

5.5.1 cross-env是什么?

运行跨平台设置喝使用环境变量的脚本

5.5.2 出现原因

当您使用 NODE ENV = production ,来设置环境变量时,大多数 Windows 命令提示将会阻塞报错)。(异常是 Windows 上的 Bash ,它使用本机 Bash 。换言之, Windows 不支持 NoDE ENV - production 的设置方式

5.5.3 解决

cross - env 使得您可以使用单个命令,而不必担心为平台正确设置或使用环境变量。这个迷你的包( cross - env )能够提供一个设置环境变量的 scripts ,让你能够以 Unix 方式设置环境变量,然后在 Windows 上也能兼容运行。

5.5.4 安装

npm install --save-dev cross-env

5.5.5 使用