• 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

    1. // index.js 文件:
    2. var myquerystring=require("./myquerystring.js")
    3. console.log(myquerystring.name,myquerystring.age)
    4. myquerystring.tool()
    1. // myquerystring.js 文件
    2. module.exports = {
    3. name: "哈哈哈",
    4. age: 21,
    5. tool() {
    6. console.log("工具函数")
    7. },
    8. }

        运行结果: 

    (三) 找模块  如: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对象,导出的值就不能改变,是值的拷贝

         使用:

    1. // eg.js
    2. var a = 1
    3. var b = 1
    4. function add(a, b) {
    5. return a + b
    6. }
    7. module.exports = {
    8. a,
    9. b,
    10. add
    11. }
    1. // index.js
    2. var obj = require("./eg.js")
    3. console.log(obj); // { a: 1, b: 1, add:fun }
    4. console.log(obj.a); // 1
    5. console.log(obj.b); // 2
    6. console.log(obj.add); // add:fun

     import:

    • 异步加载 有一个独立的模块依赖的解析阶段
    • 只能在文件开头定义,且前面不允许有其他逻辑代码
    • import是编译时加载

    • import通过export导出是指定输出的代码,导出的值可以改变,是值的引用

         使用:

    1. // eg.js
    2. // 导出
    3. export var a = 1
    4. export var b = 2
    5. var str ="字符串"
    6. export default str
    1. // index.js
    2. import str,{a,b} from "./eg.js"
    3. console.log(str); // 字符串
    4. console.log(a); // 1
    5. 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":项目依赖

  • 相关阅读:
    【华为OD机试真题 JAVA】分积木
    Java面试被问框架源码看过吗?70道SSM面试题及学习笔记值得收藏!
    创建自己的组件库
    C++ 流(stream)总结
    新知同享|Cloud 开发加速创新,更加安全
    Tkinter:文本框Entry
    java计算机毕业设计ssm网上报名系统(源码+系统+mysql数据库+Lw文档)
    电子学会C/C++编程等级考试2023年05月(三级)真题解析
    【Python3】【力扣题】258. 各位相加
    关于驱动中二进制数据转换
  • 原文地址:https://blog.csdn.net/qq_56668869/article/details/126052195