require—require to do和doing区别
合同翻译时如何区分使用request和require
合同中,request和require都是“要求”的意思,不过request更偏重于“请求”,翻译英到中时遇到这两个词问题不大,翻译出它们的意思就可以,但是中译英时就要注意了,这是我今天要强调的重要区别,前者动作发出者通常为人,后者通常为物,下面通过例句说明:

1request
At the request of the Buyer, the SUPPLIER undertakes to deposit the source code with an institution stipulated by the Buyer at the expense of and under the terms of the Buyer.
应买方要求,供应商承诺根据买方的规定向买方指定的机构存储源代码,相关费用由买方承担。
补充说明:at the request of sb.是常见的搭配,也是该词在英文合同中的地道用法。
2require
We shall fulfill our obiligations as required by law.
我们应当根据法律的要求履行自己的义务。
JavaScript 中 require 和 import 语句的区别
随着现代 Web 开发,我们要么使用 require 要么使用 import 引用 JavaScript 依赖项。有时,我们将两者结合使用。
但是,你知道为什么这两者都存在吗? 使用一种或另一种时的最佳实践是什么?
在本文中,我将讨论使用 require 和 import 并回答其中一些常见问题。
在讨论 require 和 import 之前,有必要对 JavaScript 模块有一定的了解。 那么,让我们看看有哪些不同类型的 JavaScript 模块可用。
引入了 AMD 模块以使模块更加前端友好。 它们不需要任何打包器,并且所有依赖项都是动态解析的。
AMD使用 require 函数用于加载外部模块,并且能够充当 CommonJS 模块的包装器。
但是,随着 ES 模块的引入,AMD 的使用量急剧减少。
CommonJS 是 NodeJS 用来在模块中封装 JavaScript 的标准。 module.exports用于导出 CommonJS 模块,以及 import 函数用于将模块包含到单独的文件中。
尽管 CommonJS 模块在 NodeJS 中被广泛使用,但在前端开发中并没有使用它们。 这背后的主要原因是require函数的同步行为。
但是,NodeJS 从 v13 开始才开始支持 ES 模块。 在那之前,大多数 NodeJS 模块,包括 NPM 库,都是使用 CommonJS 模块开发的。
因此,CommonJS 模块仍然在开发人员中广泛使用。
而且,CommonJS 模块与 ES 模块同样重要,我将在本文接下来的部分中讨论更多。
UMD 是 AMD 和 CommonJS 的组合。 它使用了 AMD 的 CommonJS 语法和异步加载技术,使其适用于服务器端和客户端。
UMD 在 Webpack 等打包器中用作回退模块,下面显示了一个简单的 UMD 模块示例:
ES Modules (ECMAScript Modules) 是 JavaScript 中使用的官方标准。 ES 模块使用 import和 export 处理模块的语句。 它解决了 CommonJS 的最大限制之一,即同步加载。
在引入 ES Modules 之后,开发者之间有很多争论,考虑到与 CommonJS 的兼容性。 但是,开发人员已经适应使用这两种方法,我们将在接下来的部分中讨论更多详细信息。
已经了解了 JavaScript 模块的背景,那么让我们继续讨论 require 和 import.
require通常与 NodeJS 一起使用来读取和执行 CommonJS 模块。
这些模块可以是内置模块,如 http或自定义编写的模块。 使用 require,可以将它们包含在 JavaScript 文件中并使用它们的函数和变量。
但是,如果要使用 require 要获取本地模块,首先需要使用 module.exports 导出它们.
例如,假设您有一个名为 blogDetails.js,并且您需要使用该文件中的函数 index.js文件。
还可以使用一次导出多个模块 modules.export 如下:
注意: 如果最后不是使用 modules.export,可以附加 exports 。 例如: exports.getBlogContent = () => {};
我想现在你明白什么时候应该使用 require以及它是如何工作的。 接下来让我们看看如何 import 。 然后我们将能够以更深层次的理解来比较和对比它们。
import 是一个 ES 模块,并带有 export,它们被称为 ES6 import 和 export.
我们不能用 import 或导出到 ES 模块之外。
试图 import ES 模块之外是一个常见的开发人员错误。
如果我举同样的例子,我需要做的唯一改变就是修改 modules.export到 export default.
然后我们可以使用 import 将此文件包含在我们的 index.js文件。
注意: 类似于 require,还可以通过将导出附加到每个函数定义来单独导出每个函数。
例如: export const = getBlogContent = () => {};
所以,我想你现在明白应该如何以及何时使用 require和 import。但是,这还不是全部; 它们的功能和用法存在一些显着差异。 是时候进行比较了。
require 和 import 都用于包含模块。 但是它们有几个应该注意的重要功能。
import 语句只能在文件的开头定义。 定义一个 import 其他地方的语句会给你一个错误或自动转移到文件的开头。
声明 require 时,当加载的模块名称未预定义时,允许有条件地或动态地加载模块。
例如,你可以调用 require 在函数或 if 条件中,如下所示:
require语句具有这种灵活性,因为它们被视为函数。 它们在运行时被调用,在此之前没有办法知道任何事情。 但, import 语句是静态的,我们不能有条件地或动态地使用它们。
注意: 由于 import 语句是静态的,所以可以在运行应用程序之前检测到任何错误
在小型应用程序中,同步或异步可能不会发挥主要作用。 但是,如果我们考虑大型应用程序,则会使用数百个模块。 所以,如果你使用 require, 模块将被一 一加载和处理。
而 import 语句通过异步工作解决了这个问题,这比 require 在大规模应用中更能发挥作用。
正如我们所讨论的,ES 模块系统是作为维护客户端 JavaScript 模块的标准引入的。 TypeScript 也采用了它,并添加了用于定义 Type 的内容。 因此,我不认为 require可以再次取代 ES,因为它已成为开发人员中广泛使用的标准。
但是由于有大量的 NodeJS 模块和库是用 CommonJS 编写的,我们不能保留 require完全放在一边。 所以我们必须相应地使用它们。
如果你使用的是 TypeScript,则可以通过配置 tsconfig.json文件。 例如,假设我们需要输出一个使用 CommonJS 的代码版本。
需要做的就是创建一个新的 tsconfig 通过扩展原始文件用于 CommonJS 输出 tsconfig文件并修改 module下参数 CompilerOptions.
注意: 还可以使用 Webpack 等构建工具将 ES 模块转换为 CommonJS 模块。
以下表格为比较两者
不够理解import和require导入的区别被diss惨了
作者:天天鸭
前言
在真实工作中,估计 import 和 require 大家经常见到,如果做前端业务代码,那么 import 更是随处可见了。但我们都是直接去使用,但是这两种方式的区别是什么呢?应用场景有什么区别呢?
大部分能说出来 import 是 ES6 规范,而 require 是 CommonJS 规范,然后面试官深入问你两者编译规则有啥不一样?然后就不知道了
本文一次性对 import 和 require 的 模块基本概念 、 编译规则 、 基本用法差异 、 生态支持 和 性能对比 等 5 个方面一次理清总结好,下次遇到这种问题直接举一反三。
(顺便吆喝一句,技术大厂,前后端测试捞人,感兴趣来看 这里 )
一、模块基本概念 require : 是 CommonJS 模块规范,主要应用于 Node.js 环境。 import :是 ES6 模块规范,主要应用于现代浏览器和现代 js 开发 (适用于例如各种前端框架)。
二、编译规则 require : require 执行时会把导入的模块进行缓存,下次再调用会返回同一个实例。 在 CommonJS 模块规范中, require 默认 是同步的。当我们在某个模块中使用 require 调用时,会等待调用完成才接着往下执行,如下例子所示。
模块 A 代码
模块 B 代码
打印顺序,会按顺序同步执行
注意 : require 并非绝对是同步执行,例如在 Webpack 中能使用 require.ensure 来进行异步加载模块。 import :
在 ES6 模块规范中, import 默认是静态编译的,也就是在编译过程就已经确认了导入的模块是啥,因此 默认 是同步的。 import 有引用提升置顶效果,也就是放在何处都会默认在最前面。
但是...., 通过 import() 动态引入是异步的哦,并且是在执行中加载的。 import() 在真实业务中是很常见的,例如路由组件的懒加载 component: () => import('@/components/dutest.vue') 和动态组件 const MyTest = await import('@/components/MyTest.vue'); 等等, import() 执行返回的是一个 Promise ,所以经常会配合 async/await 一起用。
三、基本用法差异 require : 一般不直接用于前端框架,是用于 Node.js 环境和一些前端构建工具(例如: Webpack )中
1. 导入模块 (第三方库) 在 Node.js 中经常要导入各种模块,用 require 可以导入模块是最常见的。例如导入一个 os 模块
2. 导入本地写好的模块 假设我本地项目有一个名为 utils.js 的本地文件,文件里面导出一个 add 函数
在其它文件中导入并使用上面的模块
import : 一般都是应用于现在浏览器和各种主流前端框架(例如: Vue\react )
1. 静态引入(项目中最常用) 这种情况一般适用于确定的模块关系,是在编译时解析
2. 动态引入 其实就是使用 import() 函数去返回一个 Promise ,在 Promise 回调函数里面处理加载相关,例如路由的懒加载。
或者动态引入一些文件(或者本地的 JSON 文件)
四、生态支持 require :
Node.js14 之前是默认模块系统。目前的浏览器基本是不原生支持 CommonJS ,都是需要通过构建工具(如 Webpack )转换才行。并且虽然目前市面上 CommonJS 依然广泛使用,但基本都是比较老的库,感觉被逐渐过渡了。
import :
import 是 ES6 规范,并且 Node.js 在 Node.js12 开始支持 ES6 , Node.js14 之后是默认选项。目前现代浏览器和主流的框架( Vue、React )都支持原生 ES6 ,大多数现代库也是,因此 import 是未来主流。
五、性能对比
ES6 支持 Tree Shaking 摇树优化,因此可以更好地去除一些没用的代码,能很好减小打包体积。 所以 import 有更好的性能。
import() 能动态导入模块性能更好,而 require 不支持动态导入。
小结
对比下来发现, import 不但有更好性能,而且还是 Node.js14 之后的默认,会是主流趋势。
至此我感觉足够能举一反三了,如有哪里写的不对或者有更好建议欢迎大佬指点一二啊。
天地劫幽城再临归真4-5攻略:第四章归真4-5八回合图文通关教学[多图],天地劫幽城再临归真4-5怎么样八回合内通
2025-01-01
用户评论
我经常在写英文作文的时候会遇到这两个词,真的很难区分!
有15位网友表示赞同!
我一直不明白 "require to do" 和 "require doing" 的用法,感觉好像没什么不同…
有19位网友表示赞同!
学习语法一直是我的弱项,这个区别应该很常见吧?
有18位网友表示赞同!
希望这篇文章能帮我搞懂这两个短语的区别,这样写邮件或作文就不会再犯错啦。
有14位网友表示赞同!
我记得以前老师说过 "require to do" 强调动作,但具体该如何区分还是不太清楚。
有12位网友表示赞同!
这个话题很有用!感觉很多英文素材都用到这两个表达,学习起来太方便了。
有14位网友表示赞同!
期待看到详细的例句分析,这样更容易理解的区别!
有6位网友表示赞同!
我平时听英语比较多,很少会遇到这种语法难题...
有17位网友表示赞同!
啊,终于找到解释这个疑问的文章啦!
有6位网友表示赞同!
这篇文章一定会有各种案例,用来加深我对这两个短语的理解吧?
有19位网友表示赞同!
学习英文要掌握语法基础知识,才能写得更得体!
有12位网友表示赞同!
我也经常对这些语法细节感到困惑,不知道该怎么记忆...
有18位网友表示赞同!
希望这篇文章能用简单易懂的方式解释清楚!
有16位网友表示赞同!
我最近在准备学长文考试,学习到这两个短语的用法对我很有帮助!
有10位网友表示赞同!
我很喜欢用英文表达自己的想法,但有时候语法细节就会让我头疼...
有10位网友表示赞同!
阅读这类文章可以帮我提高英语水平,了解更多的语法知识!
有15位网友表示赞同!
我感觉掌握了文法的技巧后,写英文会更有自信!
有7位网友表示赞同!
感谢作者分享这篇文章,帮助我们更好地理解 "require to do" 和 "require doing"!
有13位网友表示赞同!