美文网首页
《Node.js》

《Node.js》

作者: 孔朝阳 | 来源:发表于2021-02-03 20:43 被阅读0次

    一、资料

    1、官网资料

    Node.js官网
    npm官网
    npm中文网

    2、参考资料

    npm发布全局包

    二、简介

    1、Node.js 是一个开源与跨平台的 JavaScript 运行时环境。
    2、Node.js 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核)。
    3、Node.js 中使用require(),而在浏览器中则使用 import

    三、使用

    1、基本操作

    // 安装Node.js
    brew install node
    // node版本
    node -v
    // 运行
    node [name].js
    // 命令行退出
    Ctrl+C 
    

    2、process模块

    Node.js 的 process 核心模块提供了 env 属性,该属性承载了在启动进程时设置的所有环境变量。process 不需要 require,它是自动可用的

    // 使用 Node.js 中内置的 process 对象获取参数,第一个参数是 node 命令的完整路径,第二个参数是正被执行的文件的完整路径。
    node [name].js joe
    node [name].js name=joe
    // 循环迭代所有的参数
    process.argv.forEach((val, index) => {
      console.log(`${index}: ${val}`)
    })
    // 创建一个排除了前两个参数的新数组来仅获取其他的参数
    const args = process.argv.slice(2)
    // 编程退出
    process.exit()
    // 环境变量
    process.env.NODE_ENV // "development"
    

    3、console模块

    该模块提供了大量非常有用的与命令行交互的方法

    // 输出
    console.log()
    // e.g.
    const x = 'x'
    const y = 'y'
    console.log(x, y)
    // 格式化输出
    // %s 会格式化变量为字符串
    // %d 会格式化变量为数字
    // %i 会格式化变量为其整数部分
    // %o 会格式化变量为对象
    // e.g.
    console.log('%o', Number)
    console.log('我的%s已经%d岁', '猫', 2)
    // 清空控制台
    console.clear()
    // count 方法会对打印的字符串的次数进行计数,并在其旁边打印计数
    console.count()
    // 打印堆栈踪迹
    console.trace() 
    // e.g.
    const function2 = () => console.trace()
    const function1 = () => function2()
    function1()
    // 计算耗时
    time() 
    timeEnd()
    

    4、readline模块

    Node.js 提供了 readline模块来执行以下操作:每次一行地从可读流获取输入

    const readline = require('readline').createInterface({
      input: process.stdin,
      output: process.stdout
    })
    
    readline.question(`你叫什么名字?`, name => {
      console.log(`你好 ${name}!`)
      readline.close()
    })
    

    四、模块

    Node.js 模块是一种可以发布到 npm 的包。

    1、package.json

    文件格式:

    package.json
    |- name // 必填;全部小写;没有空格;可用-或者_;
    |- version // 必填;格式x.x.x
    |- description // 如果为空,使用README文件第一行代替;有助于找到package
    |- main // 入口文件字段,默认值 index.js
    |- scripts 
    |- author 
    |- license 
    |- dependencies // 生产依赖
    |- devDependencies // 开发依赖
    
    For example:
    {
      "name": "my-awesome-package",
      "version": "1.0.0"
    }
    

    2、创建模块

    // npm初始化,创建package.json
    // 进入命令行参数输入
    npm init
    // 创建默认版本
    npm init -y
    npm init --yes
    

    3、exports

    1、Node.js 具有内置的模块系统,Node.js 文件可以导入其他 Node.js 文件公开的功能。
    2、默认情况下,文件中定义的任何其他对象或变量都是私有的,不会公开给外界。在文件中,必须先公开功能,然后其他文件才能将其导入。
    3、当将对象或函数赋值为新的 exports 属性时,这就是要被公开的内容,因此,可以将其导入应用程序的其他部分或其他应用程序中。
    4、第一种方式是将对象赋值给 module.exports(这是模块系统提供的对象),这会使文件只导出该对象。第二种方式是将要导出的对象添加为 exports 的属性。这种方式可以导出多个对象、函数或数据。

    // 导入存在于当前文件夹中的 library.js 文件中公开的功能
    const library = require('./library')
    
    //  将对象赋值给 module.exports
    const car = {
      brand: 'Ford',
      model: 'Fiesta'
    }
    module.exports = car
    //在另一个文件中
    const car = require('./car')
    
    // 将要导出的对象添加为 exports 的属性
    exports.car = {
      brand: 'Ford',
      model: 'Fiesta'
    }
    //在另一个文件中
    const car = require('./items').car
    

    五、npm

    1、npm 是 Node.js 标准的软件包管理器,可以管理项目依赖的下载。
    2、Yarn 是 npm 的一个替代选择。
    3、本地和全局的软件包之间的主要区别是:本地的软件包安装在运行 npm install <package-name> 的目录中,并且放置在此目录下的 node_modules 文件夹中。全局的软件包 放在系统中的单独位置(确切的位置取决于设置),无论在何处运行 npm install -g <package-name>

    // npm版本
    npm -v
    // 安装npm最新版本
    npm install npm@latest -g.
    // 全局安装的位置
    npm root -g
    -------------------------------------------------------------------
    // npm源
    // 输出npm源
    npm config get registry
    // 改变npm源
    npm config set registry [URL]
    npm config set registry https://registry.npmjs.org/
    npm config set registry http://registry.npm.taobao.org
    -------------------------------------------------------------------
    // npm安装
    // 安装所有依赖。如果项目具有 package.json 文件,则会在 package.json 文件中查找所约定的语义化版本规则,然后安装符合此规则的最新版本,通过运行,会在 node_modules 文件夹(如果尚不存在则会创建)中安装项目所需的所有依赖
    npm install
    // 本地安装,命令执行之后将会在当前的目录下创建 node_modules 目录(如果不存在的话),然后将下载的包保存到这个目录下
    npm install <package>
    // --save 安装并添加条目到 package.json 文件的 dependencies
    // --save-dev 安装并添加条目到 package.json 文件的 devDependencies
    // devDependencies 通常是开发的工具(例如测试的库),而 dependencies 则是与生产环境中的应用程序相关
    npm install <package> [--save/--save-dev]
    // 全局安装
    npm install <package> -g
    -------------------------------------------------------------------
    // npm更新
    // 列出待更新包 [全局]
    npm outdated [-g]
    // 更新所有软件包 [全局]
    npm update [-g]
    // 更新单个软件包 [全局]
    npm update <package> [-g]
    -------------------------------------------------------------------
    // npm卸载
    //  删除包并从 package.json 文件中删除依赖
    // 从项目的根文件夹(包含 node_modules 文件夹的文件夹)中运行
    npm uninstall <package> [--save/--save-dev]
    // 删除 node_modules 目录下面的包 [全局]
    npm uninstall <package> [-g]
    -------------------------------------------------------------------
    // 查看所有已安装的 npm 软件包(包括它们的依赖包)的最新版本 [全局]
    npm list [-g]
    // 查看所有已安装的 npm 软件包,仅获取顶层 [全局]
    npm list --depth=0 [-g]
    // 通过指定名称来获取特定软件包的版本
    npm list <package>
    -------------------------------------------------------------------
    // 查看软件包在 npm 仓库上最新的可用版本
    npm view <package> version
    // 列出软件包所有的以前的版本
    npm view <package> versions
    // 使用 @ 语法来安装 npm 软件包的旧版本 [全局]
    npm install <package>@<version> [-g]
    -------------------------------------------------------------------
    // 运行任务
    npm run <task>
    -------------------------------------------------------------------
    // npm发布
    // 登录之后才可以进行发布。
    // npm账户
    npm adduser
    npm login
    npm whoami
    // npm预发布,可以执行命令行
    npm link
    // npm解除预发布,可以执行命令行
    npm unlink
    // npm发布,注意切换npm源,taobao源无发布权限,https://npmjs.com/package
    npm publish
    // 解除发布
    npm unpublish <package> --force
    

    六、全局安装包

    1、nrm

    npm install nrm -g
    // 列出所有源和指令
    nrm ls
    // 切换地址
    nrm use [registry_name]
    // 测试速度
    nrm test [registry_name]
    

    七、库

    resolver 是一个库(library),用于帮助找到模块的绝对路径。

    1、lodash

    // 把软件包安装到本地的 node_modules 文件夹中
    npm install lodash
    // 要在代码中使用,只需使用 require 将其导入到程序中
    const _ = require('lodash')
    

    2、minimist

    处理参数

    node app.js --name=joe
    const args = require('minimist')(process.argv.slice(2))
    args['name'] //joe
    

    3、chalk

    // 安装
    npm install  --save chalk
    // 使用
    const chalk = require('chalk')
    console.log(chalk.yellow('Hello'))
    

    4、progress

    // 安装
    npm install --save progress
    // 使用
    const ProgressBar = require('progress')
    const bar = new ProgressBar(':bar', { total: 10 })
    const timer = setInterval(() => {
      bar.tick()
      if (bar.complete) {
        clearInterval(timer)
      }
    }, 100)
    

    5、inquirer

    // 安装
    npm install --save inquirer
    // 使用
    const inquirer = require('inquirer')
    var questions = [
      {
        type: 'input',
        name: 'name',
        message: "你叫什么名字?"
      }
    ]
    inquirer.prompt(questions).then(answers => {
      console.log(`你好 ${answers['name']}!`)
    })
    

    6、Commander

    Commander GitHub
    Commander基本使用

    7、child_process

    https://www.cnblogs.com/justyouadmin/p/11395839.html
    https://blog.csdn.net/bjzhaoxiao/article/details/80896611?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase

    八、创建npm包

    1、创建目录,npm初始化,生成默认的package.json文件

    mkdir jdpay
    cd jdpay
    npm init -y
    

    2、添加index.js入口文件

    // index.js
    console.log("Hello, JDPay");
    
    // 执行index.js,本地测试
    node index.js
    

    3、添加jdpay.js,在index.js导入

    // jdpay.js
    module.exports = {
        pay: function () {
            console.log("JDPay");
        }     
     }; 
    
    // index.js
    let jdpay = require('./bin/jdpay.js');
    jdpay.pay();
    

    4、修改index.js,预发布

    npm root -g
    npm link
    

    5、创建工程,安装测试

    npm link <package>
    

    6、发布

    npm publish
    

    九、创建CLI

    1、创建目录,npm初始化

    mkdir jdpay-cli
    cd jdpay-cli
    npm init -y
    

    2、添加bin文件夹和jdpay.js文件

    mkdir bin
    cd bin
    cat > jdpay.js
    console.log("JDPay");
    ^C
    

    3、在package.json里配置 bin

    // package.json
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
    "bin": {
        "pay": "./bin/jdpay.js"
     },
    

    4、导入commander

    // 安装
    npm install commander --save
    
    // jdpay.js
    #!/usr/bin/env node
    const program = require('commander');
    program
        .version(require('../package').version) // 设置版本
        .option('-p, --port [port]', 'Input port !') // 自定义形参[port]
        .parse(process.argv); // 参数数组
    console.log(program.port); // 使用自定义的port参数
    
    // node jdpay.js -p test
    test
    

    5、预发布、命令测试

    npm link
    
    // jdpay-cli
    jdpay -p test
    test
    

    6、npm发布

    npm publish
    

    相关文章

      网友评论

          本文标题:《Node.js》

          本文链接:https://www.haomeiwen.com/subject/gsuisktx.html