node.js--模块化

一、语法

(一)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"):

  1. 去当前项目中的node_modules文件夹中找fs的文件夹下package.json中main字段对应的路径
  2. 没有就去node的安装包中的全局安装路径中找
  3. 还是没有找到就去核心库
  4. 核心库也没有就报错 说明是未下载或写错名字的第三方模块或没写好的自定义模块

(四) 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":项目依赖

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哈哈ha~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值