Quick中require与import的区别
2015-11-11 19:58
609 查看
载入一个模块
import()与require()功能相同,但具有一定程度的自动化特性。
假设我们有如下的目录结构:
app/
app/classes/
app/classes/MyClass.lua
app/classes/MyClassBase.lua
app/classes/data/Data1.lua
app/classes/data/Data2.lua
当在模块名前面有一个"."时,import()会从当前模块所在目录中查找其他模块。因此MyClass及其相关文件不管存放到什么目录里,我们都不再需要修改MyClass中的import()命令。这在开发一些重复使用的功能组件时,会非常方便。
我们可以在模块名前添加多个".",这样import()会从更上层的目录开始查找模块。
不过import()只有在模块级别调用(也就是没有将import()写在任何函数中)时,才能够自动得到当前模块名。如果需要在函数中调用import(),那么就需要指定当前模块名:
#MyClass.lua
#这里的...是隐藏参数,包含了当前模块的名字,所以最好将这行代码写在模块的第一行
import()与require()功能相同,但具有一定程度的自动化特性。
假设我们有如下的目录结构:
app/
app/classes/
app/classes/MyClass.lua
app/classes/MyClassBase.lua
app/classes/data/Data1.lua
app/classes/data/Data2.lua
MyClass中需要载入MyClassBase和MyClassData。如果用require(),MyClass内的代码如下:
localMyClassBase=require("app.classes.MyClassBase")
localMyClass=class("MyClass",MyClassBase)
localData1=require("app.classes.data.Data1")
localData2=require("app.classes.data.Data2")
当在模块名前面有一个"."时,import()会从当前模块所在目录中查找其他模块。因此MyClass及其相关文件不管存放到什么目录里,我们都不再需要修改MyClass中的import()命令。这在开发一些重复使用的功能组件时,会非常方便。
我们可以在模块名前添加多个".",这样import()会从更上层的目录开始查找模块。
不过import()只有在模块级别调用(也就是没有将import()写在任何函数中)时,才能够自动得到当前模块名。如果需要在函数中调用import(),那么就需要指定当前模块名:
#MyClass.lua
#这里的...是隐藏参数,包含了当前模块的名字,所以最好将这行代码写在模块的第一行
localCURRENT_MODULE_NAME=... localfunctiontestLoad() localMyClassBase=import(".MyClassBase",CURRENT_MODULE_NAME) end
相关文章推荐
- QuickSort
- UGUI之滑动翻页效果
- android view requestLayout,invalidate 事件的分发,接收,以及处理
- 优化UITableViewCell高度计算的那些事
- Ueditor绝对路径问题
- 如何让 UITableView 的 headerView跟随 cell一起滚动
- Builder模式
- LightOJ 1369 - Answering Queries(规律)
- iOS笔记UI--ipad分页控件
- UE4 Android Device Compatibility
- UE4.9 Hardware & Software Specifications
- Epic Games Shows Incredible New Anti-Aliasing Technique – Screenshots + Video Comparison
- UE4 iOS Packaged Game Size
- mysql中key 、primary key 、unique key 与index区别
- 自定义UITableViewCell
- hdoj 1530 Maximum Clique 【最大团】
- AnReplyCaliberQuery.js无端自动关闭,开启一段时间就自动关闭
- Maven实战之Quick Start
- 学习require.js中的一些总结
- SCRIPT5022: Sys.WebForms.PageRequestManagerServerErrorException: 输入字符串的格式不正确。