一、Require函数

Require函数

Require函数: 用于引入模块、 JSON、或本地文件。 可以从 node_modules 引入模块。 可以使用相对路径(例如 ./、 ./foo、 ./bar/baz、 …/foo)引入本地模块或 JSON 文件,路径会根据 __dirname定义的目录名或当前工作目录进行处理

// 引入本地模块:
const myLocalModule = require('./path/myLocalModule');

// 引入 JSON 文件:
const jsonData = require('./path/filename.json');

// 引入 node_modules 模块或 Node.js 内置模块:
const crypto = require('crypto');

注 意 : \color{#FF0000} {注意:}

  1. Wepack本身是一个预编译路径,不能够require纯变量的打包工具,因为无法预知变量路径
  2. require(path) ,path 至少要有三部分组成, 目录,文件名和后缀
  3. 目录:webpack 才知道从哪里开始查找
  4. 后缀 文件后缀,必须要加上,不然会报错
  5. 文件名:可用变量表示

综上以下引用方式是错误的!

let imgUrlStr = '../images/a.png'; 
let imgUrl = require(imgUrlStr);
//webpack无法知道是哪个模块或图片被引入,故无法将图片hash并输出到指定dist文件下

鉴于require在纯变量的情况下找不到模块,所以我们至少要在require参数中写明一个目录(如下边代码中的example 2和example 3),这样的话,虽然不知道具体的模块,但是webpack也会为我们做些分析工作:
如分析目录: ‘…/images’ 或着 提取正则表达式 ‘/^.*.png$/‘

let imgName = 'a'; 
let imgAllName = 'a.png';

// example 1
let imgUrl = require('../images/a.png');                // 纯字符串
// example 2
let imgUrl = require('../images/' + imgAllName);        // 目录 + 文件全名
// example 3
let imgUrl = require('../images/' + imgName + '.png');  // 目录 + 文件名 + 后缀

import与require区别

node编程中最重要的思想就是模块化,import和require都是被模块化所使用。

遵循规范

  1. equire 是 AMD规范引入方式
  2. import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法

调用时间

  1. require是运行时调用,所以require理论上可以运用在代码的任何地方
  2. import是编译时调用,所以必须放在文件开头

本质

  1. require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量
  2. import是解构过程,但是目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require

参考:
资料一:https://blog.csdn.net/liubangbo/article/details/105028135
资料二:https://www.cnblogs.com/sunshq/p/7922182.html

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值