首先我们要明白require与import的基本语法:

require的基本语法:在导出的文件中定义module.export,导出的对象的类型不予限定(可以是任何类型,字符串,变量,对象,方法),在引入的文件中调用require()方法引入对象即可,换一种说法就是require相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,对象、数字、字符串、函数……再把require的结果赋值给某个变量,代码实现首先如:

// tt.js
module.exports = {
tt: function(){
console.log(“这是一个函数,也就是一个对象”)
}
}
解析:在tt.js中使module这个意思就是模块的意思,就是实现特定功能的一组方法,
也就是只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。用module.export中的export这个变量接收返回的函数名为tt的函数

/ bb.js中
var obj = require(’…/tt.js’)
obj.tt() // “这是一个函数,也就是一个对象”
解析:在bb.js中获取到tt.js赋值给变量obj,然后调用该方法

本质上是将要导出的对象赋值给module这个的对象的export属性,在其他文件中通过require这个方法访问该属性

import的基本语法:
导出的对象必须与模块中的值一一对应,就是导出的对象与整个模块进行解构赋值,例如:

复制代码
//tt.js中
export default{ //(这种方法是最常使用的方法,加入default关键字代表在import时可以使用任意变量名并且不需要花括号{})
b: function(){
console.log(“这是一个函数”)
}
}

export function(){ //导出函数

export {newF as aa ,bb,cc} // 解构赋值语法(as关键字在这里表示将newF作为aa的数据接口暴露给外部,外部不能直接访问aa)

//bb.js中
import aa from ‘…’ //import常用语法(需要export中带有default关键字)可以任意指定import的名称

import {…} from ‘…’ // 基本方式,导入的对象需要与export对象进行解构赋值。

import aa as As from ‘…’ //使用as关键字,这里表示将aa代表Aa引入(当变量名称有冲突时可以使用这种方式解决冲突)

import {a as Aa,b,c} //as关键字的其他使用方法
复制代码
require和import相互转换使用:

import list from ‘./list’;
//等价于
var list = require(’./list’);

require和import分别使用在:

require 是赋值过程并且是运行时才执行,也就是异步加载。
require可以理解为一个全局方法,因为它是一个方法所以意味着可以在任何地方执行。
import 是解构过程并且是编译时执行。
import必须写在文件的顶部。
require和import的优缺点比较:

require的性能相对于import稍低,因为require是在运行时才引入模块并且还赋值给某个变量,而import只需要依据import中的接口在编译时引入指定模块所以性能稍高。

首先我们要明白require与import的基本语法:require的基本语法:在导出的文件中定义module.export,导出的对象的类型不予限定(可以是任何类型,字符串,变量,对象,方法),在引入的文件中调用require()方法引入对象即可,换一种说法就是require相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,... var cjs2es6 import = require ('cjs2es6 import '); var src = "var foo = require ('bar');"; var newSrc = cjs2es6 import (src); // " import foo from 'bar';" demo/demo.js更多示例(运行npm start ) require ()调用是静态分析的,类似于 (在),以便 转换 import 语句。 ES6 导入旨在强制执行静态模块结构,因此并非所有需求都被翻译。 麻省理工学院
ES6标准发布后,module成为标准,标准的 使用 是以export指令导出接口,以 import 引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范, 使用 require 引入模块, 使用 module.exports导出接口。 不把 require import 整清楚,会在未来的标准编程中死的很难看。 require 时代的模块 node编程中最重要的思想之一就是模块,而正是这个思想,让JavaScript的大规模工程成为可能。模块化编程在js界流行,也是基于此,随后在浏览器端, require js和seajs之类的工具包也出现了,可以说在对应规范下, require 统治了ES6之前的所
理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。 但是,Javascript不是一种模块化编程语言,在es6以前,它是不支持”类”(class),所以也就没有”模块”(module)了。 require 时代 Javascript社区做了很多努力,在现有的运行环境中,实现”模块”的效果。 模块就是实现特定功能的一组方法。 只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。 自从 使用 了 es6 的模块系统后,各种地方愉快地 使用 import export default,但也会在老项目中看到 使用 commonjs规范的 require module.exports。甚至有时候也会常常看到两者互用的场景。 使用 没有问题,但其中的关联与区别不得其解, 使用 起来也糊里糊涂。比如:
在es6之前js一直没有自己的模块 语法 ,为了解决这种尴尬就有了 require .js的出现。在es6发布之后js又引入了 import 的概念使得不清楚两者之间的区别的同学在实际 使用 过程中造成了自己的误解,在查阅了相关资料之后在此记录下自己的小小见解。 require 的基本 语法 核心概念:在导出的文件中定义module.export,导出的对象的类型不予限定(可以是任何类型,字符串,变量...
ES6标准发布后,module成为标准,标准的 使用 是以export指令导出接口,以 import 引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范, 使用 require 引入模块, 使用 module.exports导出接口。 import 语法 require 不同,而且 import 必须放在文件的最开始,且前面不允许有其他逻辑代码,这和其他所有编程语言风格一致。 import ...
ES6之前出现了JS模块加载的法案,最主要是CommonJS和AMD规范。CommonJS前者主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如 require js,为异步加载。 import require 区别 node编程中最重要的思想是模块化, import require 都是被模块化 使用 require 是运行时调用,所以可以随处引入 import 是编译时调用...
CommonJS的由来 在早期没有模块化思想时代码没有很好的编写规范,导致很多代码、逻辑重复、缺乏条理性且不易管理维护,这也让很多开发者头疼不已。随着JavaScript 社区的发展,社区为JavaScript制定了相应的规范,而CommonJS规范的提出得到了大家的承认和广泛的应用,2009年CommonJS就此诞生了。 CommonJS介绍 CommonJS实现了Javascript的模块化规范,规范了模块的特性和各模块之间的相互依赖性,使得代码可以更好的编写和维护,同时提高了代码的复用性。定义每个文件
require :在Node.js中 使用 语法 为: require ('模块或库路径')。 import :在ES6中 使用 语法 为: import { 方法或变量名 } from '模块或库路径'。 2.加载方式 require :同步加载模块或库,一旦加载完成,整个应用程序才能执行。 import :异步加载模块或库, 使用 的是ES6中的Promise异步方式,不会阻塞后续代码的执行。 3.作用域 require :在Node.js中,加载的模块为单例,即在整个应用程序中只会被加载一次,且被缓存起来供后续 使用 import :在ES6中,每次加载模块都是独立的,不会对其他模块产生影响。 4.默认导出 require :不支持导出默认模块,需要 使用 module.exports导出一个对象。 import :支持导出默认模块, 语法 为: import defaultName from '模块或库路径'。 综上, require import 使用 方式和作用有所不同,需要根据具体的环境和需求进行选择。在Node.js中必须 使用 require ,而在ES6中可以选择 使用 import 。 There is no tracking information for the current branch. Please specify which branch you want to...
hudukuio: 别的分支有上线, 然后这边dev开发分支已经push到远端了, 使用git pull origin master合并别人已经上线的代码, 报 fatal: 无法快进,终止。 不能自动合并, 然后将有冲突的地方标示出来。以前是可以的。 我现在必须先 git checkout master , git pull, git checkout dev, git merge master 才能合并。 有什么方法能直接像之前使用 git pull origin master 一样, 无需切回master 直接合并远程 master 代码吗? git pull之后失败,后使用git pull --rebase origin master出现代码丢失 故笙诉_: 给老哥点赞 git pull之后失败,后使用git pull --rebase origin master出现代码丢失 不怕事的铁铲哥: 卧槽我吓死了,谢谢兄弟 git pull之后失败,后使用git pull --rebase origin master出现代码丢失 Leonardo_87: 真的讲得特清楚