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"
  },
  "maps": {
    "user/account:1.0.0/help.css": {
      "css": [
        "/core/reset/1.0.0/reset.css",
        "/user/account/1.0.0/account.css",
        "/user/account/1.0.0/exports/help.css"
      ],
      "loader": "",
      "js": [],
      "onlyCss": true
    },
    "user/account:1.0.0/login": {
      "css": [
        "/core/reset/1.0.0/reset.css",
        "/user/account/1.0.0/account.css",
        "/user/account/1.0.0/css/login.css"
      ],
      "loader": "/lib/loader/1.0.0/loader.js",
      "js": [
        "/user/account/1.0.0/account.js",
        "/user/account/1.0.0/exports/login.js"
      ],
      "onlyCss": false,
      "map": "atmjs.setMap({\"_alias\":{},\"alias\":{\"user/account:1.0.0/other/ajax\":\"/user/account/1.0.0/other/ajax.js\"},\"pkg\":{},\"cssDeps\":{}});"
    },
    "user/account:1.0.0/reg": {
      "css": [
        "/core/reset/1.0.0/reset.css",
        "/user/account/1.0.0/account.css",
        "/user/account/1.0.0/css/reg.css"
      ],
      "loader": "/lib/loader/1.0.0/loader.js",
      "js": [
        "/user/account/1.0.0/account.js",
        "/user/account/1.0.0/exports/reg.js"
      ],
      "onlyCss": false
    }
  }
}

  

登陆页入口脚本id:user/account:1.0.0/login

那么登陆页的依赖信息就要从maps[‘user/account:1.0.0/login‘]去获取,暂且用deps表示

1. deps.css字段

表示的是登陆页需要的全部的css文件,每个css文件的实际访问地址为 settings字段里面的domain连接上数组里面的每个css的uri

<link type="text/css" rel="stylesheet" href="http://cn-style.gcimg.net/static/core/reset/1.0.0/reset.css" />
<link type="text/css" rel="stylesheet" href="http://cn-style.gcimg.net/static/user/account/1.0.0/account.css" />
<link type="text/css" rel="stylesheet" href="http://cn-style.gcimg.net/static/user/account/1.0.0/css/login.css" />

2. deps.loader字段

因为atm只支持模块化开发,因此需要先加载模块解析器文件,deps.loader字段存放的就是模块解析器文件的uri

因此在加载其他模块化js脚本之前应最先加载改脚步,地址规则同样是 settings字段里面的domain连接上模块解析器的uri

<script id="atmjsnode" data-base="http://cn-style.gcimg.net/static" type="text/javascript" src="http://cn-style.gcimg.net/static/lib/loader/1.0.0/loader.js"></script>

注意上面的id是固定值,data-base的值要替换成settings里面的domain字段的值

3. deps.map字段

因为牵扯到异步的id与路径的一些映射等,所以需要该字段,不过后台语言对该字段的处理比较简单,直接用一个script标签包起来放到 模块解析器脚本后面即可

<script type="text/javascript">atmjs.setMap({"_alias":{},"alias":{"user/account:1.0.0/other/ajax":"/user/account/1.0.0/other/ajax.js"},"pkg":{},"cssDeps":{}});</script>

4. deps.js字段

登陆页需要的除模块解析器之外的所有js文件,每个js文件的实际访问呢地址为settings字段里面的domain连接上数组里面的每个js的uri

<script type="text/javascript" src="http://cn-style.gcimg.net/static/user/account/1.0.0/account.js"></script>
<script type="text/javascript" src="http://cn-style.gcimg.net/static/user/account/1.0.0/exports/login.js"></script>

5. deps.onlyCss

像上面json文件里面的 user/account:1.0.0/help.css (一个简单的帮助页面),只需要一个css,不需要js,所以用css文件作为了入口文件

也就是说,如果入口文件是css文件,则该字段的值为true

如果入口文件是js文件,则该字段为false

如果该字段值为true,则上面的deps.loader,deps.map,deps.js都不能输出。

6.如果入口文件为js,需要在最后渲染入口文件的调用,如果入口文件为css文件(即 deps.onlyCss为true)则不需要输出下面这段代码

<script type="text/javascript">atmjs.use(‘user/account:1.0.0/login‘)</script>

综上:最终的产出代码为:

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>登陆页</title>
    <link type="text/css" rel="stylesheet" href="http://cn-style.gcimg.net/static/core/reset/1.0.0/reset.css" />
    <link type="text/css" rel="stylesheet" href="http://cn-style.gcimg.net/static/user/account/1.0.0/account.css" />
    <link type="text/css" rel="stylesheet" href="http://cn-style.gcimg.net/static/user/account/1.0.0/css/login.css" />
</head>
<body>

<!--登陆页相关html代码-->

<script id="atmjsnode" data-base="http://cn-style.gcimg.net/static" type="text/javascript" src="http://cn-style.gcimg.net/static/lib/loader/1.0.0/loader.js"></script>

<script type="text/javascript">atmjs.setMap({"_alias":{},"alias":{"user/account:1.0.0/other/ajax":"/user/account/1.0.0/other/ajax.js"},"pkg":{},"cssDeps":{}});</script>

<script type="text/javascript" src="http://cn-style.gcimg.net/static/user/account/1.0.0/account.js"></script>
<script type="text/javascript" src="http://cn-style.gcimg.net/static/user/account/1.0.0/exports/login.js"></script>

<script type="text/javascript">atmjs.use(‘user/account:1.0.0/login‘)</script>
</body>
</html>
时间: 2024-08-07 01:14:31

3.1 atm与后台语言协同工作方案的相关文章

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

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.需

magento后台语言

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

论velocity在不同后台语言下的不同

第一家公司使用asp.net开发的,本人从事前端工作.当时用velocity写模板程序记得也没配置啥,我就记得写了rewrite,html页面里头直接写的velocity. 现在公司用的java开发的.直接在html文档里写#parse不生效,问了后台人员说要用velocity的话把页面都转成.vm的,然后给跳转写个action. 原来不同语言用velocity的方式还不太一样. 这篇博文记录一下,好以后翻出来看能想到.本人记性不太好.

【转】ecshop后台语言项执行漏洞详解

该漏洞需要能登录ecshop后台权限,简单修改下语言项目,即可在网站植入木马后门. 以下是详细分析 1.登陆到ecshop台后,选择模板管理,语言项编辑,搜索用户信息 为什么要搜索用户 该漏洞需要能登录ecshop后台权限,简单修改下语言项目,即可在网站植入木马后门. 以下是详细分析 1.登陆到ecshop台后,选择模板管理,语言项编辑,搜索“用户信息” 为什么要搜索“用户信息”,还可以搜索其它的吗? 答案是搜索languages\zh_cn\user.php文件里任何一个变量都可以 2.添加如

django后台语言中文

在setting添加django.middleware.local.localeMiddleware,并且一定要添加在django.contrib.session.middleware.sessionmideleware下面

ajax中form表单中含有文件上传功能,后台语言是java,包括图片的下载,预览,删除

//样式 <li> <label>已有文档:</label> <div id="fileEdit"></div> </li> <li> <label>附件:</label> <input name="file" type="file" multiple="multiple" style="display: