nodejs知识总结 总感觉有点懵,不知道在哪里用,可能还需要做个项目

`命令行工具

  • 常用指令

    • dir——列出当前目录下的所有文件
    • cd 目录名 ——进入到指定的目录
    • md 目录名 ——创建一个文件夹
    • rd 目录名 —— 删除一个文件夹
  • 目录

    • . 当前目录(省略了/)
    • … 上一级目录
  • 环境变量

    • path: 都是路径,配置常用的东西,可以直接在命令行窗口里任意位置打开里面的文件。

      当我们在命令行窗口打开一个文件,或调用一个程序时,系统会首先在当前目录下寻找文件程序,如果找到了则直接打开如果没有找到则会依次到环该变量path的路径中寻找,直到找到,没找到就报错。

进程和线程
  • 进程:进程负责为程序的运行提供必备的环境
  • 线程:线程是计算机中的最小的计算单位,线程负责执行进程中的程序
    • 单线程:JS就是单线程。node也是单线程
    • 多线程:快,但是存在安全问题和冲突问题

Node.js

​ node.js是一个能够在服务器端运行Js的开放源代码、跨平台JavaScript运行环境。采用goodle开发的v8引擎运行js代码,使用事件驱动、非阻塞和异步I/O模型等技术提高性能,可优化应用程序的传输量和规模。

​ 优点:高并发好。

​ 学会nodejs,能够明确数据交互的错误在前端还是后端,能够书写API,能了解前后端的交互流程,全栈工程师(nvm可以切换node版本)

repl环境:直接在命令行写代码

模块化

nodejs提供了一个简单的模块系统让Node.js的文件可以互相调用。模块加载采用的格式同步加载的common.js规范。

commonjs:
  • 每个文件都是封闭的一个模块,模块里定义的变量、函数、类都是私有的

  • module代表当前模块,module是封闭的,但它的exports属性向外提供调用接口

  • require加载模块。读取并执行一个js文件。然后返回该模块的exports对象

  • commonjs是同步加载的。因此模块加载的顺序严格按照代码书写的顺序执行

  • 模块可以多次加载,但在第一次加载之后模块会被编译执行,放入缓存,后续的require直接从缓存里取值,模块代码不再编译执行

require内部处理流程
  • 检查Module._cache是否缓存了指定模块
  • 如果缓存没有的话。就创建—个新的module实例将它保存到缓存
  • module.load()加载指定模块
  • 在解析的过程中如果发生异常,就从缓存中删除该模块
  • 返回该模块的module.exports
模块化导出方式
  • global.xxx = xxx; 导出全局变量,只要导入相应js文件即可调用

  • module.exports = “str”;

  • module.exports.xxxx= 'str‘

  • exports.xxx= ‘str’

    exports = 'str‘ 这样写是不行的

其实前面看过nodejs的课,但是总觉得学了像没学一样,找了几个视频 也没有那么满意,要么就声音特别小,结尾广告猝不及防声音巨大,要么就是感觉一点原理都没讲,所以我又双叒去看文档啦


Node.js

repl:
  • 在命令行输入node开启repl环境:可以直接在命令行写代码。

  • 尝试输入 JavaScript 类的名称,例如 Number,添加一个点号并按下 tab。REPL 会打印可以在该类上访问的所有属性和方法。是tab!!这种状态下回车默认是没写完换行的。按Tab哦!!

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d6RxD89m-1650281977489)(E:\markdown\前端\csdn\20220417_1.png)]

  • 通过输入 global. 并按下 tab,可以检查可以访问的全局变量。

  • 特殊命令:

    • .help: 显示点命令的帮助。
    • .editor: 启用编辑器模式,可以轻松地编写多行 JavaScript 代码。当处于此模式时,按下 ctrl+D 可以运行编写的代码。
    • .break: 当输入多行的表达式时,输入 .break 命令可以中止进一步的输入。相当于按下 ctrl+C。
    • .clear: 将 REPL 上下文重置为空对象,并清除当前正在输入的任何多行的表达式。(clr是在命令行里面用的,这是repl模式,失效)
    • .load: 加载 JavaScript 文件(相对于当前工作目录)。
    • .save: 将在 REPL 会话中输入的所有内容保存到文件(需指定文件名)。
    • .exit: 退出 REPL(相当于按下两次 ctrl-C)。

从命令行接收参数

方法:使用node.js内置的process对象的argv属性。这个属性包含所有命令行调用参数的数组。这个数组中第一个参数是node命令的完整路径,第二个参数是正被执行的文件的完整路径(node xx.js 里面xx的路径),第三个开始就是其他的参数。

因为argv属性是一个数组,所以可以用数组的方法遍历

process.argv.forEach((val, index) => {
   
  console.log(`${
     index}: ${
     val}`)
})

同样也可以使用slice方法去排除前两个路径参数,从下标2开始获取其他内容:const args = process.argv.slice(2)

args[0]name=joe这种格式的数据,需要对其进行解析。 最好的方法是使用 minimist 库,该库有助于处理参数:

const args = require('minimist')(process.argv.slice(2))


输出到命令行

基本与浏览器中的console相同。也可以通过传入变量和格式说明符格式化用语(和c用法类似,%s字符串;%d数字;%i 整数部分;%o 对象)console.log('我的%s已经%d岁', '猫', 2)

  • console.clear() 会清除控制台(其行为可能取决于所使用的控制台)。

  • console.count() 方法会对打印的字符串的次数进行计数,并在其旁边打印计数。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E1EHBrVM-1650281977490)(E:\markdown\前端\csdn\20220417_2.png)]

  • console.trace()可以打印堆栈踪迹

  • time()timeEnd() 轻松地计算函数运行所需的时间:就是把要测算耗时的函数放在time() 和 timeEnd()之间

      console.time('doSomething()')
      doSomething()
      console.timeEnd('doSomething()')
    
  • stdout和stderr:console.log在控制台打印消息,就是标准输出,stdout;console.err会打印到stderr流,不出现在控制台,而出现在错误日志中。

  • 改变输出的颜色:推荐Chalk库。可以使用 npm install chalk 进行安装,使用:console.log(chalk.yellow('你好'))。这样就可以替代转义代码console.log('\x1b[33m%s\x1b[0m', '你好')

  • 创建进度条,Progress包,npm install progress 进行安装。这个就说当前的索引就是进度条本身,创建一个10步的进度条,100ms完成一步,全部完成就清除定时器。想详细了解参数可以参考这个包的说明:https://www.npmjs.com/package/progress

    const ProgressBar = require('progress')
    
    const bar = new ProgressBar(':bar', {
          total: 10 })
    const timer = setInterval(() => {
         
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值