1. 读文件内容

// 1. 通过模块的名字fs对模块进行引用
const fs = require('fs'); // 2. 通过模块内部的readFile读取文件内容
fs.readFile('../css/base.css', 'utf-8', (err, doc) => {
// 如果文件读取发生错误,参数err的值为错误对象,否则err的值为null
// doc参数为文件内容
if(err === null) {
// 在控制台输出文件内容
console.log(doc);
}
});

2. 写文件内容

// 1. 通过模块的名字fs对模块进行引用
const fs = require('fs'); const content = '<h3>正在使用fs.writeFile写入文件内容</h3>';
fs.writeFile('./index.html', content, err => {
if(err != null) {
console.log(err);
return;
}
console.log('文件写入成功');
});

3. 系统模块path路径操作

为什么要进行路径拼接

  • 不同操作系统的路径分隔符不统一
  • /public/uploads/avatar
  • windows上是\   /
  • linux上是 /
const path = require('path');

const finalpath = path.join('public', 'uploads', 'avatar');
console.log(finalpath);

4.相对路径vs绝对路径

  • 大多数情况下,使用绝对路径,因为相对路径有时候相对的是命令行的当前工作目录
  • 在读取文件或者设置文件路径时都会选择绝对路径
  • 使用__dirname获取当前文件所在的绝对路径

5.第三方模块nodemon

nodemon是一个命令行工具,用以辅助项目开发。

在Node.js中,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐。

使用步骤:

1、使用npm install nodemon -g 下载它

2、在命令行工具中用nodemon命令替代node命令执行文件

3、切换npm下载地址nrm use

6.第三方模块Gulp

glup能做哪些事

  • 项目上线,html,css,js文件压缩合并
  • 语法转换(es6, less)
  • 公共文件抽离
  • 修改文件浏览器自动刷新

glup使用

  1. 使用npm install gulp下载gulp库文件
  2. 在项目录下建立gulpfile.js文件
  3. 重构项目的文件夹结构src目录放置源代码文件dist目录放置构建后文件
  4. 在glupfile.js文件中编写任务

  5. 在命令行工具中执行gulp任务

7.package.json文件的作用

项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等。使用npm init -y 命令生成。

项目依赖

  • 在项目的开发阶段和线上运营阶段,都需要以来的第三方包,称为项目依赖。
  • 使用npm install包名命令下载的文件会默认被添加到package.json文件的dependencies字段中

开发依赖

  • 在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖
  • 使用npm install包名 --save-dev命令将包添加到package.json文件的devDevpendencies字段中

package-lock,json文件作用

  • 锁定包的版本,确保再次下载时,不会因为包版本不同而产生问题。
  • 加快下载速度,因为该文件中已经记录了项目所依赖第三方包的树状结构和包的下载速度,重新安装时只需下载即可,不需要做额外的工作。

8. 模块查找规则

当模块拥有路径但没有后缀时

  1. require方法根据模块路径查找模块,如果是完整路径,直接引入模块。
  2. 如果模块后缀省略,先找同名js文件再找同名js文件夹。
  3. 如果找到了同名文件夹,找文件夹中的index.js。
  4. 如果文件夹中没有index.js就会去当前文件夹中的package.js文件中查找main选项中的入口文件。
  5. 如果找指定的入口文件不存在或者没有指定入口文件就会报错,模块没有被找到。

当模块没有路径且没有后缀名

  1. node.js会假设它是系统模块
  2. node会去node_modules文件夹中
  3. 首先看是否有该名字的js文件
  4. 再看是否有该名字的文件夹
  5. 如果是文件夹看里面是否有index.js
  6. 如果没有index.js查看该文件夹中的package.json中的main选项确定模块入口文件
  7. 否则找不到报错

node知识点及第三方模块的更多相关文章

  1. RedHat7安装Nginx及第三方模块

    编译安装Nginx 先安装编译过程中所需依赖包# yum -y install gcc pcre-devel openssl-devel zlib-devel jemalloc(更好的内存管理)# w ...

  2. Day 16 : Python 时间模块[time,]datetime[]及第三方模块的下载与安装

    在进行python程序开发时,除了可以使用python内置的标准模块外,还右许多第三方模块使用,可以在python官网找到. 在使用第三方模块时,需要下载并安装此模块,然后就可以使用标准模块一样导入并 ...

  3. python常用框架及第三方库

    python常用框架及第三方库 一.Web框架 1.Django: 开源web开发框架,它鼓励快速开发,并遵循MVC设计,比较庞大,开发周期短.Django的文档最完善.市场占有率最高.招聘职位最多. ...

  4. 利用Node.js的Net模块实现一个命令行多人聊天室

    1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...

  5. Node.js的Formidable模块的使用

    今天总结了下Node.js的Formidable模块的使用,下面做一些简要的说明. 1)     创建Formidable.IncomingForm对象 var form = new formidab ...

  6. Node.js入门:模块机制

    CommonJS规范      早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来 ...

  7. node 学习笔记 - Modules 模块加载系统 (1)

    本文同步自我的个人博客:http://www.52cik.com/2015/12/11/learn-node-modules-path.html 用了这么久的 require,但却没有系统的学习过 n ...

  8. Node.js的net模块

    net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法 创建TCP服务器 net.createServer方法 创建客户端去连接服务器 net.connect方法 简 ...

  9. 初学Node(三)模块系统

    模块系统 Node根据CommonJS规范实现了一套自己的模块机制,可以使用require()导入一个模块,使用module.exports导出一个模块. require使用 在Node中我们可以使用 ...

  10. CocoaPods的安装及使用/利用开源库Diplomat实现分享及第三方登录/git的使用

    <<史上最简洁版本>> 1.gem sources -l查看 当前的源 //1.1 sudo -i..以下都是以管理员的身份来操作的 2.gem sources --remov ...

随机推荐

  1. flask上下文、g变量、current_app

    在flask中的上下文分为两种 : 请求上下文 (request context) 也就是和请求相关的上下文,记录一些请求相关的数据. 包含: 1.request请求对象 2.session会话 应用 ...

  2. ElasticSearch给索引起"别名"和其重要性

    创建别名: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/indices-aliases.html 我们有时候并不能确保索引库 ...

  3. Calico IPIP模式下的Cross Subnet特性分析

    本文分享自华为云社区<Calico IPIP模式下的CrossSubnet特性分析>,作者: 可以交个朋友. Calico ipip crossSubnet 模式 Calico-ipip模 ...

  4. C语言实现链表与文件的存取

    作者:柠檬i,学习C时长两个月半的个人练习生 第一次写文章,难免有些不足,请多多包涵. 本程序主要功能是建立链表,然后把链表数据存储到文件中,然后把文件数据存储到数组中并输出. 不多说了,放代码. 此 ...

  5. C语言使用dlfcn动态载入.so动态库

    转载:https://mp.weixin.qq.com/s?__biz=Mzk0NDYzNTI1Ng==&mid=2247483722&idx=1&sn=09a9458b012 ...

  6. [P2416 泡芙] 题解报告

    题目链接:P2416 泡芙 简化题意 给定一个无向图 \(G\),每条边有边权 \(0 / 1\),现给定 \(m\) 组询问,每次询问形如 \(s, t\),问是否可以从 \(s\) 走到 \(t\ ...

  7. MyBatis 的缓存处理

    作为常见的 ORM 框架,在使用 MyBatis 的过程中可以针对相关的查询进行缓存处理以提高查询的性能.本文将简要介绍一下 MyBatis 中默认的一级缓存和二级缓存,以及自定义缓存的处理 MyBa ...

  8. 图片标注-----labelimage

    本人用的环境是   win10  +  python3.6 pip install labelimg 安装成功之后,找到  Anaconda 安装目录下的  Lib  , 然后找到   site-pa ...

  9. 神经网络基础篇:详解逻辑回归 & m个样本梯度下降

    逻辑回归中的梯度下降 本篇讲解怎样通过计算偏导数来实现逻辑回归的梯度下降算法.它的关键点是几个重要公式,其作用是用来实现逻辑回归中梯度下降算法.但是在本博客中,将使用计算图对梯度下降算法进行计算.必须 ...

  10. iOS distribution发布证书过期或者被手动revoke了app会被下架吗?

    ​ 在距离distribution 证书过期一个月(或被手动revoke了)的时候会受到apple的邮件 ​编辑 虽然distribution过期(或者被手动revoke)了,如果你的开发者账号是co ...