3.2 atm与后台语言协同工作方案 -- 调试模式

json文件

// ~/blog/user/account/1.0.0 文件夹产出的地图文件, 1.0.0/exports下的入口文件的依赖都生成到了maps里面
{  "settings": {    "port": 1234,    "debugParam": "debugId",    "domain": "http://cn-style.gcimg.net/static"  },  "maps": {    "user/account:1.0.0/help.css": {      "css": [        "/core/reset/1.0.0/reset_e5b6e95.css",        "/user/account/1.0.0/account_2e2d290.css",        "/user/account/1.0.0/exports/help_5751a04.css"      ],      "loader": "",      "js": [],      "onlyCss": true    },    "user/account:1.0.0/login": {      "css": [        "/core/reset/1.0.0/reset_e5b6e95.css",        "/user/account/1.0.0/account_2e2d290.css",        "/user/account/1.0.0/css/login_9fa75f4.css"      ],      "loader": "/lib/loader/1.0.0/loader_aa23401.js",      "js": [        "/user/account/1.0.0/account_8c2acc1.js",        "/user/account/1.0.0/exports/login_1074d04.js"      ],      "onlyCss": false,      "map": "atmjs.setMap({\"_alias\":{},\"alias\":{\"user/account:1.0.0/other/ajax\":\"/user/account/1.0.0/other/ajax_49ac7f5.js\"},\"pkg\":{},\"cssDeps\":{}});"    },    "user/account:1.0.0/reg": {      "css": [        "/core/reset/1.0.0/reset_e5b6e95.css",        "/user/account/1.0.0/account_2e2d290.css",        "/user/account/1.0.0/css/reg_a005dbe.css"      ],      "loader": "/lib/loader/1.0.0/loader_aa23401.js",      "js": [        "/user/account/1.0.0/account_8c2acc1.js",        "/user/account/1.0.0/exports/reg_0d22604.js"      ],      "onlyCss": false    }  }}

1.当登陆页上线之后,我想利用线上的页面(假设访问地址为:http://url/login.html)调用本地的js/css资源去调试,如何实现

json文件中的settings字段中的debugParam的值为debugId,因此,我们可以通过访问

http://url/login.html?debugId 或

http://url/login.html?debugId=true

去调用127.0.0.1的资源,因为线上程序无法获取到本地的地图文件,因此这里比较纠结,最终的解决方案是这样的:

本地的node环境提供了一个调用js和一个css的接口,相应的资源会合并到一个文件里面

因此,如果是调试模式

css应该是这样的,而不用去考虑deps.css的内容

<link rel="stylesheet" type="text/css" href="http://127.0.0.1:1234/debug?id=user/account:1.0.0/login&type=css&domain=http://127.0.0.1:1234/dev&timestamp=1437033687" />

同样的,js最终应该是

<script type="text/javascript" id="atmjsnode" data-base="http://127.0.0.1:1234/dev" src="http://127.0.0.1:1234/debug?id=user/account:1.0.0/login&type=js&timestamp=1437033687"></script>
<script type="text/javascript">atmjs.use(‘user/account:1.0.0/login‘)</script>

参数中的id为入口文件id,时间戳是为了防止缓存,type表示文件是js还是css类型

2.现在调试模式全部调用的是127.0.0.1上的资源,那么问题来了,如果去调试一个移动站点,用手机肯定是调试不了调试模式

因此我们要想法把127.0.0.1去替换成一个手机可以访问的ip,比如 192.168.1.100

因此,我们用

http://url/login.html?debugId=192.168.1.100

去调试

然后对应的css和js调用,要变成下面这样子

<link rel="stylesheet" type="text/css" href="http://192.168.1.100:1234/debug?id=user/account:1.0.0/login&type=css&domain=http://192.168.1.100:1234/dev&timestamp=1437034561" />

<script type="text/javascript" id="atmjsnode" data-base="http://192.168.1.100:1234/dev" src="http://192.168.1.100:1234/debug?id=user/account:1.0.0/login&type=js&timestamp=1437034561"></script>
<script type="text/javascript">atmjs.use(‘user/account:1.0.0/login‘)</script>

  

因此参数中的 domain和script标签中的data-base的值的值是这样得来的

$port = 1234;   //settings.port$debugId = ‘debugId‘;  //settings.debugParam
$debugId = $_REQUEST[$debugId];
if($debugId==‘true‘ || empty($debugId)){
    $debugId = $this->debugId = ‘127.0.0.1‘;
}else{
    $debugId = $this->debugId = $debugId;
}
$domain = ‘http://‘.$debugId.‘:‘.$port.‘/dev‘;

src和href的调试地址前缀是这样得来的

$port = 1234;   //settings.port
$debugId = $_REQUEST[‘debugId‘];
if($debugId==‘true‘ || empty($debugId)){
    $debugId = $this->debugId = ‘127.0.0.1‘;
}else{
    $debugId = $this->debugId = $debugId;
}
$prefix = ‘http://‘.$debugId.‘:‘.$port.‘/debug‘;

同样的,如果入口文件是css文件,SCRIPT标签不能输出

时间: 2024-08-22 00:44:58

3.2 atm与后台语言协同工作方案 -- 调试模式的相关文章

3.1 atm与后台语言协同工作方案

先以登陆页来分析 // ~/blog/user/account/1.0.0 文件夹产出的地图文件, 1.0.0/exports下的入口文件的依赖都生成到了maps里面 { "settings": { "port": 1234, "debugParam": "debugId", "domain": "http://cn-style.gcimg.net/static" }, "ma

3.3 atm与后台语言协同工作方案 php类及使用示例

<?php class atmjs{ private $path = '/path/to/maps/remote'; //这里必须修改 private $id = ''; private $scripts = ''; private $debugId = ''; private $status = false; private $domain = ''; private $isDebug = false; private $port = 1234; private $debugPath = ''

atitit.js&#160;javascript&#160;调用c#&#160;java&#160;php后台语言api&#160;html5交互的原理与总结p97

atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参数个数2 1.3. 事件监听2 1.4. 异常转换2 2. dwrC.exec3 2.1. 支持 ajax 与browExt模式  支持反射,直接继承调用后台api3 2.2. sendNSCommand (nativeswing的实现)3 2.3. --------nativeswing的实现3

Day5作业,商城+ATM机+后台管理

晚来了....东西太多,需要写的blog内容太多,re讲的渣渣,不明白为什么oldboy经常换老师,吐槽下吧,真心不爱了.... github地址在这:https://github.com/ccorzorz/ATM-shoppmall 商城用原来的,先上图吧: 商城图: ATM后台管理: ATM终端: README: 1.测试帐号: 商城测试帐号:cc/123 或者自己注册 ATM 终端测试帐号:cc/123 alex/123 或者自己注册 ATM 管理员测试帐号:admin/admin 2.需

在myeclipse中使用Java语言进行spark Standalone模式应用程序开发

一.环境配置 Myeclipse中虽然已经集成了maven插件,但是由于这个插件版本较低,建立maven project会出现错误. 解决办法:自己到官网http://maven.apache.org/下载最新版本的maven插件,解压,在环境变量中注册. 新建环境变量M2_HOME 在PATH里加入maven的bin的路径 配置完毕后,在Windows命令提示符下,输入mvn -v测试一下,配置成功显示如图: 配置成功后,还需要在Myeclipse中用新的maven插件将就得替换掉,如图: 二

【原】各种语言疑难BUG调试记录

之前遇到棘手的BUG总是在处理过后就不管了,导致后面碰到后重复工作太多.现专门开辟一篇日志以记录接下来一路上的DEBUG记录. [C++] 1.mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file 说明:由于VC需要把生成的文件中嵌入MANIFEST文件,而由于杀毒软件之类的会握有这个文件句柄(因为杀毒软件发现这个EXE,DLL正在读写),于是VC就写不进去了,方

用java语言实现事件委托模式

http://blog.csdn.net/yanshujun/article/details/6494447 用java语言实现事件委托模式 2010-04-27 00:04 2206人阅读 评论(11) 收藏 举报 java语言游戏object设计模式date 事件委托模式是一个比较常用的设计模式,但是Java语言本身没有对其做一定的封装,因此实现起来有一定难度(了解原理后很简单),相比之下.NET就容易了很多. 身为一个Java爱好者,怎么向这样一个小困难低头,但是上网搜索,却没发现相关解决

设计模式(Java语言)- 工厂方法模式

前言 在介绍工厂方法模式之前,我们需要知道这个设计模式是什么,解决了什么样的问题?在上一篇博客 设计模式(Java语言)- 简单工厂模式 介绍了简单工厂模式,然后总结了简单工厂模式的缺点: 1.当新增类型时,我们不得不修改原来的工厂,这样就违背了设计模式6大原则中的 开闭原则. 2.简单工厂模式使用了静态方法来创建对象,因此无法被实现或继承,从而导致改工厂类缺少灵活性,不易拓展. 3.所有的类的创建都需要这个工厂类,因此系统已工厂类是强依赖的关系,一旦工厂类出现错误,将对整个系统产生比较大的影响

magento后台语言

Magento后台自身携带了一个语言切换的功能,见后台左下角 你会发现长长的一串,其中绝大多数语言你可能根本没有机会用到,而你想要从中文切换到英文时,每次都要瞪大眼睛去找英文在下拉框的哪个位置,所以精简下还是有必要的. 以我自己的需求为例,我需要使用中文后台,偶尔会切换到英文,因为有些翻译不理想需要看下原文,那我就只保留“中文 (中国)”和“英文 (美国)”.打开根目录下/lib/Zend/Locale/Data/zh.xml文件,在大概640行找到territories标签,可以看到这个标签内