nodejs笔记

这篇博客详细记录了Node.js的学习,包括环境配置、模块化介绍,如全局成员、模块导出,基础操作如Buffer、NPM包管理,以及服务器配置,包括静态网站功能和参数传递。同时讲解了自定义模块、Yarn工具的使用以及自定义包的创建规范。
摘要由CSDN通过智能技术生成

nodejs学习笔记

node环境配置

安装
  • 下载nvm(nodejs版本控制工具)
    • 下载nodejs,选择mis文件
    • 下载nvm,解压后以管理员身份运行install.cmd
    • 修改setting.txt文件
      • root:c:/dev/nvm
      • path:c:/dev/nodejs
  • 在C盘创建目录dev,创建两个子目录nvm和nodejs
  • 配置环境变量
    • 配置nvm环境变量
      • NVM_HOME
        • c:/dev/nvm
    • 配置nodejs环境变量
      • NVM_SYMLINK
        • C:/dev/nodejs
    • 配置path
      • 添加%NVM_HOMR%
      • %NVM_SYMLINK%
  • 安装和切换其他版本的nodejs
    • 安装
      • nvm install x.x.x
    • 切换
      • nvm use x.x.x
nodejs全局成员概述
  • nodejs终端使用

    • 运行node命令

      • 运行原理与浏览器中的控制台基本相同
    • 运行本地js文件

      • 切换到目录下
      • node xxx.js

node模块化

nodejs初识模块化
  • 全局成员概述
    • __filename
      • 包含文件名称的全路径
    • __dirname
      • 文件的路径(不包含文件名)
    • setTimeout(函数,xx毫秒)
      • 定时函数
      • 在执行到这一行的时候程序并不会停下来等定时函数执行完毕
    • clearTimeout(timer)
      • 清除定时函数
    • buffer
      • 文件操作
    • global
      • 与浏览器中的window对象类似
    • process.argv
      • 是一个数组
      • 默认情况下,前两项数据分别是
        • node.环境的路径
        • 当前执行js文件的全路径
      • 从第三个参数开始表示命令行参数
        • node xx.js 参数1 参数2 参数3
      • process.arch
        • 当前系统的架构(32,64)
模块化成员导出详解
  • 模块化开发
    • 传统非模块开发有如下缺点
      • 命名冲突
      • 文件依赖
    • 标准的模块化规范
      • AMD-require js
      • CMD -seajs
    • 服务器端的模块化规范
      • CommonJS -node.js
    • 模块化相关的规则
      • 如何定义模块‘
        • 一个js文件就是一个模块,模块内部的成员都是相互独立的
      • 模块成员的导出和引入
        • 引入模块
          • require(‘文件路径’)
        • 导出模块成员
          • export.模块=模块
          • module.exports=sum
            • 引入时用module(有参?);
模块化细节补充
  • 模块成员导出:global
    • global.模块(参数名)=模块(实例)
      • global中的XXX=XX模块
    • 使用的时候直接使用global.参数名
      • 为空的话会为undefined
    • require模块的加载会被缓存
      • 已经被加载的文件不会再加载
      • 性能优化
    • 模块文件的类型
      • js
      • json
      • node(c语言开发文件)
    • 假如有三个同名的js,json,node文件,则加载顺序为(引入时不加后缀名)
      • js
      • json
      • node
    • 模块分类
      • 自定义模块
      • 系统核心模块
        • 访问官方API文档
        • fs文件操作
        • http网络操作
        • path路径操作
        • queryString查询参数分析
        • url url解析

node基础

node基本操作

buffer实例化
  • 文件操作案例

    • 初始化目录

      • let root=‘文件路径’;
    • 初始化数据

      • 一个实例对象
    • 创建项目根路径

      • 引入模块

        • const path=require('path')

        • const fs=require('fs')

      • 调用模块

        //创建项目根路径
        fs.mkdir(path.join(root,initData.projectName),(err)=>{
        if(err) return;
        //创建子目录和文件
        initData.data.forEach((item)=>{
        if(item.type=='dir'){
        //创建子目录
        fs.mkdirSync(path.join(root,initData.projectName,item.name));
        }else if(item.type=='file'){
        //创建文件并写入内容
        fs.writeFileSync(path.join(root,initData.projectName,item.name),fileContent(外部引入的模块html文件))
        }
        )} 
        });
        
buffer基本操作
  • buffer本质上就是字节数组

  • API

    • 构造方法(class)
    • 静态方法
    • 实例方法
  • 通过实例化来调用buffer(new)

    • let buf=new buffer(5); //<Buffer a8 61 40 00 00>16进制

      • 实例化buffer对象
      • 生成五个随机字节
      • 不推荐使用
    • let buf=Buffer.alloc(5);

      • 生成五个空的字节
  • 通过静态方法

    • let buf Buffer.from('hello')//buf产生此此字符的16进制编码
    • const buf=Buffer.from(arr)//传入一个16进制数字的数组
      • 打印出ASCII编码
      • 可以使用toString方法转换为字符串
buffer实例化方法
  • 实例化
    • Buffer.from(array)
    • Buffer.from(String)
      • from方法可以增加第二个参数,编码(utf8,等,)
    • Buffer.alloc(size)
  • 功能方法
    • Buffer.isEncoding()
      • 判断是否支持该编码,
      • 参数为编码号
      • 返回一个boolean值
    • Buffer.isBuffer()
      • 判断是否为buffer
      • 传入一个对象
      • 返回一个boolean值
    • Buffer.byteLength()
      • 传入一个buf
      • 返回指定编码的字节长度,默认utf8
    • Buffer.concat()
      • 传入一个buf对象数组
      • 将一组buffer对象合并为一个buffer对象
  • 实例方法
    • write()
      • 向buffer对象中写入内容
      • buf.write();
      • 参数为字符串,写入长度,写入位置,字符编码
    • slice()
      • 截取新的buffer对象
      • 参数为截取的起始位置,结束位置
    • toString()
      • 把buffer对象转换为字符串
    • toJson()
      • 把buffer对象转换为json形式的字符串
      • 还可以用JSON.stringify()方法达到相同效果
        • 传入一个buf对象
        • 会自动把字符转换为十进制ASCII编码
      • toJSON方法不需要显示调用,当JSON.stringify方法调用的时候会自动调用toJSON方法
核心模块API
  • 路径操作

    • 路径基本操作API

      • 引入核心模块

        • const path =require('path')
      • 获取路径的最后一部分

        • path.basename('/foo/bar/baz/asdf/quux.html(文件路径)','html'可不加)
          • 返回一个文件名
      • 获取路径

        • path.dirname('路径')
          • 返回文件路径
      • 获取文件的扩展名

        • path.extname('xxx.html')
        • 返回html
      • 路径的格式化处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值