资源本地化,实现混合开发App
App开发有三种模式:网站打包App,混合开发,原生App。随着手机速度提高现在混合开发与原生App几乎无差别。
网站打包App与混合开发速度主要差别在每次资源全部重新加载,缩小两种之间的加载速度。
本站提供了两种混合开发方式:轻混合,混合开发。
一、轻混合开发
什么轻混合:常用资源本地化,如影响加载速度的是JS/模板图片/CSS等。网页打开时不用重复请求并加载。
1.1、配置文件(replace.txt)
配置文件一定要在最外层目录下。
文件内容
{
“A”:“B”
}
A:网页内资源目录,不用填写网址,直接写目录。如网页内图片地址为http://www.baidu.com/img/in.png 写 /img/in.png。前面一定增加上'/'
B:压缩包内的文件路径
通配符:“.*”
例:
{
"/img/ua.png":"img/ua.png",
"/css/style.css":"css/style.css",
"/index.js":"index.js",
"/app.*.js":"app.js",
}
App配置不用对应修改。
注:写的规则有多条相同的,执行最后一个。
1.2、文件存放
文件存放目录不限层级。
注:文件名与目录名不要用中文。
二、混合开发
资源全部本地化,实现混合开发。
2.1、配置文件(replace.txt)
文件内容
{
“A”:“B”
}
例:
{
"http://www.baidu.com":"index.html",
"http://www.sina.com":"test.html",
}
A:填写要更换的网址,
B:填写本地资源的页面
注:写的规则有多条相同的,执行最后一个。
没有菜单栏配置如下:
填写的网址与与配置文件对应,打开后自动打开index.html。
有原生菜单栏配置如下:
菜单1对应index.html,菜单2对应test.html
2.2、文件存放
文件存放目录不限层级。
注:文件名与目录名不要用中文。
三、离线文件上传
进入【基础设置】--【本地资源上传】上传zip包。
四、IOS版本post提交问题
4.1、form
页面内form提交不用修改。
4.2、jquery
在需要POST提交的页面,在jquery加载后的位置加入以下代码:
var delay=1000;//发送请求的延时时间,可按需求修改
$.post1 = $.post;
$.post = function(a,b,c,d,e){
var ua = navigator.userAgent;
if(ua.indexOf('bsl') >=0 ){
if(typeof(BSL.UNReplacementResource) == 'function')BSL.UNReplacementResource();
}
setTimeout(function(){$.post1(a,b,c,d,e);},delay);
if(ua.indexOf('bsl') >=0 ){
if(typeof(BSL.ReplacementResource) == 'function')setTimeout(function(){BSL.ReplacementResource();},delay+200);
}
}
4.3、Axios
在需要POST提交的页面,在Axios.js引入后的位置加入以下代码:
axios.interceptors.request.use(function (config) {
var ua = navigator.userAgent;
if(ua.indexOf('bsl') >=0 ){
if(typeof(BSL.UNReplacementResource) == 'function')BSL.UNReplacementResource();
alert('已关闭');
}
return config;
}, function (error) {
return Promise.reject(error);
});
axios.interceptors.response.use(function (response) {
var ua = navigator.userAgent;
if(ua.indexOf('bsl') >=0 ){
alert('已开启');
if(typeof(BSL.ReplacementResource) == 'function')BSL.ReplacementResource();
}
return response;
}, function (error) {
return Promise.reject(error);
});