【个人小结】项目公共js的配置,解决不同页面多个配置修改的问题

之前写了两个公司项目里面用到的公共插件,说是插件其实也不算标准。问题描述如下:公司项目分三个平台测试,地址分别为 :http://a.server1.com,  http://a.server2.com,  http://a.server3.com .其中server1,server2,server3分别为三台服务器,而每台服务器有对应的插件地址: http://chajian.server1.com,  http://chajian.server2.com,  http://chajian.server3.com .之所以插件这么用,是因为插件和部分业务结合,每个平台的数据不一样,所以配置也不一样,需要对应相应得地址。而项目发布走三个流程,即现发布到server1,然后发布到server2,最后上线到server3.而其中的问题就是,发布的页面中会有这种代码。

<script src="http://chajian.server1.com/xxx/xxx.js"></script>

那么,如果把网站发布到server2项目中,就需要改 页面中的插件js引用配置。将 server1 改为server2.但是如果页面多的话,就得改多个,还有可能忘记,导致程序在不同平台上由于错误的引用插件地址报错。发布麻烦,繁琐。基于这个问题,我想了一个js解决方法。(不知道问题你们看明白了没有,当然有更好的解决方案,只不过本菜鸟暂时未想到。。)

下面介绍解决方法:

解决思路,动态引用js,用一个配置解决N个配置的修改问题。代码如下:

var prelessonconfig = {
    domain: "http://chajian.server1.com",
    // domain:"http://chajian.server2.com",
    // domain:"http://chajian.server3.com",
    initSharejs: function () {//分享
        prelessonconfig.initjs(prelessonconfig.domain + "/Scripts/XYYShareResource/xueyiyun.sharesource.js", "prelessonjs_share");
    },
    initVCNjs: function () {
        //册章节
        prelessonconfig.initjs(prelessonconfig.domain + "/Scripts/XYYVcn/xueyiyun.vcnselect.more.js", "prelessonjs_vcn");
    },
    initTKjs: function () {
        //题库
        prelessonconfig.initjs(prelessonconfig.domain + "/Scripts/XYYVcn/xueyiyun.tikuselect.more.js", "prelessonjs_tk");
    },
    initjs: function (url, id) {
    //动态加载js
        var ds = document.createElement(‘script‘);
        ds.type = ‘text/javascript‘;
        ds.src = url;
        ds.id = id;
        ds.async = false;
        ds.charset = ‘utf-8‘;
        (document.getElementsByTagName(‘head‘)[0] || document.getElementsByTagName(‘body‘)[0]).appendChild(ds);
    },
    initShare: function (callback) {
        prelessonconfig.initLoadFunction(callback, "prelessonjs_share");
    },
    initVCN: function (callback) {
        prelessonconfig.initLoadFunction(callback, "prelessonjs_vcn");
    },
    initTK: function (callback) {
        prelessonconfig.initLoadFunction(callback, "prelessonjs_tk");
    },
    initLoadFunction: function (callback, id) {
        var prelessontimer = null;
        prelessontimer = setInterval(function () {
        //如果js已经加载完毕,那么执行callback方法。(应该有别的方法可以处理,我这里自己根据Interval判断)
            if ($(‘#‘ + id).length == 1) {
                callback();
                clearInterval(prelessontimer);
            }
        }, 100);
    }
};

那么下边的不必多说,只要更改domain然后页面引用 这个config.js就可以解决动态加载不同服务器的js问题了,同样用callback和setinterval方法解决了js未加载完,但是里面方法已经执行而导致的错误(unfined)的问题。

总结:这只是本菜鸟的解决思路,当然我相信还有更好的方法,比如seajs的模块化加载。如果有更好的欢迎各位批评指正。代码去重是一个艰巨的任务。ps这段js还有不少重复代码。。 完

时间: 2024-10-12 05:59:34

【个人小结】项目公共js的配置,解决不同页面多个配置修改的问题的相关文章

SpringMVC配置了拦截器(interceptors)却显示不出css、js样式的解决办法

首先因为在web.xml里面配置了 <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 导致所有的连接都会经过DispatcherServlet,会过滤掉css.js等样式,导致页面无法渲染成功 因此需要在springmvc配置文件中放行静态资源 <!

JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置

公司项目中遇到并要解决的问题 1:原则上除了自己写的代码之外,公共的jar不应该都在打包的时候打包到ear里面,这样的话包太大,也不符合的分层的逻辑,在jboss容器内部,每个ear的包重复jar都会调入jboss内部,而造成浪费过多地的服务器资源,会出现不定期的异常. 2:jboss eap 6.*系列,需要模块化配置,需要加载的jar,解决如何在jboss里面配置 3:公共的jar在jboss里面已经配置,加载--但是源码运行的时候不能根据maven的配置,加载jar的路径的问题 第一步:配

Node.js【4】简介、安装和配置、快速入门

笔记来自<Node.js开发指南>BYVoid编著 第1章 Node.js简介 Node.js是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为脚本语言世界的一等公民,在服务端堪与PHP.Python.Perl.Ruby平起平坐. Node.js可以作为服务器向用户提供服务,与PHP.Python.RubyonRails相比,它跳过了Apache.Nginx等HTTP服务器,直接面向前端开发. Node.js还可以调用C/C++的代码,这样可以充分利用已有的诸多函

Qt新建项目No valid kits found解决思路

Qt新建项目No valid kits found解决思路 第一次用Qt Creator创建Project时,进入Kit Selection窗口后,会提示No Valid kits found. Please add a kit in the options or via the maintenance tool of the SDK.错误. 解决思路如下: 需要设置Qt SDK,Device type等的路径给Qt Creator.假设已装Qt SDK,安装方法在(这里).解决方法:点击蓝色o

利用servlet做转发,实现js跨域解决同源问题

做前端开发,避免不了跨域这个问题,跨域具体什么概念,不赘述,博客里太多.简单说下,我们用js发请求,不管post还是get,如果发请求的对象和当前web页面不在同一域名下,浏览器的同源策略会限制发请求,也就是说,如果单独写个HTML,用js发远程请求,是发布出去的,浏览器会认为这是不安全的,js在这里能做的很有限. 网上看了很多文章,小弟愚钝,只用js一直没解决这个问题,jQuery的Ajax据说可以,但是测试后发现不行,也许是浏览器版本的原因.有种方法是jsonp,但是好像需要服务器支持,我对

项目记录:spring+springmvc 项目中 @Transactional 失效的解决方法

第一步,修改spring的配置文件和springmvc的配置文件 --------------------------------applicationContext.xml <context:annotation-config/>  <context:component-scan base-package="com.xxx"> <context:exclude-filter type="annotation" expression=&

Hibernate项目里配置环境时,jar包配置不当会对测试结果产生影响。

问题情况: 如下图所示,该图中,显示了一堆错误的jar包.这是导致了Junit4测试通过了,数据库却没反应的原因. 原因: 之所以出现这种情况,eclipse其实已经告诉了我们原因.如下图所示,这些jar包的入口消失了.换句话说就是项目无法使用这些jar包. 解决方法:把这些JAR包全部删掉,因为项目里已经有了所有的jar包.上面这些纯属多余,而且由于它们的存在,导致真正有用的JAR包不能本使用. 结果:新的数据录入了数据库. http://www.bycoder.cn/t/hibernate/

maven建spring mvc 项目访问不到uri 解决:

用maven 测试一下spring+springmvc+hibernate时,springmvc按以前本地jar建的web项目测试来配置,可怎么也访问不了uri,新建了几个项目,一直找不到,或报错! 搞了大半天,终于解决了!主要是mvc的配置如下: 其他配置照旧! <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche

Web项目去掉Js文件红叉

项目用到jquery,但将Jquery拷进去后,js文件有个红叉,看上去非常不爽.如下图: 解决方法: 1.找到项目下的.project文件 2.去掉Javascript验证 1 <?xml version="1.0" encoding="UTF-8"?> 2 <projectDescription> 3 <name>Struts2_Jquery_Json</name> 4 <comment></co