nodeJS学习笔记(模块化初探)

nodejs基本介绍

为什么要学习nodejs

1.作为一个前端工程师,为什么要学习服务端的开发?
2.市场对前端全栈的看法如何?对node的看法又是如何?
3.是否node如大厂所用的那样,只能作为中间件来使用?
4.在2019年的前端生态中,身处深水区后前端的时代node又扮演什么样的角色?

  1. 为什么学?通过学习Node.js开发理解服务器开发Web请求和响应过程了解服务器端如何与客户端配合
  2. 作为前端开发工程师(FE)需要具备一定的服务端开发能力
  3. 作为全栈的热爱者以及javascript发烧友,掌握node已经是刚需!
  4. 如果你和我一样热爱javascript!那么就应该感谢nodeJS把它推到了互联网浪潮的顶峰,如果说AJAX是JS第一次大放异彩的推动者的话,那么nodeJS一定又将JS推到了历史的前面!

服务器端开发语言有很多,为什么要选择nodejs

  1. 降低编程语言切换的成本(nodejs实质上用的还是javascript)基于Google的V8引擎
  2. NodeJS是前端项目的基础设施,前端项目中用到的大量工具 (大前端) webpack less-css
  3. 对于前端工程师,面试时对于nodejs有一定的要求

node.js 是什么?

node.js,也叫作node,或者nodejs,指的都是一个东西。

  1. node.js官方网站
  2. node.js中文网
  3. node.js 中文社区

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,nodejs允许javascript代码运行在服务端

1. nodejs不是一门新的编程语言,nodejs是在服务端运行javascript的运行环境(说白了还是javascript)
2. 运行环境:写得程序想要运行必须要有对应的运行环境
	java与tomcat
	php代码必须要有apache服务器(LAMP...) linux+apache+mysql+php
	在web端,浏览器就是javascript的运行环境(Webkit,Trident,Gecko,Presto,Blink)
	在node端,nodejs就是javascript的运行环境
2. javascript并不只是能运行在浏览器端,浏览器端能够运行js是因为浏览器有js解析器,因此只需要有js解析器,任何软件都可以运行js。
3. nodejs可以在服务端运行js,因为nodejs是基于chrome v8的js引擎。

nodejs的本质:不是一门新的编程语言,nodejs是javascript运行在服务端的运行环境,编程语言还是javascript

nodejs与浏览器的区别

相同点:nodejs与浏览器都是javascript的运行环境,都能够解析js程序。对于ECMAScript语法来说,在nodejs和浏览器中都能运行。

不同点:nodejs无法使用DOM和BOM的操作,浏览器无法执行nodejs中的文件操作等功能

原理:nodeJS之所以不能使用DOM和BOM操作,是因为没有顶层对象window和BOM对象,当然就不能调用它们上面的WEBAPI,而浏览器端因为没有对系统级操作的封装,所以也不能使用nodeJS等API功能!

思考:

  1. 在浏览器端,可以使用javascript操作数据库么?
  2. 在nodejs端,可以使用BOM和DOM的方法么?
  3. 学习nodejs,学习什么内容?

nodejs可以干什么?

  1. 开发服务端程序,做中间层(前端的2次革命,第一次是AJAX)
  2. 开发命令行工具(CLI),比如npm,webpack,gulp,less,sass等 vue-cli
  3. 开发桌面应用程序(借助 node-webkit、electron 等框架实现)

安装nodejs

nodejs版本

下载地址

官网术语解释

  • LTS 版本:Long-term Support 版本,长期支持版,即稳定版。
  • Current 版本:Latest Features 版本,最新版本,新特性会在该版本中最先加入。

查看node版本

node -v

查看npm版本

npm -v

开启服务器

npm start

运行node

node helloNode.js

运行nodejs程序

  • 创建js文件 helloworld.js
  • 写入nodejs的内容:console.log('hello nodejs')
  • 打开命令窗口 cmd
    • shift加右键打开命令窗口
    • win+r打开运行窗口,输入cmd打开命令行窗口
    • 执行 node 文件名.js即可
    • 给vscode安装terminal插件,直接在vscode中执行,terminal插件可以让我们方便调试程序,直接在vscode上面打开终端(黑窗口)
  • 执行命令:node helloworld.js

注意:在nodejs中是无法使用DOM和BOM的内容的,因此document, window等内容是无法使用的。

global模块-全局变量

Node.js 中的全局对象(顶层对象)是 global, 类似于浏览器中的window

常用的global属性

console: 用于打印日志
setTimeout/clearTimeout: 设置清除延时器
setInterval/clearInterval: 设置清除定时器

__dirname: 当前文件的路径,不包括文件名
__filename: 获取当前文件的路径,包括文件名

//与模块化相关的,模块化的时候会用到
require
exports
module

fs模块

fs模块是nodejs中最常用的一个模块,因此掌握fs模块非常的有必要,fs模块的方法非常多,用到了哪个查哪个即可。

文档地址:http://nodejs.cn/api/fs.html

在nodejs中,提供了fs模块,这是node的核心模块

注意:

  1. 除了global模块中的内容可以直接使用,其他模块都是需要加载的。
  2. fs模块不是全局的,不能直接使用。因此需要导入才能使用。
const fs = require('fs');

读取文件

语法:fs.readFile(path[, options], callback)

方式一:不传编码参数

//参数1: 文件的名字(读哪个文件)
//参数2: 读取文件的回调函数
  //参数1:错误对象,如果读取失败,err会包含错误信息,如果读取成功,err是null
  //参数2:读取成功后的数据(是一个Buffer对象)
  //ES5
fs.readFile('data.txt', function(err, data){
   
   
  console.log(err);
  console.log(data);
});
  //ES6
fs.readFile('data.txt',(err,data)=>{
   
   
  console.log(err);
  console.log(data);
})

方式二:传编码参数

//参数1: 文件的路径(读哪个文件)
//参数2: 编码,如果设置了,返回一个字符串,如果没有设置,会返回一个buffer对象
//参数3: 回调函数
//es5
fs.readFile('data.txt', 'utf8',function(err, data){
   
   
  console.log(err);
  console.log(data);
});
//es6
fs.readFile('data.txt','utf8',(err,data)=>{
   
   
  console.log(err);
  console.log(data);
})

关于Buffer对象

1. Buffer对象是Nodejs用于处理二进制数据的。
2. 其实任意的数据在计算机底层都是二进制数据,因为计算机只认识二进制。
3. 所以读取任意的文件,返回的结果都是二进制数据,即Buffer对象
4. Buffer对象可以调用toString()方法转换成字符串。

写文件

语法:fs.writeFile(file, data[, options], callback)

//参数1:写入的文件名(如果文件不存在,会自动创建),有读就有写
//参数2:写入的文件内容(注意:写入的内容会覆盖以前的内容)
//参数3:写文件后的回调函数
//ES5
fs.writeFile('data.txt', 'hello world, 我爱node!', function(err){
   
   
  if(err) {
   
   
    return console.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈前端老曹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值