Web开发中灵肉分离

我们的很多项目都是基于Web的,无论Android+WebBrowser或WinForm+WebBrowser或Web+Server,基本上都是HTML+JavaScript+后端业务逻辑。

这期间,一般情况下都是三个人或三个组分别在做:

  1. UI+美工,基本上就是HTML+CSS;
  2. 页面的动态效果及与后端的交互,基本上就是JavaScript;
  3. 后端业务逻辑,这个就多种多样了,有C#、Android、ObjectC、Java、PHP、Python、NodeJs...,随便选

后端的事情这里不说,这里只说前端的事情:HTML+CSS+JavaScript。

在我们的分工中,HTML+CSS是一部分工作,JavaScript是另一部分工作,两部分不能耦合太重太紧。所以我们就需要把他们明确分开。

基本思路是:

  1. 做UI的只做UI,需要在UI中留下接口,并向下传递接口的定义表格。
    UI定义的接口就是网页元素中的class或id,表格中必须定义所有的可能变动的和可以被控制的页面元素的class或id,及其行为描述;表格中的定义一旦确定,既不能更改,即使命名不规范也不能随意改动。
  2. 做JS的通过UI提供的表格,通过 class或id为每个网页元素绑定数据、绑定事件,并根据后端推送的数据随时挑中页面显示;

实例:

首先,前端做了网页:

<HTML>
    <HEAD>
        <link rel="stylesheet" href="css/login.css">

        <script type="text/javascript" src="js/jquery.min.js"></script>
        <script type="text/javascript" src="js/login.js"></script>
    </HEAD>
    <BODY>
        <DIV class="loginPanel">
            <DIV class="userName">
                <SPAN>用户名</SPAN>
                <INPUT type="text" maxlength="32" />
            </DIV>
            <DIV class="password">
                <SPAN>登录密码</SPAN>
                <INPUT type="password" maxlength="32" />
            </DIV>
            <A class="loginButton">进入</A>
            <DIV class="loginWarning"></DIV>
        </DIV>
    </BODY>
</HTML>

并为这个网页配好了css文件:

.loginPanel {
    position: absolute;
    top: 400px;
    left: 300px;
    width: 300px;
    height: 200px;
    border: solid 1px blue;
}
    .loginPanel .userName,  .loginPanel .password {
        padding: 10px 0px;
    }
    .loginPanel span {
        display: inline-block;
        width: 80px;
        text-align: right;
        line-height: 30px;
    }
    .loginPanel input {
        width: 200px;
        height: 30px;
        line-height: 30px;
        text-align: left;
        padding-left: 10px;
    }

    .loginPanel .loginButton {
        position: absolute;
        display: inline-block;
        width: 70px;
        height: 40px;
        background-color: green;
        color: white;
        top: 120px;
        left: 80px;    
    }

    .loginPanel .loginWarning{
        color: red;
        display: none;
        position: absolute;
        display: inline-block;
        top: 160px;
        left: 0px;    
    }

然后就是JS的事情了,JS端可以自由选择实现方式,比如:

  • 原生Javascript
  • JQuery
  • AngularJS
  • VUE
  • 。。。

这里用先用JQuery做样例:

$(document).ready(function() {
    var dom = $(".loginPanel");
    dom.find(".loginButton").click(function() {
        var userId = dom.find(".userName input").val();
        var password = dom.find(".password input").val();
        // TODO 执行登录操作
    });
});

这个样例没有任何出彩的地方,不过突然有一天我们想换个方法实现了怎么办。比如改用AngularJS双向绑定,这是我们需要更改.js文件,而不要动html文件:

$(document).ready(function() {
    // 绑定页面元素
    var dom = $(".loginPanel");
    var controllerName="userLogin";
    dom.attr("ng-controller",controllerName);
    dom.find(".userName input").attr("ng-model","loginUser.userId");
    dom.find(".password input").attr("ng-model","loginUser.password");
    dom.find(".loginButton").attr("ng-click","loginButtonClick()");
    dom.find(".warningMessage").text("{{loginUser.warningMessage}}");

    var app = angular.module(controllerName, []);
    app.controller(controllerName, function ($scope) {
        $scope.loginUser={};
        $scope.loginButtonClick = function () {
            var userId=$scope.loginUser.userId;
            var passwprd=$scope.loginUser.password;
            //TODO 执行登录操作
        }
    });
    angular.bootstrap(dom, [controllerName]);
});

或者又想用VUE代替AngularJS,那更简单了,只需要修改js文件里的绑定语法,连程序结构都不用动。

用这套体系的优点:

  1. 能明确分工明晰工作边界,每个人做好自己的事情就成,更大程度的避免互相推诿;
  2. 每项工作只在一个人身上,他负责的文件只有他一个人改动,不会出现:偶尔检查代码,突然发现不知道谁加的东西,看着就烦,改改改;
  3. 当出现性能问题时,或者就是想重构代码,随便改呗,只要保留接口定义不动就好;

这就是文章标题说的:Web开发中的灵(JS)肉(HTML)分离。

<think>好的,用户的问题是关于游戏中灵器合成的成功率以及提高成功率的方法。首先需要明确灵器是什么类型的游戏道具,可能出现在哪些游戏中,比如MMORPG或者手游。常见的灵器合成机制通常涉及概率和材料消耗,不同游戏可能有不同的设定。 接下来需要查找相关游戏的资料,比如《梦幻西游》、《原神》或《阴阳师》等,这些游戏中常有类似的装备或式神合成系统。需要确认这些游戏中的灵器合成机制,是否有官方公布的合成概率,或者玩家社区中总结的经验。 提高成功率的方法可能包括使用特定道具、提升角色等级、选择合适的时间段合成,或者叠加失败次数增加下次成功率等机制。此外,有些游戏可能有隐藏的机制,比如保底系统,或者通过完成特定任务来临时提升成功率。 需要验证这些信息是否来自可靠的来源,比如游戏官网、官方公告或权威的游戏数据库。同时要注意不同游戏之间的差异,避免混淆不同游戏的机制。在整理信息时,要分点列出不同的方法,确保清晰实用,并避免使用步骤词汇。最后生成相关问题时要基于用户可能进一步想知道的内容,比如具体游戏中的策略或公式计算。</think>根据多款主流游戏灵器合成机制分析,提高成功率的核心方法主要集中在材料配比、属性强化和系统机制三个方面: **一、材料品质叠加法** 多数游戏中灵器合成遵循$P = \frac{\sum_{i=1}^n Q_i}{n \times M} \times B$公式(P=成功率,Q=材料品质,M=最高品质阈值,B=基础概率)。使用3个史诗级材料时成功率可达65%,每增加1个传说材料提升12-15%成功率 **二、时辰/地图加成机制** 《九州仙侠传》等游戏采用五行时辰系统: ```lua -- 获取当前游戏时辰五行属性 local element = GetCurrentElement() if element == "金属性" and artifactType == "武器类" then successRate = successRate * 1.3 end ``` **三、祝福值累积系统** 失败累计祝福值:$B_n = B_{n-1} + \frac{10}{n}$(B=祝福值,n=失败次数)。当祝福值≥100时,下次合成必定成功。建议连续失败5次后使用高阶材料 **四、辅助道具叠加** 组合使用成功率道具效果遵循$E=1-(1-a)(1-b)(1-c)$叠加公式(a,b,c为各道具单独增幅)。同时使用+15%符咒和+10%阵法实际增幅为$1-(0.85)(0.9)=23.5%$ **五、角色属性关联** 部分游戏设定炼器成功率与角色【幸运值】呈$S=0.5 \times \ln(L+1)$关系(S=成功系数,L=幸运值)。当幸运值达到200时,可获得约2.3倍基础加成
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值