node.js 学习---第一章

Node.js 简介

下一章

node 与 浏览器的区别

  • 没有浏览器提供的 document、window、以及所有其他的对象
  • 在浏览器中,不存在 Node.js 通过其模块提供的所有不错的 API,例如文件系统访问功能
  • Node.js 使用 CommonJS 模块系统,而在浏览器中,则还正在实现 ES 模块标准。在实践中,这意味着在 Node.js 中使用 require(),而在浏览器中则使用 import
  • 由于 JavaScript 发展的速度非常快,但是浏览器发展得慢一些。在 web 上,不得不使用较旧的 JavaScript / ECMAScript 版本。可以使用 Babel 将代码转换为与 ES5 兼容的代码,再交付给浏览器,但是在 Node.js 中,则不需要这样做

安装

Node.js 可以通过多种方式进行安装

mac

安装brew戳这里~

brew install node

window

下载node包地址

运行脚本

//app.js   运行的文件名,确定要有该文件哦!!!
node app.js

app.js

const express = require('express')
const app = express()

app.get('/', (req, res) => {
  res.send('你好')
})

app.listen(3000, () => console.log('服务器已就绪'))

REPL

使用 tab 键自动补全

REPL 酷的是它是交互式的。

在编写代码时,如果按下 tab 键,则 REPL 会尝试自动补全所写的内容,以匹配已定义或预定义的变量。

在这里插入图片描述
在这里插入图片描述

console 输出

元素计算 console.count

console.count(
  'x 的值为 ' + x + ' 且已经检查了几次?'
)
console.count(
  'x 的值为 ' + x + ' 且已经检查了几次?'
)
console.count(
  'y 的值为 ' + y + ' 且已经检查了几次?'
)


const oranges = ['橙子', '橙子']
const apples = ['苹果']
oranges.forEach(fruit => {
  console.count(fruit)
})
apples.forEach(fruit => {
  console.count(fruit)
})

计算耗时

const doSomething = () => {
  console.log('开始测试')
  for(var i=0;i<10;i++){
    console.log(i)
  }
}
const measureDoingSomething = () => {
  console.time('doSomething()')
  //做点事,并测量所需的时间。
  doSomething()
  console.timeEnd('doSomething()')
}
measureDoingSomething()

着色

引入chalk

cnpm i chalk --save-dev
console.log('\x1b[33m%s\x1b[0m', '使用转义序列输出黄色')

const chalk = require('chalk')

console.log(chalk.red('通过chalk输出红色'))

console.log(chalk.bgGreen('chalk.bgGreen带背景'))

进度条

引入progress

cnpm i progress --save-dev
const ProgressBar = require('progress')

const bar = new ProgressBar('downloading[:bar ] :rate/bps :percent :etas', { 
  total: 10 ,
  incomplete:'.',
  complete:'=',
  callback (){
    console.log('进度 加载完成---')
  }
})
const timer = setInterval(() => {
  bar.tick()
  if (bar.complete) {
    clearInterval(timer)
  }
}, 100)
Tokens
  • :bar 进度条本身
  • :current 当前刻度号
  • :total 总滴答声
  • :elapsed 时间(秒)
  • :percent 完成率
  • :eta 估计完成时间(以秒为单位)
  • :rate 每秒滴答率
Options
  • curr 当前完成的索引
  • total 完成的总滴答数
  • width 进度条的显示宽度默认为总计
  • stream 默认为stderr的输出流
  • head 头字符默认为完整字符
  • complete 补全字符,默认为“ =“
  • incomplete 不完整的字符,默认为“-”
  • renderThrottle 更新之间的最短时间(以毫秒为单位)默认为16
  • clear 选项,清除完成时的条,默认为false
  • callback 进度条完成时调用的可选函数

从命令行接收输入

readline每次一行地从可读流获取输入

const readline = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
})

readline.question(`你叫什么名字?`, name => {
  console.log(`你好 ${name}!`)
  readline.close()
})

Inquirer.js 软件包则提供了更完整、更抽象的解决方案

const inquirer = require('inquirer')

var questions = [
  {
    type: 'input',
    name: 'name',
    message: "你叫什么名字?"
  },
  {
    type: 'input',
    name: 'age',
    message: "你多大了?"
  },
  {
    type: 'input',
    name: 'address',
    message: "你住在哪里?"
  }
]

inquirer.prompt(questions).then(answers => {
  console.log(answers,'aaaa')
  console.log(`你好 ${answers['name']}!`)
  console.log(`你 ${answers['age']} 岁!`)
  console.log(`你住在 ${answers['address']}!`)
})

在这里插入图片描述

exports公开文件功能功能

Node.js 具有内置的模块系统。

Node.js 文件可以导入其他 Node.js 文件公开的功能。

目录

├── a.js
├── b.js
└── c.js

module.exports

公开了它指向的对象

//b.js

const car = {
  brand: 'Ford',
  model: 'Fiesta'
}

module.exports = car

export公开了它指向的对象的属性

const car = {
  brand: 'Ford',
  model: 'Fiesta'
}

exports.car = car

a.js 引入b、c 文件


const b = require('./b')
const c = require('./c')

/**
 * 或
 * const car = require('./c').car
 */

console.log(b,'公开b文件的对象')
console.log(c,'公开c文件的对象')

效果
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值