import() 与 require() 功能相同,但具有一定程度的自动化特性。假设有如下的目录结构:app/app/classes/app/classes/MyClass.luaapp/classes/MyClassBase.luaapp/classes/data/Data1.luaapp/classes/data/Data2.luaMyClass 中需要载入 MyClassBase 和 MyClassData。
如果用 require(),MyClass 内的代码如下:local MyClassBase = require(\”app.classes.MyClassBase\”)local MyClass = class(\”MyClass\”, MyClassBase)local Data1 = require(\”app.classes.data.Data1\”)local Data2 = require(\”app.classes.data.Data2\”)假如将 MyClass 及其相关文件换一个目录存放,那么就必须修改 MyClass 中的 require() 命令,否则将找不到模块文件。
而使用 import(),只需要如下写:local MyClassBase = import(\”.MyClassBase\”)local MyClass = class(\”MyClass\”, MyClassBase)local Data1 = import(\”.data.Data1\”)local Data2 = import(\”.data.Data2\”)当在模块名前面有一个\”.\” 时,import() 会从当前模块所在目录中查找其他模块。因此 MyClass 及其相关文件不管存放到什么目录里,都不再需要修改 MyClass 中的 import() 命令。这在开发一些重复使用的功能组件时,会非常方便百科。
最近做vue的换肤功能,功能的一大解决思路就是在vue的入口文件main.js中根据逻辑判断加载不同的css文件样式,以达到可以不同的样式的目的,实现换肤的功能,但是在引入css文件时候,用import 引入时报如下错误 后来使用require引入解决此问题 不禁让我陷入深思,vue中的require与import之间到底有什么区别: 首先,基本语法概念方面: require:在导出的文件中定义module.export,导出的对象的类型不予限定(可以是任何类型,字符串,变量,对象,方法),在引入的文件中调用require()方法引入对象即可。 aPage.js中 bPage.js中引入aPage.js的方法 实质上就是把要引入的对象赋值给module对象的export属性,其他文件中可以通过require访问到这个属性 import:导出的对象必须与模块中的值一一对应,换一种说法就是导出的对象与整个模块进行结构赋值 区别: 1.require 是赋值过程并且是运行时才执行, import 是解构过程并且是编译时执行。
imp
一、区别于联系 1.module.exports、exports、require是属于CommonJS模块规范。2.export、export default、import是属于ES6语法 3.module.exports和exports、export和export default都是导出模块。
4.import和require则是导入模块。
5.module.exports导出对应require导入,export导出对应import导入二、CommonJS规范(exports与require) Node应用由模块组成,采用CommonJS模块规范。根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。 CommonJS规范规定,每个模块内部,module变量代表当前模块。
这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。require方法用于加载模块。
三、ES6语法(export、export default、import) 模块功能主要由:export和import构成。export导出模块的对外接口,import命令导入其他模块暴露的接口。export其实和export default就是写法上面有点差别,一个是导出一个个单独接口,一个是默认导出一个整体接口。
使用import命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。这里就有一个简单写法不用去知道有哪些具体的暴露接口名,就用export default命令,为模块指定默认输出。