靖边网站制作要多少钱【域名企业邮箱服务器注册申请办理】靖边网络优化公司哪家好、靖边软件开发外包价格、靖边高端企业网站页面制作设计专业公司、靖边微信公众号小程序购物支付搭建制作公司-网站优化-网站建设【企业网站制作|网页设计】- 高端网站建设 - 书生商友信息科技-

全国热线:400-111-6878

网站建设推广专家

靖边网站制作要多少钱【域名企业邮箱服务器注册申请办理】靖边网络优化公司哪家好、靖边软件开发外包价格、靖边高端企业网站页面制作设计专业公司、靖边微信公众号小程序购物支付搭建制作公司

发表日期: 2021-06-02 12:39:30 浏览次数:130

靖边网站制作要多少钱【域名企业邮箱服务器注册申请办理】靖边网络优化公司哪家好、靖边软件开发外包价格、靖边高端企业网站页面制作设计专业公司、靖边微信公众号小程序购物支付搭建制作公司


网站建设.jpg


靖边县,隶属于陕西省榆林市, 位于陕西省北部,榆林市西南部,北与内蒙古自治区乌审旗、鄂托克旗相邻;南与延安市子长市、安塞区、志丹县、吴旗县接壤;东西分别与横山区、定边县毗连。介于东经108°17′—109°20′、北纬36°58′—38°03 ′之间,总面积5088平方千米。 [1] 

靖边史称“夏州”、“朔方” [2]  ,靖边籍隋朝大建筑学家宇文恺规划设计和主持修建了大兴城(唐长安城),成为后世城市建设的范例。境内大夏国都统万城遗址是匈奴族在人类历史上遗留下的唯一都城遗址。民国二十四年(1935年),中共靖边县委和中华苏维埃政府成立,是第二次国内革命战争时期唯一没有被颠覆的县级革命政权。革命战争时期,毛泽东、周恩来等老一辈无产阶级革命家转战陕北时,在靖边的小河、天赐湾、青阳岔等地生活战斗了65个日夜,期间召开了著名的“小河会议”,拉开了全国解放战争由战略防御转向战略反攻的序幕。 [2] 

截至2018年,靖边县下辖1个街道、17个镇 [3]  ,常住人口38.2万人,实现地区生产总值(GDP)373.39亿元,其中,第一产业增加值29.61亿元,第二产业增加值249.06亿元,第三产业增加值94.72亿元,三次产业结构比为7.9:66.7:25.4,按常住人口计算,人均GDP达98351元。 [4]  2019中国西部百强县市。 [5] 



概述

js原生插件开发基本雏形:

function(window,document){    var MaskShare = function(){    };    MaskShare.prototype = {};    window.MaskShare = MaskShare;}(window,document));

举例:

点击某个元素,弹出一个遮罩层,点击遮罩层将遮罩层去掉。

因此可以分析出,至少需要一个参数,也就是我们需要知道点击谁弹出弹出层,另外我们还需要配置一些默认参数。

(function(window,document){    var MaskShare = function(targetDom,options){        // 判断是用函数创建的还是用new创建的。这样我们就可以通过MaskShare("dom") 或 new MaskShare("dom")来使用这个插件了        if(!(this instanceof MaskShare))return new MaskShare(targetDom,options);        // 参数合并        this.options = this.extend({            // 这个参数以后可能会更改所以暴露出去            imgSrc:"../static/img/coupon-mask1.png"        },options);        // 判断传进来的是DOM还是字符串        if((typeof targetDom)==="string"){            this.targetDom = document.querySelector(targetDom);        }else{            this.targetDom = targetDom;        }        var boxDom = document.createElement("div");        var imgDom = document.createElement("img");        // 设置默认样式 注意将z-index值设置大一些,防止其他元素层级比遮罩层高        boxDom.style.cssText = "display: none;position: absolute;left: 0;top: 0;width: 100%;height:100%;background-color: rgba(0,0,0,0.8);z-index:9999;";        imgDom.style.cssText = "margin-top:20px;width: 100%;";        // 追加或重设其样式        if(this.options.boxDomStyle){            this.setStyle(boxDom,this.options.boxDomStyle);        }        if(this.options.imgDomStyle){            this.setStyle(imgDom,this.options.imgDomStyle);        }        imgDom.src = this.options.imgSrc;        boxDom.appendChild(imgDom);        this.boxDom = boxDom;        // 初始化        this.init();    };    MaskShare.prototype = {        init:function(){            this.event();        },        extend:function(obj,obj2){            for(var k in obj2){                obj[k] = obj2[k];            }            return obj;        },        setStyle:function(dom,objStyle){            for(var k in objStyle){                dom.style[k] = objStyle[k];            }        },        event:function(){            var _this = this;            this.targetDom.addEventListener("click",function(){                document.body.appendChild(_this.boxDom);                _this.boxDom.style.display = "block";                // 打开遮罩层的回调                _this.options.open&&_this.options.open();            },false);            this.boxDom.addEventListener("click",function(){                this.style.display = "none";                // 关闭遮罩层的回调                _this.options.close&&_this.options.close();            },false);        }    };    // 暴露方法    window.MaskShare = MaskShare;}(window,document));

调用:

MaskShare(".immediately",{    imgSrc:"../static/img/loading_icon.gif",    boxDomStyle:{        opacity:".9"    },    imgDomStyle:{        opacity:".8"    },    open:function(){        console.log("show");    },    close:function(){        console.log("close");    }});

js原生插件开发几种写法:

1.面向对象方式:调用的时候使用new创建对象

var Auto=Auto||{};(function(){    var plugin=function(options){        this.options=this.extend({xxxxx},options);        //暴露一些api        plugin.prototype={            init:function(){            },            extend:function(){            }        }        Auto.Plu=Plugin;})();var p=new Auto.Plu(xxxx);

var Auto;(function(Auto){    var plugin=(function(){        function plugin(options){            this.name='xiaosan';            this.age=11;        };        //暴露一些api        plugin.prototype.show=function(str){            alert(str);        };        plugin.prototype.set=function(name){            this.name=name;            alert(this.name);        }        return plugin;    })();    Auto.Plu=plugin;})(Auto||(Auto={}));var plugin=new Auto.Plu(xxx);plugin.show('111');

var RongIMLib;(function (RongIMLib) {    var UserDataProvider = (function () {        function UserDataProvider(options) {            this.opersistName = 'RongIMLib';            this.keyManager = 'RongUserDataKeyManager';            this._host = "";            this.prefix = "rong";            this.oPersist = document.createElement("div");            this.oPersist.style.display = "none";            this.oPersist.style.behavior = "url('#default#userData')";            document.body.appendChild(this.oPersist);            this.oPersist.load(this.opersistName);        }        UserDataProvider.prototype.setItem = function (key, value) {            key && key.indexOf(this.prefix) == -1 && (key = this.prefix + key);            this.oPersist.setAttribute(key, value);            var keyNames = this.getItem(this.keyManager);            keyNames ? keyNames.indexOf(key) == -1 && (keyNames += ',' + key) : (keyNames = key);            this.oPersist.setAttribute(this.prefix + this.keyManager, keyNames);            this.oPersist.save(this.opersistName);        };        UserDataProvider.prototype.getItem = function (key) {            key && key.indexOf(this.prefix) == -1 && (key = this.prefix + key);            return key ? this.oPersist.getAttribute(key) : key;        };        UserDataProvider.prototype.removeItem = function (key) {            key && key.indexOf(this.prefix) == -1 && (key = this.prefix + key);            this.oPersist.removeAttribute(key);            this.oPersist.save(this.opersistName);            var keyNames = this.getItem(this.keyManager), keyNameArray = keyNames && keyNames.split(',') || [];            for (var i = 0, len = keyNameArray.length; i < len; i++) {                if (keyNameArray[i] == key) {                    keyNameArray.splice(i, 1);                }            }            this.oPersist.setAttribute(this.prefix + this.keyManager, keyNameArray.join(','));            this.oPersist.save(this.opersistName);        };        UserDataProvider.prototype.getItemKey = function (composedStr) {            var item = null, keyNames = this.getItem(this.keyManager), keyNameArray = keyNames && keyNames.split(',') || [], me = this;            if (keyNameArray.length) {                for (var i = 0, len = keyNameArray.length; i < len; i++) {                    if (keyNameArray[i] && keyNameArray[i].indexOf(composedStr) > -1) {                        item = keyNameArray[i];                        break;                    }                }            }            return item;        };        UserDataProvider.prototype.clearItem = function () {            var keyNames = this.getItem(this.keyManager), keyNameArray = [], me = this;            keyNames && (keyNameArray = keyNames.split(','));            if (keyNameArray.length) {                for (var i = 0, len = keyNameArray.length; i < len; i++) {                    keyNameArray[i] && me.removeItem(keyNameArray[i]);                }                me.removeItem(me.keyManager);            }        };        UserDataProvider.prototype.onOutOfQuota = function () {            return 10  1024  1024;        };        return UserDataProvider;    }());    RongIMLib.UserDataProvider = UserDataProvider;})(RongIMLib || (RongIMLib = {}));var provider = new RongIMLib.UserDataProvider(optionsxxx);

2.闭包方式:调用是不用使用new

var Auto=Auto||{};(function(){    var plugin=(function(){        var _options={            default_word:'ddd'        };        function _firstFunc(str){            alert(str);        };        function _secondFunc(str){            alert(str);        };        return {//暴露的一些api            firstFunc:_firstFunc,            secondFunc:_secondFunc        };    })();    Auto.Plu=plugin;})();Auto.Plu.firstFunc('xx');

变种:

var Auto=Auto||{};(function(){    var _options={        default_word:'ddd'    };    function test(){        alert(11)    };    //暴露一些api    var _plugin={        firstFunc:function(str=_options.default_word){            alert(str);            return this;        },        secondFunc:function(){            alert('second');            return this;        }    }    Auto.Plu=_plugin;})();Auto.Plu.firstFunc('11').secondFunc();



靖边网站制作要多少钱域名企业邮箱服务器注册申请办理靖边网络优化公司哪家好、靖边软件开发外包价格、靖边高端企业网站页面制作设计专业公司、靖边微信公众号小程序购物支付搭建制作公司

上一条:靖边网络公司哪家好【靖边企业网站百度SEO推广公司】靖边做网站开发价格、靖边淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、靖边高端企业网站页面制作设计专业公司需要多少钱
下一条:靖边400电话申请开通【靖边企业网站建设】靖边微信公众号小程序开发运营价格、靖边微信公众号APP软件客户端设计运营、靖边网页页面设计公司费用、靖边公司网站制作方案流程改版维护大概需要多少钱
网站制作
小程序制作
网站优化
网站开发
400电话办理
网络推广
网站建设
网店装修
微信公众号开发
网页设计
网络公司
域名企业邮箱
服务器空间
网站案例报价
百科问答
编辑排版美工
App软件开发
百度推广
代运营托管
logo设计
网络全网营销
网站备案
网站定制
小程序开发公司
首页
电话
立即预约