一、语法
(一)require语法
- 把一系列相似功能 封装到一个模块中 以供使用
- node.js环境中的全局函数 require() 在浏览器中不能用这个
- 前端引用js文件用import 可以运行到浏览器去
- 后端引入js文件用require 也可以用import 一般不会运行到浏览器中
(二)nodejs的三种模块
1、内置的核心模块
node.js安装时自动装好了的 如:fs 、querystring
2、第三方模块 需要下载使用
如 mime npm i mime 下载模块后npm会在项目配置文件中的依赖中写入模块名和版本
3、自定义模块
示例:myquerystring
// index.js 文件:
var myquerystring=require("./myquerystring.js")
console.log(myquerystring.name,myquerystring.age)
myquerystring.tool()
// myquerystring.js 文件
module.exports = {
name: "哈哈哈",
age: 21,
tool() {
console.log("工具函数")
},
}
运行结果:
(三) 找模块 如:reqire("fs"):
- 去当前项目中的node_modules文件夹中找fs的文件夹下package.json中main字段对应的路径
- 没有就去node的安装包中的全局安装路径中找
- 还是没有找到就去核心库
- 核心库也没有就报错 说明是未下载或写错名字的第三方模块或没写好的自定义模块
(四) import 和 require 的区别(笔试题):
在ES6中:
- 模块遵循ES6规范,使用export导出接口,使用import引入模块
- ES6 模块是动态引用,若使用 import 从一个模块加载变量,变量不会缓存,而是成为一个指向被加载模块的引用
在node中:
- 模块遵循CommonJS规范,使用module.exports导出接口,使用require引入模块
- commonJS 模块的重要特性是加载时执行,及脚本代码在 require 的时候就会全部执行。一 旦出现某个模块被“循环加载”就只输出已经执行的部分,还没有执行的部分是不输出的
require():
-
是一个内置函数,用于同步导入外部模块(3种)
-
require() 可以在任何地方被调用
-
require()是运行时加载
-
require() 可以读取、执行 JavaScript 文件并返回导出的对象
- require通过module.exports导出的是exports对象,导出的值就不能改变,是值的拷贝
使用:
// eg.js
var a = 1
var b = 1
function add(a, b) {
return a + b
}
module.exports = {
a,
b,
add
}
// index.js
var obj = require("./eg.js")
console.log(obj); // { a: 1, b: 1, add:fun }
console.log(obj.a); // 1
console.log(obj.b); // 2
console.log(obj.add); // add:fun
import:
- 是异步加载 有一个独立的模块依赖的解析阶段
- 只能在文件开头定义,且前面不允许有其他逻辑代码
-
import是编译时加载
- import通过export导出是指定输出的代码,导出的值可以改变,是值的引用
使用:
// eg.js
// 导出
export var a = 1
export var b = 2
var str ="字符串"
export default str
// index.js
import str,{a,b} from "./eg.js"
console.log(str); // 字符串
console.log(a); // 1
console.log(b); // 2
二、npm和package.json
示例:
新建一个文件夹m (必须是英文否则报错)=> cmd => npm i init -y => 生成package.json文件 => npm i mime --save => 生成node_modules文件夹
运行:
1)m下cmd : node test.js (自启动)
2)m下cmd :npm run dev (json文件"scripts"中加"dev":"node test.js") (npm帮忙启动)
运行结果:
(一)npm模块
- 是官方核心模块
- 允许用户从npm服务器下载别人编写的第三方包到本地使用
- 允许用户将自己编写的包或命令行程序上传到npm服务器供别人使用
- 通过npm可以安装和管理项目的依赖,并且能够指明依赖项的具体版本号
npm i 模块名1 模块名2 -g :把多个模块同时下载到全局安装路径
npm i 模块名 不写/--save :把模块下载到项目的安装路径(当前项目内部的node_modules)
npm i 模块名 --save 项目依赖 会把依赖包名称添加到package.json文件的dependencies 下
npm i 模块名 --save-dev 环境依赖 会把依赖包添加到package.json文件的devDependencies
npm i 模块名 -S 等价于 npm i 模块名 --save
npm i 模块名 -D 等价于 npm i 模块名 --save-dev
npm i 去项目的配置文件找到依赖的包全部下载
使用:打包时只发送源码和项目配置文件,nmp i 会根据配置文件自动下载所有需要的模块
npm run dev 去项目的配置文件中找scripts字段 运行里面的dev指令
(二)package.json
- 是项目的配置文件
- 用于记录整个项目的信息
- 可以通过 package.json 文件来管理项目信息,配置脚本
项目名:
作者信息:
...
"scripts":{"dev":"node inedx.js"} 启动指令 主要用于小黑窗的npm启动 npm run dev
"dependencies":项目依赖