美文网首页
Cocos2d-x 加载模块

Cocos2d-x 加载模块

作者: 白小白152 | 来源:发表于2019-09-30 14:35 被阅读0次

1. require(modName)

require会加载给定的模块,首先检查表package.loaded来判定模块是否已经存在。若存在则加载返回package.loaded[modName]所存储的值,否则尝试为模块找到一个加载器。

要找到一个加载器,require首先查询package.preload[modName],若有值且是一个函数则断定就是一个加载。若没有值require使用package.path中存储的路径查找一个Lua的加载器。若该查找也失败,则使用package.cpath中存储的路径查找一个C语言加载,若仍然失败则尝试使用all-in-one加载器。

当加载一个C语言库时,require首先使用动态链接工具将应用程序与库连接起来,之后尝试找到该库中的C函数,该函数要被当做加载器使用。这个C函数的名字是字符串luaopen_连接着复制的模块名。此外,若模块名称中函数连字符-,则第一个连字符的前缀包括连字符都会被移除。

require既没有为模块查找到一个Lua库,也没有为模块找到一个C库,它将调用all-in-one加载器。该加载器为给定模块的根名称,查找C路径并找到对应的库。

一旦找到一个加载器,require会使用单个参数modName调用加载器。若加载器返回任何值,则require会将其赋值给package.loaded[modName]。若加载器无返回值且没有给package.loaded[modName]赋与任何值,则require为该条目赋值为true。无论如何,require返回package.loaded[modName]的最终值。

若加载或运行模块有任何错误或不能为模块寻找一个加载器,则require会发出一个错误信号。

2. LuaLoadChunksFromZIP

requireLuaLoadChunksFromZIP的区别:

  • require加载包的顺序是 package.loadedpackage.preload...
  • LuaLoadChunksFromZIP会解压包并加载数据到内存中,可在package.preload中查看使用LuaLoadChunksFromZIP加载的包package

若加载到内存中的包,使用require就只能是完全能对应的包名,但若是文件的话可以在package.path中查找。

相关文章

  • Cocos2d-x 加载模块

    1. require(modName) require会加载给定的模块,首先检查表package.loaded来判...

  • webpack打包代码实现

    webpack模块加载 异步模块加载 通过 import()实现指定模块的懒加载操作 懒加载的核心原理就是创建js...

  • Node.js 核心模块概述

    模块加载原理与加载方式 Node 中的模块:核心模块/原生模块:Node提供的模块。文件模块:用户编写的模块。 N...

  • Nodejs的自定义模块加载中的坑

    加载自定义模块有两种方式: 按文件路径加载模块 通过查找node_modules目录加载模块 按文件路径加载 这种...

  • app.js初始版

    加载express模块 加载模板 //加载数据库模块 创建app应用,node -> http.createSev...

  • linux高级命令

    lsmod:查看已加载内核模块 modprobe:加载内核模块;   -a --all :载入所有模块   -c ...

  • 九、资源加载服务模块

    结合文件读取,加载,解析模块的内容,可以做一个资源加载服务模块,可以加载配置文件,加载资源,加载场景等。

  • AMD

    AMD, Asynchronous Module Definition,即异步模块加载机制,它采用异步方式加载模块...

  • 关于ngx lua require路径

    在nginx中可以直接设定模块的加载路径 在lua中也可以设定模块的加载路径--这是加载

  • Node 面试题整理

    1:简述require()模块加载机制 答:在node中文件即模块,分为原生模块和3种文件模块。具体加载顺序如下图...

网友评论

      本文标题:Cocos2d-x 加载模块

      本文链接:https://www.haomeiwen.com/subject/qpacpctx.html