
首先说模块是一个程序代码块的集合,在我们实际项目开中往往同一个模块多个地方都需要使用,这时候就需要加载一个模块。
1这个函数首先查找 packageloaded 表, 检测 modname 是否被加载过。 如果被加载过,require 返回 packageloaded[modname] 中保存的值。 否则,它试着为模块寻找 加载器 。
require 遵循 packagesearchers 序列的指引来查找加载器。 如果改变这个序列,我们可以改变 require 如何查找一个模块。 下列说明基于 packagesearchers 的默认配置。
2首先 require 查找 packagepreload[modname] 。 如果这里有一个值,这个值(必须是一个函数)就是那个加载器。 否则 require 使用 Lua 加载器去查找 packagepath 的路径。 如果查找失败,接着使用 C 加载器去查找 packagecpath 的路径。 如果都失败了,再尝试 一体化 加载器 (参见 packagesearchers)。
3每次找到一个加载器,require 都用两个参数调用加载器: modname 和一个在获取加载器过程中得到的参数。 (如果通过查找文件得到的加载器,这个额外参数是文件名。) 如果加载器返回非空值, require 将这个值赋给 packageloaded[modname]。 如果加载器没能返回一个非空值用于赋给 packageloaded[modname], require 会在那里设入 true 。 无论是什么情况,require 都会返回 packageloaded[modname] 的最终值。
4如果在加载或运行模块时有错误, 或是无法为模块找到加载器, require 都会抛出错误。
一个描述有一些为包管理准备的编译期配置信息的串。 这个字符串由一系列行构成:
第一行是目录分割串。 对于 Windows 默认是 '\' ,对于其它系统是 '/' 。
第二行是用于路径中的分割符。默认值是 ';' 。
第三行是用于标记模板替换点的字符串。 默认是 '' 。
第四行是在 Windows 中将被替换成执行程序所在目录的路径的字符串。 默认是 '!' 。
第五行是一个记号,该记号之后的所有文本将在构建 luaopen_ 函数名时被忽略掉。 默认是 '-'。
这个路径被 require 在 C 加载器中做搜索时用到。
让宿主程序动态链接 C 库 libname 。
5当 funcname 为 "", 它仅仅连接该库,让库中的符号都导出给其它动态链接库使用。 否则,它查找库中的函数 funcname ,以 C 函数的形式返回这个函数。 因此,funcname 必须遵循原型 lua_CFunction (参见 lua_CFunction)。
这是一个低阶函数。 它完全绕过了包模块系统。 和 require 不同, 它不会做任何路径查询,也不会自动加扩展名。 libname 必须是一个 C 库需要的完整的文件名,如果有必要,需要提供路径和扩展名。 funcname 必须是 C 库需要的准确名字 (这取决于使用的 C 编译器和链接器)。
moduleexports 初始值为一个空对象 {}
exports 是指向的 moduleexports 的引用
require() 返回的是 moduleexports 而不是 exports
上面的代码等价于:
moduleexports = somethings
exports = moduleexports
原理很简单,即 moduleexports 指向新的对象时,exports 断开了与 moduleexports 的引用,那么通过 exports = moduleexports 让 exports 重新指向 moduleexports 即可。
一个软件单位,由一个或多个相同容器类型的J2EE组件和一个相同类型的配置描述符组成。有三种module类型:EJB,Web,和Application Client。模块可以被配置成独立的单元或嵌入到应用程序中。
你删了 不要清理了 回收站 看哇 要是启动不了 重启的话 你就选最后 一次正常启动 就可以了 要是有影响的话 在还原
module和主程序可以不在一个文件中,也可以不用在同一路径下
这时首先编译module: ifort -c modsf90, 然后得到mod文件
将这些mod文件拷贝到主程序路径下, 接着编译主程序即可: ifort mainf90
Project中新建module是默认为lib的,现在要独立运行成App,就需要做一些更改。
22 配置程序入口,添加intent-filter
做到上面几点,就可以作为App运行了。
我们既然组件化了,当然要做到可以随时切换是否独立运行。
这样,设置一个开关来控制,然后再来配置一下AndroidMenifest文件,就行了。
OK,完成。这样我们就可以在configgradle中切换模块是否单独运行。
实际效果如下
在需要调用module的程序中添加USE语句:
use NESDIS_SSMI_SnowEM_Module
程序即可正常调用module中的函数和子程序
以上就是关于程序开发中的模块是什么全部的内容,包括:程序开发中的模块是什么、微信小程序中module.exports和exports的区别、module文件是什么,可以删除否等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)