一,node.js的组成

node.js是由ECMAScript及node环境提供的一些附加API组成的,包括文件,网络,路径等一些更加强大的API。

二,基础语法

所有的js语法在Node环境中都可以使用。
它需要命令行工具来运行js代码:

这样的话,就又需要掌握一些命令行的知识:

  1. 在文件夹处shift+右键—在此处打开Powershell窗口:就可以直接进入本目录下的命令行环境
  2. 文件名太长,只需要输入具备辨识度的前几个字符,按tab键,会自动补全文件路径
  3. clear清除
  4. 上键,可以重新输入之前的命令
  5. __dirname 保存着当前路径
  6. ctrl+c:终止操作

三,node.js模块化开发

这里先要讲讲js在使用时的两个弊端。文件依赖命名冲突
第一点:js的文件有可能多次引用,例如,轮播图.js引用了scroll.js,scroll.js又引用了jQuery.js,而一旦缺少那个文件都运行不了。
第二点:js文件引用时,全局变量是可以互相访问的,一旦命名重复,就会被覆盖!

而node,js模块化开发,就有专门代码说明引用了谁,不需要再去分析引用了谁。模块化开发还体现在:类似于机械设计中的零部件开发设计一样,先把能够实现各个功能的模块设计出来,然后整合在一起就成为整机了。并且,取出其中的部分模块,不会影响到其他模块的功能。

Node.js规定一个js文件就是一个模块,模块内部定义的变量和函数在 默认情况下在外部是无法得到的。
模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块

想要导出,就把它设置为exports对象的属性,
想要导入,采用require方法,返回值是一个exports对象。(当然,参数是路径和node.js文件名)

四,系统模块


也就是node.js自身写好了一些常用的基本的模块,我们直接调用就可以使用。
一,文件读取模块

let fsObject=require('fs')
//引入node的fs模块,fsObject就是那个引入的对象,
// 它包含很多方法,其中就有读取文件的方法:readFile
fsObject.readFile('./text.txt', 'utf-8',(err,doc)=>{//如果文件读取出错,err是一个对象,包含错误信息//如果文件读取正确 ,err是null//doc是问价读取的结果console.log(err)console.log(doc)
})


运行后,确实读取到txt文件的内容了。
二,文件的写入模块

let fsObject=require('fs')
///引入node的fs模块,fsObject就是那个引入的对象,
// 它包含很多方法,其中就有写入文件的方法:writeFile
fsObject.writeFile('./write.txt','即将写入的内容',err=>{if (err!= null){console.log(err);return}//当文件写入失败时,err是个对象,里面保存错误信息//当文件写入成功时,err是null//当文件写入时,还没有这个文件,则会自动创建一个console.log(err)console.log('文件写入成功')
})

## 三,系统的path路径操作

事情的起因时不同的操作系统,路径的拼接符号不一样,windows是/都可以,linux是/才可以。

//假如我想读取这个路径下的文件:test1\test2\text.txt
let pathObject =require('path')
const path=pathObject.join('test1','test2','text.txt')
//取得拼接好的路径,它会自动检测是windows还是linux环境,然后返回对应的路径
let fsObject=require('fs')
fsObject.readFile(path, 'utf-8',(err,doc)=>{console.log(err)console.log(doc)
})


四,相对路径和绝对路径

比如这里写的就是相对路径,程序运行时,会把当前路径+相对路径做一次“运算”,以此来找到绝对的路径,然后运行程序。
也就是说,其实我们直接写绝对路径是最安全的,可以避免电脑找不到正确的路径。
在命令行中就有一个参数,里面 正好保存着当前的地址:__dirname (注意是两个下划线)
于是就可以利用path.join把这个当前路径和绝对路径合并起来得到文件的绝对路径了!!

//假如我想读取这个路径下的文件:test1\test2\text.txt
let pathObject =require('path')
let fsObject=require('fs')
const path=pathObject.join( __dirname ,'test1','test2','text.txt')
fsObject.readFile(path, 'utf-8',(err,doc)=>{console.log(err)console.log(doc)
})

五,node.js的第三方模块

第三方模块,就是别人写好,我们拿过来就可以直接使用的模块。又称作包。

  • 以js文件的形式存在,提供实现项目具体功能的api接口。
  • 以命令行工具的形式存在,以辅助项目开发。

那如何获取第三方模块呢?
有一个网站是第三方模块的存储和分发仓库:npmjs.com
这个网站提供了一个node的第三方模块管理工具:npm(node package manager)
当我们需要下载什么第三方模块时,我们只需要在命令行中输入:npm install 模块名称
默认情况下会下载到命令行的当前目录下面。
卸载第三方模块:npm uninstall 模块名称
这种方式是本地安装,也就是只有当前工作目录下的项目使用。
对于库文件,我们通常是采用本地安装,而对于命令行工具,则是采用全局安装,毕竟下回项目也要用不是?

六,命令行工具:nodemon的安装

nodemon是一个命令行工具,用来辅助项目开发。
没有它的时候,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐。
而安装它之后,就会监听该文件的保存操作,一旦文件保存完成,就会重新执行该文件!
1,下载:npm install nodemon -g
加了-g,就是全局安装的意思。
2,在命令行中用nodemom替代node命令。

七,第三方模块 nrm

它可以访问国内的模块库,这样一来,安装第三方库的时间会大大缩短。
先下载安装nrm

  1. 使用npm install nrm -g来下载
  2. 查询可下载地址列表nrm ls
  3. 切换nrm下载地址nrm use 下载地址名称

node.js学习笔记(黑马教程)-1-基础了解相关推荐

  1. Node.js学习笔记 [黑马程序员]——day34

    文章目录 初识 Express 简介 Express 的基本使用 托管静态资源 nodemon Express 路由 路由的概念 :dog:什么是路由 :dog:Express 中的路由 :dog: ...

  2. Node.js学习笔记 [黑马程序员]——day2

    文章目录 模块化的基本概念 模块化规范 Node.js 中模块的分类 Node.js 中模块的分类 加载模块 Node.js 中的模块作用域 向外共享模块作用域中的成员 `module` 对象 `mo ...

  3. 千锋Node.js学习笔记

    千锋Node.js学习笔记 文章目录 千锋Node.js学习笔记 写在前面 1. 认识Node.js 2. NVM 3. NPM 4. NRM 5. NPX 6. 模块/包与CommonJS 7. 常 ...

  4. 唤醒手腕 - 前端服务器端开发 Node.Js 学习笔记(学习中,更新中)

    唤醒手腕 - Node.Js 学习笔记 唤醒手腕个人的学习记录,时间在2021年12月13日 ~ 2021年12月14日,学习方式看官方文档和B站视频,如有错误或者代码问题的地方,欢迎C站大佬能够帮忙 ...

  5. node.js学习笔记

    # node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...

  6. node.js学习笔记14—微型社交网站

    node.js学习笔记14-微型社交网站 1.功能分析 微博是以用户为中心,因此需要有注册和登录功能. 微博最核心的功能是信息的发表,这个功能包括许多方面,包括:数据库访问,前端显示等. 一个完整的微 ...

  7. Node.js学习笔记8

    Node.js学习笔记8 HTTP服务器与客户端 Node.js的http模块,封装了一个高效的HTTP服务器和一个简易的HTTP客户端 http.server是一个基于事件的HTTP服务器,核心由N ...

  8. node.js学习笔记5——核心模块1

    node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...

  9. node.js 学习笔记(二)模板引擎和C/S渲染

    node.js 学习笔记(二)模板引擎和C/S渲染 文章目录 node.js 学习笔记(二)模板引擎和C/S渲染 一.初步实现Apache功能 1.1 使用模板引擎 1.2 在 node 中使用模板引 ...

  10. Vue.js 学习笔记三,一些基础指令,v-bind,v-on

    在笔记二的基础上继续写 v-bind指令,为属性绑定数据 <!--v-bind指令可以绑定属性--><div v-html="msg2" v-bind:title ...

最新文章

  1. python怎么判断是不是列表_python判断变量是否为int、字符串、列表、元组、字典等方法...
  2. “从A到I”智慧数据中心上海论坛
  3. 一些VR延迟优化方法
  4. 数据中台(一)数据资源规划与获取
  5. PHP中错误处理集合
  6. 在生产环境下处理EFCore数据库迁移的五种方法
  7. 12-多对一添加操作(添加新客户及对应的新订单)
  8. maven中的snapshot来源与注意事项
  9. Facebook入局视频会议,日活用户超3亿的Zoom股价应声下跌,Zoom为何不扛打?
  10. JS 闭包 正则(1)
  11. 数据库零碎---mysql编码设置,与乱码分析
  12. 基于Qt开发的游戏手柄小程序例子
  13. java汉字转拼音maven_java汉字转拼音pinyin4j功能实现示例
  14. 计算机三员运维机构,网络安全中的“三员”管理
  15. Ego的MyBatis框架笔记
  16. 王垠:完全用Linux工作
  17. 一键绕过App签名验证
  18. 计算机视觉注意力网络(一)——简介
  19. 软考是什么-有什么用-怎么报名-考试内容
  20. HTML打造动漫人物,百度贴吧打造二次元清明祭 回顾离开的动漫人物

热门文章

  1. 能力提升综合题单 Part 8.4 生成树Part 8.5 拓扑排序Part 8.6 差分约束
  2. android xml红心圆,Android自定义View圆形图片控件代码详解
  3. Laravel5.1/Homestead (0.2.7) 开发环境的部署和设置
  4. Ubuntu 16.04 源添加
  5. Java容器---List
  6. 【BZOJ 1082】[SCOI2005]栅栏 二分+dfs
  7. Unity 单元测试(NUnit,UnityTestTools)
  8. #100天计划# 2013年10月8日
  9. 第六章 类型和成员基础
  10. join原理、join算法