iOS加载本地H5

大家都知道拖动文件到Xcode中的时候有两个选择

两种引入方式造成路劲的问题,需要不一样的加载方式

1.以Create groups方式引入本地H5文件

Create groups方式添加了一个文件,以黄色文件夹的形式存在的,当你想要使用文件夹中的某个类的头文件时,你可以直接添加它的引用,因为groups下的cpp文件是会被编译的。

如果你加载本地h5选择Create groups的格式导入H5文件,会存在一个大坑,你会发现你加载了html文件,但是对应的css和js加载不出来。原因是groups方式编译完后,所有文件都是存在bundle目录下,没有层级关系了,直接引用就可以。然后html中代码往往是这样的:

html代码中还是用绝对路径去读取文件,所以导致读取不到js和css文件了!必须改成这样:

注意:html中用到的图片也必须改成直接引用。

这种加载方式我不推荐,因为需要去改html中的代码路径,这样前端人员还得维护两套代码,h5自己加载一般都是用绝对路径!


2.以Create folder references方式引入本地H5文件

选择了 Create folder references方式添加进来的文件的文件夹是蓝色的,只是将文件单纯的创建了引用,这些文件不会被编译,所以在使用的时候需要加入其路径,例如文件夹file下的demo类,其他类要引用的话就需要#import file/demo.h,否则编译器就会告诉你找不到demo.h文件。

这样加载本地H5就不会有路径问题了,而且可以直接添加参数。

我自己公司的需求是做到html方面的界面实现热更新,我的思路进入页面就判断沙盒中是否有html的一个文件夹,没有的话加载拖进去的html然后把整个html的文件全部复制到沙盒中,有的话就加载沙盒中的html文件:

判断沙盒中是否有html
将html复制到沙盒中

然后html文件中的代码有改动,直接从服务端请求,然后通过NSFileManager对沙盒中的文件内容进行替换就可以实现html热更新了!

附上一个知识点:

iOS加载部分Html代码特殊符号需要用反斜杠\转义,例如双引号,百分号等!看情况使用。    

以上是我自己测试过可以用的,可能存在一些其他的问题,希望遇到的朋友一起讨论完善!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容